曾无好事来相访,赖尔高文一起予。这篇文章主要讲述#yyds干货盘点#Embedding matrix相关的知识,希望能为你提供帮助。
这篇文章是我的笔记分享,内容主要来自吴恩达老师的深度学习课程。^[AI中国官网-全球领先的线上AI教育、实践平台 (deeplearningai.net)]
Embedding matrix前面我们讲了word embedding。这一节我们说一下embedding matrix。
在学习的过程中,其实是将one hot的那一堆向量转换成了一个embedding的矩阵。
也就是说你最终得到的应该是一个embedding的矩阵,而不是说每一个词汇的向量。
还是接续我们前面的例子,假设你的词典长度是1万。现在你做word embedding选择300个特征。
那你最后得到的应该是一个300×10000维度的矩阵。
$$
\\beginarrayc|cccccc
&
\\beginarrayc
\\textMan\\
(5391)
\\endarray
&
\\beginarrayc
\\textWoman\\
(9853)
\\endarray \\
\\hline \\textGender&
-1 &
1 \\
\\textRoyal&
0.01 &
0.02 \\
\\textAge&
0.03 &
0.02\\
\\textFood&
0.04 &
0.01\\
\\text...&
... &
...
\\endarray
$$
文章图片
我们称这个矩阵为word embedding的大矩阵$E$。
从Embedding matrix中获取单词的e向量 方法一【#yyds干货盘点#Embedding matrix】还记得我们的one-hot向量吗。向量的长度为单词表的长度。向量中该单词在字母表中的位置为1,其余的数字都为0。
所以想要获取。某一个单词的word embedding,我们只需要将one-hot的向量乘以我们的word embedding的矩阵即可。
$$
[E]300\\times10000 \\times [o5391]10000 \\times 1 = [e5391]_300 \\times 1
$$
这样我们就可以取到对应位置上的那个单词的e向量。
上面公式学过线性代数的应该不难理解。
我们来举个简单的例子。
$$
\\beginbmatrix
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\\endbmatrix
\\times
\\beginbmatrix
1\\
0 \\
0
\\endbmatrix\\beginbmatrix
1\\
0 \\
0
\\endbmatrix
$$
方法二上面那个理论上讲方法是通的,但是实际应用中并不那么用。实际应用中一般是使用一个函数来直接在word word embedding中进行查找,找到对应位置的向量即可。
实际操作中你绝对不会使用一个10000长度的word embedding,因为确实有点短。所以说你接触到的应该是一个非常大的矩阵。如果一个大矩阵在乘以一个超级长的one-hot的向量进行相乘的话,它的计算开销是非常大的。
推荐阅读
- Linux之iostat命令
- mysql的备份与恢复+实验
- Apache构建web主机
- SpringBoot | 4.1 SpringMVC的自动配置 #yyds干货盘点#
- 赵渝强使用二进制包部署Kubernetes集群
- #yyds干货盘点#基于CC2530设计的智能风扇
- #yyds干货盘点#three.js源码解读-EventDispatcher
- #yyds干货盘点#Web Components系列 ——自定义组件的生命周期
- #yyds干货盘点#swagger定位问题?式