[paper阅读] 使用复合构成及n-gram特征的句子嵌入非监督式学习-2

模型

模型的雏形是简单的矩阵因子模型(线性模型), 这些模型近期非常成功运用于词语嵌入的非监督式学习[1, 2, 3]以及句子分类中的监督式学习[4]. 更具体地说, 这些模型可以被形式化为一个优化问题, 具体的形式如下:

$\min_{U,V} \sum_{S\in C} f_S(UV_{l_S})$ 公式1

这里面有两个参数矩阵: $U\in R^{k\times h}$ 以及 $V \in R^{h\times |\mathcal{V}|}$ , 其中 $\mathcal{V}$ 表示词典. 在这里, 矩阵 $V$ 的每一列表示学习到的源单词的向量, 而 $U$ 中的则表示目标单词向量. 对于一个给定的句子 $S$ , 它可以是任意长度的, 而示例向量 $l_S\in {0, 1} ^ {|\mathcal{V}|}$ 是一个二进制向量, 用来对句子 $S$ 进行编码 (词袋编码).

固定长度的上下文窗口 $S$ 在语料库中运行 经常被使用到词语嵌入方法中, 例如 C-BOW [5, 6]以及 GloVe, 设置 $k=|\mathcal{V}|$ , 然后每一个损失函数 $f_S: \mathbb{R}^k \to \mathbb{R}$ 只会依赖于输入的单行数据, 在给定的固定长度上下文 $S$ 中描述观察到的目标词语. 而在本文中, 重点是获得句子的嵌入, $S$ 将会是整个句子或者文档(因此, 长度是可变的). 这个属性与监督式的FastText分类方法是相同的, 但是该分类方法使用的是 soft-max 并且 $k\ll |\mathcal{V}|$ 为分类标签的数目.

提出的非监督模型

在本文中, Matteo等人提出了一个新的非监督模型: Sent2Vec, 用于学习通用的句子嵌入. 概念上说来, 该模型可以看作是 将C-BOW方法中的词语上下文自然扩展到一个更大的橘子上下文, 而句子中的词语通过使用非监督的目标函数, 在句子之上做了一些额外组合的特殊优化.

形式化说来, 针对词典中的每个单词 $w$, 需要学习一个源(或者上下文)嵌入 $v_w$ 以及目标嵌入 $u_w$ , 其中, 如公式一所示, 嵌入的维度为 $h$ 和 $k=|\mathcal{V}|$ . 句子的嵌入为定义为 其连续单词 的源单词嵌入的均值, 如公式二所示. 为了进一步改进这个模型, Matteo等人不仅仅通过unigrams 的形式学习源嵌入, 还针对每个句子中的 n-grams 也进行了学习, 并且将每个单词和n-gram的嵌入进行了取均值操作, 例如, 句子 $S$ 的句子嵌入 $v_S$ 建模如下:

$v_s := \frac{1}{|R(S)|}V_{l_{R(S)}} = \frac{1}{|R(S)|} \sum_{w\in R(S)} {v_w}$ 公式2

其中, $R(S)$ 为句子 $S$ 中的 n-grams 列表(包括 unigrams). 为了从上下文中预测丢失的单词, 和Mikolov等人提出的方法一样, Matteo等人还通过负采样方法[6]对softmax的输出进行了近似. 对于非常庞大的输出类 $|\mathcal{V}|$ 数目的预测, 负采样是非常有助于提高训练高效性的[7]. 给定二进制逻辑斯蒂损失函数: $\mathcal{l} : x \mapsto \log(1+e^{-x})$ 以及负采样, Sent2Vec的非监督式训练目标函数定义如下:

$\min_{U,V} \sum_{S\in C} \sum_{w_t \in S} (
\mathcal{l}(u_{w_t}^Tv_S \setminus {w_t}) + \sum_{w’\in N_{w_t}}\mathcal{l}(-u_{w’}^T v_S\setminus {w_t}))$

