[NLP论文阅读]Siamese CBOW: OptimizingWord Embeddings for Sentence Representations
双层卷积词嵌入模型(Siamese CBOW)旨在通过优化词嵌入来生成句子表示。该研究工作通过提出了一种新的优化框架,在实验中展现出显著的性能提升效果。论文链接:[http://xueshu.baidu.com/s?wd=paperuri:(5648c0d0d0a12d4bb769ec38789f83da)&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http://arxiv.org/abs/1606.04640&ie=utf-8&sc_us=11779350631775863970)]
引言
最近读了一篇关于Siamese LSTM(双层 LSTM)用于生成句子表示的论文[1]
主要内容
作者在文中指出,在当前生成句子表示的技术手段中已有许多采用现有词向量计算平均值的方式存在。基于此观察,在模型训练过程中我们可以引入平均值这一概念作为基础构建一个独特的句向量表示方法。
数据
多伦多书库:该语料库规模宏大,包含74,004,228个经预处理后的句子段落(实验数据显示每个句子的平均词频超过5,并且总共有315,643个高频率token),其来源涵盖了超过7千本不同的书籍著作。这些句子通常连贯成完整的章节或小节,在个别情况下可能出现章节之间的小幅断层(这种情况对于实验结果影响微乎其微)。
模型

模型会初始化一个词向量矩阵W,随着训练的进行会对W进行更新。
输入层:
按照单词级别对文本进行处理。
在语录库里选取每一个特定的文本块s_i时,默认将其前后相邻的文本块s_{i-1}和s_{i+1}作为正例样本,并结合使用负采样策略生成n个负样本实例。所有这些样本都带有相应的分类标记。其中集合S^+代表所有正样本实例构成的集合体;而集合S^-则代表所有负样本实例构成的集合体。

映射层:
模型通过该途径将句子映射成对应的句子向量。
即使用平均方法对前k个词的词向量进行加和处理后得到相应的句向量,并将其表示为 average_i(中心句),同时得出了 average_{i-1}、average_{i+1} 以及从 average_{neg\ 1} 到 average_{neg\ n} 的相关结果。
cosine layer:
直接计算向量之间的cos相似度作为两句句子的相似度
其中输出层(即final output layer)通过将上一层计算出的相似度输入到 softmax 函数中进行归一化处理后得到预测值。
损失函数

损失函数采用了交叉熵。
整个实验过程中就对词向量矩阵W进行更新。
实验结果


总结
作者公开了他的源代码,并声明其使用的数据库在获取时需要签署协议以确保合法访问权限;在获取了这两项资源之后, 我试图按照论文描述的方式重新实现他的实验框架, 然而受限于实验环境的限制, 我无法使用GPU进行加速运算;到了第三天后, 我实在忍不住开始寻求与论文作者联系, 并附上了我的初步结果请求他给予指导
Back in the day, achieving that result was time-consuming, requiring one month using a K40 GPU for obtaining a satisfactory model, with longer durations preferred.
于是我默默的Ctrl + c,关闭了电脑。
长叹一声,欢迎讨论~
2017年6月22日夜。
