吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(1)使用one-hot方法表示词汇有两个主要的缺点,以10000个词为例,每个单词需要用10000维来表示,而且只有一个数是零,其他维度都是1,造成表示非常冗余,存储量大;第二每个单词表示的向量相乘都为零(正交),导致没能够表示是词汇之间的联系,比如oriange和apple,queen和king应该是联系比价紧密的,但是用上面的词典表示无法体现出这一点。

(2)使用新的特征表示法,如下图所示,特征比如有性别、高贵、年龄、颜色、尺寸、食物等等作为特征,那么一个词汇符合一个特征将会取较大的值,完全没什么关系取接近于0,加入设置了300个特征,那么每个单词就可以用300维的向量表示(解决了表示太冗余),而且相似的词(比如apple和oriange)在不同特征可能都非常类似的值(即相似性高),从而使得词汇之间有了联系。

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(3)在上面提到那些特征,在实际中是通过网络来学习得到的,具体表示什么特征是没人知道的。

2.2使用词嵌入

(1)如何用词嵌入做迁移学习的步骤:

1.先从大量的文本机中学习词嵌入(词嵌入其实就是用一些特征来表示一个词汇,而不是通过one-hot表示),当然也可以直接使用别人训练好的词嵌入。

2.然后根据你新任务的数据量来决定是否还要调整这些词嵌入,如果数据量很少的话,直接使用之前的词嵌入。数据多的话可以进行微调。

(3)词嵌入和之前讲过的人脸编码非常的类似,有一点区别就是:词嵌入,是有固定的词汇表的,而在人脸编码中可能会有一个完全没有见过的人脸,然后需要对他进行编码。

2.3词嵌入的特性

(1)提出问题:man如果对应woman,那么King应该对应什么?方法是man的向量减去woman向量的值应该(约等于)等于King向量减去某个词汇的向量,式子如下所示:

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

移项之后即找到等式两边的相似度:

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(2)使用余弦相似度(其实就是夹角的余弦值),值接近1是表明越相似:

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

2.4嵌入矩阵

(1)如果词汇量是10000,每个词汇由300个特征表示,那么嵌入矩阵就是一个300*10000的矩阵,嵌入矩阵与某个词汇的one-hot表示的向量相乘会会的该词汇的嵌入表示(即300维来表示),如下图所示:

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(2)上面的相乘由于one-hot只有特定的值是1,所以其实相乘的本质是取出该词汇在嵌入矩阵的位置的那一列,所以实际中不会进行这么复杂的矩阵乘法运算,而是用一些方法直接取出那一列即可,如Keras中有一个嵌入层,我们用这个嵌入层可以有效的从嵌入矩阵中提出出你需要的列,而不是对矩阵进行很慢很复杂的乘法运算。

2.5学习词嵌入

(1)案例是:预测“I want a glass of oriange___”划线处的单词是什么?可以用one-hot的I然后输入到一个嵌入层,嵌入层会做的操作将嵌入矩阵与one-hot向量相乘得到该词汇的嵌入向量,然后再输入到后面的网络进行输出,所以通过训练这整个网络,也就可以学习了嵌入矩阵。

吴恩达《深度学习》第五门课(2)自然语言处理与词嵌入

(2)后面有全连接层,所以输入的维度需要固定,这时有一个上下文的概念(context),比如用目标预测位置的前4个单词(这时嵌入层输出总共4*300=1200个输入输入到下一层网络中),或者目标位置前后各4个词汇,实践证明,在以训练嵌入矩阵时,只使用目标位置的前一个词汇作为上下文也是效果非常不错的。

2.6Word2Vec

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfdxg.html