基于连贯性任务的句子向量表示
- 这篇文章想找出一种高效的句子的向量表示
- 使用了文章连贯性的任务来训练
- 对比了两种句子向量表示
- Recurrent Sentence Representation: 就是正常的循环神经网络,使用最后一个隐含层的状态
-
ht=f(Vrecurrentht−1+Wrecurrentewt+brecurrent),RNN的表达式
- Recursive Sentence Representation: 递归句子表示,先将句子解析成语法树,那么根节点的向量表示作为句子的向量(根节点向量=f(左节点, 右节点))
- hp=f(Wrecursive[hleft,hright]+brecursive)
Coherence Model(连贯性模型)

- 句子集合(一个window,可以理解为卷积的window)C, 标签yc如果连贯为1,不连贯0
- 将句子向量拼接起来:hC=[hs1,hs2,...,hsL],其中L表示集合C当中的句子个数
- 输入到隐含层:qC=tanh(WsenhC+bsen)
- 最后预测是否连贯:p(yC=1)=sigmod(UqC+b)
- 损失函数,就是分类交叉熵损失:J(θ)=M1C∈trainset∑{−yClog[p(yC=1)]−(1−yC)log[1−p(yC=1)]}+2MQ∑θ2
文档的连贯性评分
-
Sd: 文档的连贯性评分,d 代表一个文档,d={s1,s2,...,sNd},Nd: 表示d文档有多少个句子
- 如果window size为3,那么一个文档可以生成系列的cliques: <sstart,s1,s2>,<s1,s2,s3>,...,<sNd−1,sNd,send>
- 文档连贯性评分:Sd=C∈d∏p(yC=1)
一些结论
- 语法解树生成的句子向量要比RNN生成的句子向量要好
一些想法
- 这里做的是句子的连贯性评分,词的特征是体现字句子向量当中,不能评判句子是否好坏
- 损失函数也是评价的句子之间的连贯性
- 直观上来讲如果句子差,连贯性也应该是比较差的
- 考虑一个问题,单独只做连贯性评分是否有意义呢?有什么办法可以欺骗连贯性评分呢?
相关文章: