最后更新于
最后更新于
嵌入(Embedding)技术是将每个离散变量表示成连续向量的方法. 对于词嵌入(Word Embedding)而言, 就是将每个单词由一个数值连续的向量表示, 转换后的词向量继续输入到下游模型中进行其他的计算.
这里只以词嵌入进行说明, 其余情况下的嵌入方法可以类比.
One Hot
One Hot方法是一种简单直观的向量化方法. 对于由个词组成的词典, 使用One Hot方法, 会将每个词转换成一个长度为的向量, 按照单词在词典中对应的索引, 每个单词向量只有在其对应的索引处值为1, 向量中其他位置的值全部为0.
但这种方法的缺点显而易见:
向量长度与词典大小成线性关系, 单词数量爆炸时, 向量长度过长, 且极度稀疏. 造成计算资源和内存资源的巨大浪费
每个词之间是相互孤立的, 相互之间完全正交. 语意相似词汇和相反词汇之间的关系完全一样. 在向量空间中近似的单词不能处在空间中相似的位置
学习嵌入
嵌入(Embedding)方法, 就是通过学习获取一个指定长度的相对低维的向量. 具体来说:
通过构建一个监督任务, 使用神经网络来学习每个单词对应的向量, 即学习一个嵌入矩阵(Embedding Matrix). 这样得到的嵌入向量是每个词的表征, 其中的相似词在嵌入空间中的距离会更近, 即此时空间中点之间的距离就有了意义.
而我们构建的这个监督任务(常常是一种分类任务), 其目的不是为了最终的预测结果, 而是为了获取嵌入权重, 这个模型预测本身仅仅是为了实现这个目的的一种形式. 找到如何创建监督式任务以得出相关表征的方法是嵌入设计中关键的部分.
有了嵌入向量, 通常有下面几个用途:
作为机器学习模型的输入学习监督任务
通过嵌入空间中的距离, 做比较(如定量这两相似性)和查找(如找到最相似)等工作
可视化
嵌入向量在空间中的位置是具有一定意义的, 从词语的类比推理中可以看出.
即左右两个差向量是相似的, 即语义上的相似性在空间中也是相似的. 那么在实际中, 就可以通过一些相似度函数(如余弦相似度函数)来做一些比较和查找的工作.
学习嵌入权值的方法一般是通过构建一个语言模型来学习. 这种语言模型是向量形式的, 面向语义的. 即两个语义相似的词对应的词向量也是相似的, 具体反映在向量的夹角或点的距离上.
常见的方法有:
word2vec: 其本身是语言模型学习得到的中间结果, 有以下两种形式:
CBOW
Skip-gram
模型为了降低复杂度又采用了Hierarchical Softmax和Negative Sampling两种方法. Skip-gram with negative sampling(SGNS)是一种最为常用的学习嵌入的方法.
PPMI & SVD: 无需通过构建语义任务训练得到.
Ngram: 对于以上三种方法, 使用语义模型中常用的词袋模型.
对于词语之间的映射关系, 而对于我们知道是queen
. 而且这四个词语的嵌入向量上符合一种有趣的关系:
相关论文: .
对于罕见词表现差的问题, 提出了优化方法: .
: 一种简便的学习词嵌入的方法