其中 $S$ 为当前的句子, $N_{w_t}$ 为对于单词 $w_t \in S$ 负采样出来的句子集合. 负采样是遵循一个多项正态分布, 其中, 每个单词 $w$ 都有一个概率: $q_n(w) := \sqrt {f_w} / (\sum_{w_i \in \mathcal{V}}\sqrt{f_{w_i}})$, 其中, $f_w$ 为单词 $w$ 在语料中归一化后的频率.

为了选出可能的目标unigrams(正样本), Matteo等人使用了论文中[3,4]的子采样方法, 每个单词 $w$ 有一个 $1-q_p(w)$ 的概率被丢弃, 其中, $q_p(w) := \min {1, \sqrt{t/f_w} + t/f_w}$, $t$ 为子采样的超参. 子采样避免了非常频繁的词语对学习产生太大的影响, 因为它们可能会对预测任务引入极大的偏好信息, 通过使用证子采样和相应的负采样芬苯, 之前的训练目标函数变成了:

$\min_{U,V} \sum_{S\in C} \sum_{w_t \in S} (
q_p(w)\mathcal{l}(u_{w_t}^Tv_S \setminus {w_t}) + |N_{w_t}|\sum_{w’\in \mathcal{V}}q_n(w’)\mathcal{l}(-u_{w’}^T v_S\setminus {w_t}))$ 公式3

计算性能

与基于更加复杂的神经网络的模型相比, Sent2Vec模型的一个核心优势在于其推理和训练过程中的低计算消耗. 给定一个句子 $S$ 和一个训练好的模型, 计算句子的表示 $v_s$ 只需要 $|S|\cdot h$ 浮点操作(或者更精确说来, 对于 n-gram的情况为: $R(S)\cdot h$ ), 其中 $h$ 为嵌入的维度数, 使用SGD对目标函数进行训练, 训练预料中的每个句子也只会花费相同的时间. 由于模型的简洁性, 可以直接使用并行的或者分布式的SGD方法进行同步训练.

此外, 为了提高更高阶的n-grams效率, Matteo等人还使用了标准的哈希技巧, 和论文[8]中的方法类似. 与FastText中[3, 4]使用相同的哈希函数.

C-BOW的比较

C-BOW[1, 5] 的目标是给定固定长度的上下文窗口预测一个目标的单词, 其中, 上下文被定义为 与这个单词在一定距离内小于窗口大小超参 $w_S$ 的向量均值. 在Sent2Vec中, 当限制为unigram特征时, 可以将模型看作是C-BOW的拓展, 而上下文的窗口包含了整个句子. 实际上, 与C-BOW有一些比较突出的不同之处在于: C-BOW使用了一些重要的技巧来辅助单词嵌入的学习. C-BOW首先对句子中的频繁词语进行自采样, 基于概率 $p_q(w)$ 来决定是否丢弃每个单词 $w$ 或者其它类似的方法(在实现细节方面可能会有略微不同). 子采样避免了n-grams特征的生成, 使得句子非常重要的一个部分-句法特征丢失了. 此外, 它还缩短了子采样单词之间的距离, 隐式地增大了上下文窗口的范围. 第二个技巧包括: 使用动态的上下文窗口: 对于每个子采样单词 $w$, 其相关的上下文窗口大小服从 $1$ 和 $w_S$ 之间的均匀分布. 使用动态上下文窗口等价于: 基于与关注的单词 $w$ 之间的距离除以窗口大小作为权重进行加权[9]. 这使得预测任务与创建句子嵌入中的目标背道而驰, 因为模型希望学习到如何在组合一个句子中呈现的所有 n-gram特征. 在实验结果方面, Sent2Vec的效果远优于C-BOW的结果.

模型训练

