0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# Embedding matrix

这篇文章是我的笔记分享,内容主要来自吴恩达老师的深度学习课程。^[AI中国官网-全球领先的线上AI教育、实践平台 (deeplearningai.net)]

Embedding matrix

前面我们讲了word embedding。这一节我们说一下embedding matrix。

在学习的过程中,其实是将one hot的那一堆向量转换成了一个embedding的矩阵。

也就是说你最终得到的应该是一个embedding的矩阵,而不是说每一个词汇的向量。

还是接续我们前面的例子,假设你的词典长度是1万。现在你做word embedding选择300个特征。

那你最后得到的应该是一个300×10000维度的矩阵。

$$
\begin{array}{c|cccccc}
& \begin{array}{c}
\text { Man } \
(5391)
\end{array}
&\begin{array}{c}
\text { Woman } \
(9853)
\end{array} \

\hline \text { Gender } & -1 & 1 \
\text { Royal } & 0.01 & 0.02 \
\text { Age } & 0.03 & 0.02 \
\text { Food } & 0.04 & 0.01\
\text { ... } & ... & ...
\end{array}
$$
image.png

我们称这个矩阵为word embedding的大矩阵$E$。

从Embedding matrix中获取单词的e向量

方法一

还记得我们的one-hot向量吗。向量的长度为单词表的长度。向量中该单词在字母表中的位置为1,其余的数字都为0。

所以想要获取。某一个单词的word embedding,我们只需要将one-hot的向量乘以我们的word embedding的矩阵即可。

$$
[E]{300\times10000} \times [o{5391}]{10000 \times 1} = [e{5391}]_{300 \times 1}
$$

这样我们就可以取到对应位置上的那个单词的e向量。

上面公式学过线性代数的应该不难理解。

我们来举个简单的例子。

$$
\begin{bmatrix}
1 &0 &0 \
0 &1 &0 \
0 &0 &1
\end{bmatrix}
\times
\begin{bmatrix}
1 \
0 \
0
\end{bmatrix}

\begin{bmatrix}
1 \
0 \
0
\end{bmatrix}
$$

方法二

上面那个理论上讲方法是通的,但是实际应用中并不那么用。实际应用中一般是使用一个函数来直接在word word embedding中进行查找,找到对应位置的向量即可。

实际操作中你绝对不会使用一个10000长度的word embedding,因为确实有点短。所以说你接触到的应该是一个非常大的矩阵。如果一个大矩阵在乘以一个超级长的one-hot的向量进行相乘的话,它的计算开销是非常大的。

举报

相关推荐

0 条评论