词义
WordNet:词义字典
缺点:(1)分辨不了词义之间的细微差别,如同义词。
(2)有些新词语没有被加入。
(3)主观性比较强。
(4)需要人工创建和调整。
(5)很难计算准确的词汇相似度。
除现代深度学习,几乎所有的NLP研究,都使用原子符号表示词汇。
独热码(one-hot code):直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。
独热词汇向量是一种存储在某处的本地表示。
[0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]
缺点:没有给出任何词汇之间的内在关系概念,难以计算词汇相似性。
分布相似性(Distributional Similarity):通过单词上下文知道单词含义。
分布式表示(Distributed representation):用密集型向量表示词汇的含义。
分布式表示通常是由分布式相似性来构建的。
Word2Vec
核心:构建一个可扩展的、快速的训练模型,可处理数十亿单词的文本,并生成很好的单词表示。
思想:利用语言的意义理论,来预测每个单词和它上下文的词汇。。
skip-gram
在每一个估算步都取一个词作为中心词汇,,然后尝试去预测它一定范围内的上下文的词汇,定义一个概念模型,即给定一个中心词汇,某个单词在它上下文中出现的概率。对一个词汇,有且仅有一个概念分布。
目标函数/损失函数/代价函数(objective/loss/cost function):
J′(θ)=t=1∏T−m⩽j⩽m,j̸=0∏P(wt+j∣wt,θ)
要最大化这个预测概率函数。
模型的负对数函数(正式的目标函数)–最小化:
J(θ)=−T1t=1∑T−m⩽j⩽m,j̸=0∑logP(wt+j∣wt)
Details:
P(wt+j∣wt):
softmax形式=>概率
P(o∣c)=∑w=1Vexp(uwTvc)exp(uoTvc)
o:输出词汇索引
c:中心词汇索引
vc:中心词汇向量
uo:输出词汇向量
点积:uTv=u⋅v=∑i=1nuivi
u和v越相似,点积越大。
每个单词都有两个向量。

学习参数
将所有参数放入一个向量θ,对每个单词,都有一个d维向量。
计算过程:∂vc∂log∑w=1Vexp(uwTvc)exp(uoTvc)
=∂vc∂(logexp(uoTvc)−logw=1∑Vexp(uwTvc))——(Main)
Sub(1):logexp(uoTvc)
Sub(2):log∑w=1Vexp(uwTvc)
计算:(1):∂vc∂logexp(uoTvc)=∂vc∂uoTvc=uo
(2)(链式法则):∂vc∂logw=1∑Vexp(uwTvc)=∑w=1Vexp(uwTvc)1⋅∂vc∂x=1∑Vexp(uxTvc)
=∑w=1Vexp(uwTvc)1⋅x=1∑V∂vc∂exp(uxTvc)
=∑w=1Vexp(uwVvc)1⋅x=1∑Vexp(uxTvc)⋅ux
=x=1∑V∑w=1Vexp(uwTvc)exp(uxTvc)⋅ux
=x=1∑VP(x∣c)⋅ux
因此:Main=uo−x=1∑VP(x∣c)⋅ux
uo:实际输出的上下文词汇
∑x=1VP(x∣c):期望
ux:期望向量(所有可能的上下文向量的平均)
再利用梯度下降使uo=∑x=1VP(x∣c)⋅ux。
拓展:Softmax
实际上是有限项离散概率分布的梯度对数归一化,是LR在多分类上的推广:
P(y=i∣x;θ)=∑j=1KeθiTxeθiTx
损失函数:
l(θ)=−m1[i=1∑mj=1∑K1{y(i)=j}log∑j=1KeθiTxeθiTx]
m个样本,K个类别。
1{y(i)=j}表示当y(i)样本类别等于j时,取1.