Matteo等人使用了三个不同的数据集训练模型: [Toronto 书籍语料库](http://www.cs.toronto.edu/ ̃mbweb/), Wikipedia 句子和 tweets. 使用斯坦福的NLP库[10] 对 WikipediaToronto 书籍句子进行分词, 而对于tweets则使用 NLTK tweets 分词器[11]进行分词. 训练过程中, 从数据库中随机选择句子, 然后使用子采样来选择所有可能的目标unigrams. 使用SGD结合一个线性衰减学习率来更新权重.

此外, 为了避免过拟合, 对于每个句子, Sent2Vecn-grams $R(S) \setminus {U(S)} $ 列表上使用了dropout, 其中 $U(S)$ 为句子 $S$ 中包含的所有 unigrams 的集合. 在实验性地尝试了多个 dropout 策略之后, Matteo等人发现: 每个句子丢弃 $K$ 个 n-grams ($n \gt 1$) 的策略, 与使用一些固定概率丢弃每个词语的策略相比, 能得到更佳的结果. 这个dropout机制可能会对更短的句子可能会有负面影响. 归一化可以通过使用 $L1$ 正则对 单词向量 进行归一化. 嵌入向量中的极度稀疏性对于高维度 $h$ 而言是非常有利的. 每个 SGD步骤中额外的软阈值增加了不可避免的计算花费. Matteo等人在每个数据集上偶读训练了两个模型, 一个只是用了unigrams, 而另一个则使用了unigramsbigrams. C++实现主要基于FastText库[3,4]. 作者们已经将代码和预训练模型开源了, 放在github上, 有兴趣可以下载学习~

嗯, 下周继续相关工作和具体的实验结果部分. 尽请期待.

参考文献

[1] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg S Cor- rado, and Jeff Dean. 2013b. Distributed Representations of Words and Phrases and their Compositionality. In NIPS – Advances in Neural Information Pro- cessing Systems 26. pages 3111–3119.
[2] Jeffrey Pennington, Richard Socher, and Christopher D Manning. 2014. Glove: Global vectors for word representation. In EMNLP. volume 14, pages 1532– 1543.
[3] Piotr Bojanowski, Edouard Grave, Armand Joulin, and Tomas Mikolov. 2017. Enriching Word Vectors with Subword Information. Transactions of the Associa- tion for Computational Linguistics 5:135–146.
[4] Armand Joulin, Edouard Grave, Piotr Bojanowski, and Tomas Mikolov. 2017. Bag of Tricks for Efficient Text Classification. In Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics, Short Papers. Valen- cia, Spain, pages 427–431.
[5] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. 2013a. Efficient estimation of word representations in vector space. arXiv:1301.3781 .
[6] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg S Cor- rado, and Jeff Dean. 2013b. Distributed Representations of Words and Phrases and their Compositionality. In NIPS – Advances in Neural Information Processing Systems 26. pages 3111–3119.
[7] Yoav Goldberg and Omer Levy. 2014. word2vec Ex- plained: deriving Mikolov et al.’s negative-sampling word-embedding method.
[8] Kilian Weinberger, Anirban Dasgupta, John Langford, Alex Smola, and Josh Attenberg. 2009. Feature hashing for large scale multitask learning. In Pro- ceedings of the 26th Annual International Confer- ence on Machine Learning. ACM, pages 1113– 1120.
[9] Omer Levy, Yoav Goldberg, and Ido Dagan. 2015. Im- proving distributional similarity with lessons learned from word embeddings. Transactions of the Association for Computational Linguistics 3:211–225.
[10] Christopher D Manning, Mihai Surdeanu, John Bauer, Jenny Rose Finkel, Steven Bethard, and David Mc-Closky. 2014. The stanford corenlp natural language processing toolkit. In ACL (System Demon- strations). pages 55–60.
[11] Steven Bird, Ewan Klein, and Edward Loper. 2009. Natural language processing with Python: analyzing text with the natural language toolkit. ” O’Reilly Media, Inc.”.

打赏

mickey

记录生活,写给几十年后的自己。