aboutDL

词嵌入(word embedding)简记

2019-01-29  本文已影响25人  madeirak

句子的常用表示方法有:独热编码( One-Hot )和词嵌入。

独热编码存在的问题有:1、词矩阵稀疏,每个向量只有一个值为1,其余均为0。

                                        2、任意两个向量均正交,无法表示之间关系。

                                        3、当数据很多时,词向量维度会很大。

以上缺点均通过词嵌入可以得到解决。

1、词嵌入矩阵的每一列是(字典中)不同的词,每一行是每个词的不同特征

2、矩阵的值的绝对值越接近1,表示该列的词具备越显著的行所表示的特征,反之接近0则表示该列的词不具备行所表示的特征。

3、行特征一般不可具体描述

嵌入矩阵的每一列被称为对应词的嵌入向量(特征向量

嵌入矩阵x某个词的独热向量=该词嵌入向量,实际应用中该乘法效率低下,因为独热向量维度巨大,Keras中用嵌入层(Embedding layer)来单独查找矩阵的某列,即提取字典中某个词的嵌入向量 

词嵌入可以用来类比推理,即找出具有相似特征的词或具有相似关系的词组(例如Man:Woman-King:Queen、bigger:big-taller:tall,等)


常用的相似度函数——余弦相似度(cosine similarity)

余弦相似度计算

\cdot  其中二范数即||u||_{2} ||v||_{2} 是把向量中的所有元素求平方和再开平方根。  

\cdot   得到的结果其实是两个向量的夹角的cos值,两向量越接近则值越大


学习词嵌入,及通过学习得到词嵌入矩阵E的方法之一是建立语言模型。

下图是通过语言模型学习使其能预测句尾的juice。单词下的数字表示该词在字典中的索引(如want索引为9665),O_{x} 是该词独热向量、E是嵌入矩阵、e_{x} 是该词嵌入向量。将得到的6个嵌入向量(300x1)堆叠后得到1800x1的向量作为输入向量通入神经网络后经过softmax在所有的字典中的词中选择一个作为预测,通过反向传播、梯度下降来学习嵌入矩阵。实际应用中存在超参数历史窗口 (historical window)来控制目标词前面的“上下文”的单词数量。(比如历史窗口为4时,嵌入向量堆叠后的输入维度为1200x1)

在这种算法的激励下训练集中的orange juice 和apple juice能让orange和apple学习到相似的嵌入向量,从而让预测值更好地符合训练集。

研究者发现如果只是学习词嵌入而不是真正的构建语言模型,在选择目标词的“上下文 ”时,可以选择左右的n个词、之前的一个词、附近的一个词等。

神经网络语言模型
上一篇下一篇

猜你喜欢

热点阅读