今天我要讲的论文主要参考了一篇2011年的ACL会议论文《Learning Word Vectors for Sentiment Analysis》,这篇文章的作者有Andrew Y. Ng,因此整个文章的质量还是有保证的。我刚看到这篇论文的时候,就感到有点奇怪,因为目前业界用的最广泛的word2vec算法是2013年才提出来的,而这篇paper发表的时间是2011年,当仔细读了这篇paper之后,就会发现这篇文章用到的方法是贝叶斯流派和神经神经网络派的一个折中方法。(因为这篇paper的提出是参考了LDA模型的一些思想的)
LDA模型假设一篇文档可以按照一定的分布对应一系列的topic k (潜在topic的数量是一个需要提前设置的超参数),一个topic可以按照一定的分布对应整个语料库中所有的词语,明显看出这个理论是基于贝叶斯流派的。然而如作者所说LDA所强调的是对topic和词语之间的关系进行建模,不是直接对word词义进行建模,因此这种体系下生成的word所对应的topic向量其实并不是特别有助于对词语含义进行表达的。这篇paper为了解决LDA在语言建模方面的一些缺憾,提出了不再单独对每一个topic进行建模,不再单独考虑一篇文档中的一个词语究竟是从哪一个单独的topic生成的,而是直接认为一篇文档中的词语是基于mix topic信息生成的,这个mix topic信息使用
θ
θ
进行表征。那么对于文档d的语言模型形式如下所示:
p(d)=∫p(d,θ)dθ=∫p(θ)∏Ni=1p(wi|θ)dθ
p
(
d
)
=
∫
p
(
d
,
θ
)
d
θ
=
∫
p
(
θ
)
∏
i
=
1
N
p
(
w
i
|
θ
)
d
θ
(1)
在对
p(wi|θ)
p
(
w
i
|
θ
)
进行建模的时候,使用不是统计的方法,而是类似神经网络模型的方法,假设词典R的维度为
R∈Rβ∗|V|
R
∈
R
β
∗
|
V
|
,其中
β
β
代表了词向量的维度,V代表了词典的大小,
θ
θ
代表了某一主题的向量形式,那么
p(wi|θ)=exp(θTsw)∑)w‘∈vexp(θTsw‘)
p
(
w
i
|
θ
)
=
e
x
p
(
θ
T
s
w
)
∑
)
w
‘
∈
v
e
x
p
(
θ
T
s
w
‘
)
,其中V代表了词典中的所有词语。然后我们把
p(wi|θ)=exp(θTsw)∑)w‘∈vexp(θTsw‘)
p
(
w
i
|
θ
)
=
e
x
p
(
θ
T
s
w
)
∑
)
w
‘
∈
v
e
x
p
(
θ
T
s
w
‘
)
代入(1)式,接下来的目标就是最大化这个式子,从而进行参数的估计。
使用MAP方法对\theta进行估计,我们可以把原始优化式子转换成如下的形式:
maxR=∏dk∈Dp(θk)∏Nki=1p(wi|R)
m
a
x
R
=
∏
d
k
∈
D
p
(
θ
k
)
∏
i
=
1
N
k
p
(
w
i
|
R
)
,为了增加模型的泛化能力我们这里加入正则项,公式如下所示:
v||R||2F+∑dk∈D(λ||θk||22+∑Nki=1logp(wi|θk))
v
|
|
R
|
|
F
2
+
∑
d
k
∈
D
(
λ
|
|
θ
k
|
|
2
2
+
∑
i
=
1
N
k
l
o
g
p
(
w
i
|
θ
k
)
)
其实上式只是对一般语言模型进行建模,并没有在语言模型中引入情感信息,既然要在生成的词向量中引入情感信息,那么肯定要在训练的时候使用label数据。这里他使用了一个简单的前提假设,一个被标记为正向的文档中所有的词语都是正向的(虽然听起来不太靠谱,但是细想,如果文档数量大了以后,这貌似也是成立的)。然后使用了最简单的Logistic regression方法来对一个词语的情感信息进行预测,Logistic regression模型参数随着整体模型一起进行训练, p(s=1|wi)=σ(wi.φw) p ( s = 1 | w i ) = σ ( w i . φ w ) ,然后模型的整体目标就是简单的情感分类log损失函数 maxR∑|D|k=1∑Nki=1logp(sk|wi) m a x R ∑ k = 1 | D | ∑ i = 1 N k l o g p ( s k | w i ) 。
那么最终整体的损失函数就是两者相加即为:
其实从现在来看这个思想是非常简单的,总结这篇paper的原因也是这篇paper是贝叶斯流派和神经网络流派的一个比较好的中间结合体,更有助于我加深对语言模型的理解和认识。