word embedding
词嵌入
基本思想
词嵌入是一种无监督学习
,机器通过阅读大量的文章来学习单词的意思,通过上下文来理解一个单词,例如,特朗普宣誓就职,拜登宣誓就职这两个句子,后面都是宣誓就职,说明特朗普和拜登这两个词是非常相似的,它们的向量在高维空间也应该是相似的。
从one-hot到word embedding
词表示最直觉的做法就是1-of-N Encoding,向量维度和词表大小一样,每个词在其中某一维为1,其它维为0,这种表示无法体现出词之间的关系
word calss 方法是将意思相似或同属性的词归位一类,但是这种划分也没有体现出类与类的关系,划分粗糙,需要很多人工设计
Word embedding也是一种降维操作,通过无监督的方法从文本中学出来,最终学到的结果,可以在向量空间的距离上体现出词之间的关系。
挖掘上下文信息
Count-based method和Prediction-based method
Count-based方法认为如果两个单词一起出现的频率很高,那么这两个词就是很相关,二者的内积就越接近这两个单词在同一篇文章中出现的次数
Prediction-based的任务是,给出一个句子的单词
w
i
−
2
w_{i-2}
wi−2,
w
i
−
1
w_{i-1}
wi−1,预测下一个出现的word
w
i
w_i
wi是什么?
要训练出一个neural network,它的输入是句子中某个单词
w
i
−
1
w_{i-1}
wi−1的的one-hot向量,然后输出后一个词在所有词上的概率,网络训练好之后,把第一个隐藏向量取出来就可以作为word embedding
那么这种方法是怎么体现出相似性?
为了能够让两个不同的词预测出同样的下文,那么这两个词的向量就要相近甚至相同
但是用一个词去预测下一个词,这种预测能力太弱了,所以会用更多的词,但这会使模型参数的数量急剧上升------->引出共享参数的方法
共享参数
为了提高预测准确度,可以多看几个词,怎么让参数一样呢,首先初始值设置一样
其次在参数更新的时候,同时减去双方的偏微分
训练
假设看两个word之后,就预测下一个word,把每一次的cross entropy都加起来,优化目标是使总共的交叉熵最小
prediction-based不同结构的模型
一种结构叫做Continuous bag of word(CBOW
)model,就是给定前后文单词,预测出中间空缺的词
;另一种叫做skip-gram
,就是给出一个词,预测该词前后文是什么