相信大家对于 word embedding,word vector 的表达、模型、相关应用等已经不陌生了(可以回复代码:GH018、GH019 查看相关的一些文章),然而从 word 向 phrase, sentence, document 的发展,却还远未达到成熟的地步。今天,小S 来和大家分享一些 sentence vector 研究的进展,困惑,相关任务。主要基于的分享框架是 Macro Baroni 教授9月在 CAS Meaning in Context Symposium 的分享《What's in a Sentence Vector》。
首先,我们最关注的就是,如何求解一个 sentence vector 的表达。过去,我们常见的就是从 word vector 得到 sentence vector,小S 在这里把这种从小 unit 到大一级 unit 的方法,统一称为“composition”(并不准确,只是暂时用来描述方便)。这方面的工作,大家都不陌生,比如有:
PVDM, PVDBOW 这两个 phrase vector 模型
Quoc Le 的《Distributed Representations of Sentences and Documents》大家都不陌生,是第一个几乎完全把 word2vec idea apply 到 document/phrase embedding 上的工作。
DAN,deep averaging network 模型
来自 Mohit Iyyer, Varun Manjunatha, Jordan Boyd-Graber, Hal Daumé III《Deep Unordered Composition Rivals Syntactic Methods for Text Classification》,ACL 2015.
于是乎作者就搞了这么个 simple but useful 的架构。每个 sentence input 的时候,都是按词为单位,并且 input unit 是每个词的 word embedding。然后直接 average——作者表示,在以前的工作中大部分人认为 average 比 sum 效果好。这是简单的 neural bag of words——NBOW。然后再变 deep——反正 deep FFNN 的思想就是我每 deep 一层,就更 abstract 嘛。然后实验证明,这样的 deep averaging (DAN)真的几乎和 ReNN 无差别噢,训练速度和 单层 NBOW 几乎无差别呢。虽然任务很简单,是 text classification。但是实验后面的分析很不错。有兴趣的就直接看看那个 Figure 架构和 Section 5 就好了。
这篇论文的行文也很不错。论文开门见山说我就是要做 sentence modeling,并且设计了一个 DCNN 的模型。DCNN 中 D 代表 dynamic,也是这个论文的重要贡献之一——结合他们设计的 k-max pooling——dynamic k-max pooling 解决了 how to handle variable-length of input for Convolutional layers, and especially for stacked deep CNN architectures to combine features from different levels. 这种 dynamic 的 concept,其实有两个,一个是为了解决 max-pooling 中 single-active 的 Kalchbrenner 在这篇论文中的改进,并匹配他们的 stacked CNN;另一个其实是 Socher'11 年的一个 dynamic pool 的问题,只是为了解决 last layer input 的问题。这里不细说。另一点关于他们的 k-max pooling 要说的是,他们认为这是 position-sensitive 的,因为他们在提取 k-max active feature 的时候,是保留了 original position 的,这样使得原先 feature 在 input(words in sentence)的顺序是 keep 住的。
另外一个贡献应该是他们的 stacked architecture combined with folding layer。这两者都是为了去 handle high-order information and interaction information between features. 对于 folding 层的意义后面的论文中会有人有改进,但是不得不说,这种交替架构思想确实非常符合 NLP 人 hierarchical composition 的理念,每一个 layer 代表一种更 large range 的 input unit。
这样的模型可以保留一个 encoding for each sentence,这个 encoding 会很有用,就被称为 skip-thoughts vector,用来作为特征提取器,进行后续 task。注意是 Figure 1 中所谓的 unattached arrows,对应在 decoder 阶段,是有一个 words conditioned on previous word + previous hidden state 的 probability 束缚。同时,因为 decoder 也是 RNN,所以可用于 generation(在论文结尾处也给出了一些例子)。
本文的另一个贡献是 vocabulary mapping。因为 RNN 的复杂性,但作者又不希望不能同时 learn word embedding,所以只好取舍一下——我们 learn 一部分 word embedding(words in training vocabulary);对于没出现的部分,我们做一个 mapping from word embedding pre-trained from word2vec。这里的思想就是 Mikolov'13 年那篇 word similarity for MT 的,用一个没有正则的 L2 学好 mapping。
在实验中,他们用此方法将 20K 的 vocabulary 扩充到了 930K。
In our experiments we consider 8 tasks: semantic-relatedness, paraphrase detection, image-sentence ranking and 5 standard classification benchmarks. In these experiments, we extract skip-thought vectors and train linear models to evaluate the representations directly, without any additional fine-tuning. As it turns out, skip-thoughts yield generic representations that perform robustly across all tasks considered.
这个工作也是之前介绍过,ACL 2015 的《Jointly optimizing word representations for lexical and sentential tasks with the C-PHRASE model》,来自 Nghia The Pham, Germán Kruszewski, Angeliki Lazaridou, Marco Baroni 等人。
基于 CBOW 的改造模型,作者的出发点是——既然 CBOW 可以基于 contexts 中的 words combination(ngram)来预测中心词,我们应该可以找出一种方法,使得 contexts 不再是简单的自然 combination,而是符合 linguistic rule 符合 syntax 的 combination。
利用 multi media/ multi corpus / multi task 等 parallel 的信息进行学习
比如用 multi media,可以是利用大家已经比较熟悉的 image-caption 来学习 sentence 的 composition,这方面的工作可以参阅《"Framing Image Description as a Ranking Task: Data, Models and Evaluation Metrics》
和表达学习密不可分,同时进行的另一方面的工作,自然是对表达的应用——一个表达到底好不好,对于 sentence meaning 建模如何,拉出来溜溜,直接上任务。从现在的研究来看,基于 sentence 的 vector 表达,非常依赖于任务——不同的任务,需要的 core sentence meaning 完全不同。这方面的任务、评价有:
Question Answering
来自 UMD 的 Mohit 的 QANTA 模型,工作发表于《A Neural Network for Factoid Question Answering over Paragraphs》EMNLP 2014,也是上面提过的 DAN 模型的作者噢。
工作来自 Jiwei Li 和 Eduard Hovy《A Model of Coherence Based on Distributed Sentence Representation》,EMNLP 2014。
当然还有大家都很熟悉的 sentiment analysis
这方面工作就太多啦,列不全,比如 NAACL 2015《Effective Use of Word Order for Text Categorization with Convolutional Neural Networks》。论文提出了两个 model,分别是a) seq-CNN,直接把 one-hot for each word 的 vector concatenate 起来,这样是一种全序保留 word order;b) bow-CNN,把 one-hot 的结果进行一种“压缩”,局部摒弃了 word order(类似的压缩方法在 MSR 系列 DSSM 中,把 subword 表示到 word 层次,也有使用)。这样做的好处是可以减少 parameter)。这两个 model 有一个非常显著的性质就是,different size of region(input unit),并且细节上他们的 model 中 配合了 different type of pooling。而且他们在 conclusion 部分的分析也着重强调: a) 两个任务在很多性质上非常相反,尽管 seq-CNN 和 bow-CNN 都表现最好,但 seq-CNN 和 bow-CNN 在两个任务上表现相反(归结到 different size of region 和 different type of pooling 对于性质的体现);b)parallel-CNN 有一些 trick,且效果更好。