嵌入矩阵(Embedding Matrix)

来源:Coursera吴恩达深度学习课程

这篇文章将探讨学习词嵌入的具体化,当我们应用算法来学习词嵌入时,实际上是学习一个嵌入矩阵(embedding matrix)

和之前一样,假设我们的词汇表有10,000个单词,词汇表里有a,aaron,orange,zulu,可能还有一个未知词标记UNK。我们要做的就是学习一个嵌入矩阵E,它将是一个300×10,000的矩阵,如果你的词汇表里有10,000个,或者加上未知词就是10,001维。这个矩阵的各列代表的是词汇表中10,000个不同的单词所代表的不同向量。假设orange的单词编号是6257,代表词汇表中第6257个单词,我们用符号O_6257来表示这个one-hot向量(这个向量除了第6527个位置上是1,其余各处都为0),显然它是一个10,000维的列向量,它只在一个位置上有1,它的高度和左边的嵌入矩阵的宽度(行数)相等。

假设用嵌入矩阵E去乘以O_6257,那么就会得到一个300维的向量,E是300×10,000的,O_6257是10,000×1的,所以它们的积是300×1的,即300维的向量。以此类推,直到你得到这个向量剩下的所有元素。得到的300维向量我们记为e_6257,这个符号是我们用来表示这个300×1的嵌入向量(embedding vector)的符号,它表示的单词是orange。

要记住我们的目标是学习一个嵌入矩阵E。在之后的操作中你将会随机地初始化矩阵E,然后使用梯度下降法来学习这个300×10,000的矩阵中的各个参数,E乘以one-hot向量会得到嵌入向量。但当你动手实现时,用大量的矩阵和向量相乘来计算它,效率是很低下的,因为one-hot向量是一个维度非常高的向量,并且几乎所有元素都是0,所以矩阵向量相乘效率太低。所以在实践中你会使用一个专门的函数(function)来单独查找矩阵E的某列,而不是用通常的矩阵乘法来做,但是在画示意图时(上图所示,即矩阵E乘以one-hot向量示意图),这样写比较方便。

在本篇文章中我们见到了在学习嵌入向量的过程中用来描述这些算法的符号(notations)以及关键术语(key terminology),矩阵E它包含了词汇表中所有单词的嵌入向量。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

猜你喜欢

转载自blog.csdn.net/csdn_xmj/article/details/118669007