Baseline Needs More Love: On Simple Word-Embedding-Based Models and Associated Pooling Mechanisms

论文地址: https://arxiv.org/abs/1805.09843

TL;DR

本文提出了一类学习文本表示的模型, 仅使用不同的池化操作对词向量进行融合. 实验证明, 此类模型是一个强基线, 在时序不太重要的任务上, 性能超过简单的 CNN 和 LSTM. 此外, 参数少, 训练快得飞起.

PS: 和上周的 CNN4SC 对比, GPU (GeForce GT 750M) 下快了约 17 倍.

Key Points

  • 本文欲探究的一个问题是: 如何在模型的计算复杂性与表达能力之间取得平衡.

  • fastText 和 Deep Averaging Network 使用平均池化就在一些任务上取得了瞩目的效果. 受此启发, 本文提出了用池化来学习文本表示的一类模型, 包括:

    • 平均池化: 对文本(可以是句子, 短文, 文档)中的所有词向量, 求每一维的均值, 得到与词向量相同维数的文本向量: $z=\frac{1}{L}\Sigma_{i=1}^L v_i$;

    • 最大池化: 取所有词向量中各维的最大值: $z=Max-pooling(v_1, \dots, v_L)$ (此操作的基本思想是, 只有少数关键词才对预测起作用);

    • 池化拼接: 即分别进行最大池化和平均池化, 然后将得到的向量拼接, 得到的文本向量是词向量的两倍长 (目的是让两者互补);

    • 分层池化: 以上所述均为全局池化, 并没有考虑到时序信息, 为弥补池化对时序信息捕捉的不足, 先进行局部平均池化, 得到 n 个向量, 然后再进行全局最大池化.

  • 池化操作是无参, 相比 CNN 或 RNN 将词向量的序列加工程文本向量, 本文提出的 SWEM 模型简单得多. 模型的参数来自池化层之上的全连阶层, 另外, 对于部分任务在 embedding layer 与池化层另有一层全连阶层, 即不直接对词向量进行池化 (是否增加这一层由实验决定).

  • SWEM 在主题分类任务上基本胜过深度CNN (29层), LSTM 和 fastText, 证明了模型的有效性. 此类任务, 关键词对于预测的贡献极大, 而时序并不重要;

  • 在情感分析类任务上, 非分层池化的 SWEM 不如 CNN 和 LSTM, 证明了时序的重要性, 但使用分层池化的 SWEM 取得了比 CNN, LSTM 更好或相近的性能.

  • 在文档分类任务上, 使用最大池化训练得到的词向量 (也可以使用预训练的) 很稀疏, 证明上述观点: 只有少量关键词才对预测起关键作用.

  • 在文本匹配型的任务上, SWEM 同样基本胜过了 CNN 与 LSTM. 原因在于, 此类任务, 句子间单词的对齐程度足以做预测, 时序再次变得不重要.

  • 文中对不同类型的数据, 打乱训练集的词序, 保持测试集的词序, 以此来探究哪些任务的词序是重要的. 使用 LSTM 进行实验, 乱序训练的情况下, LSTM 性能明显下降的即为对时序(词序)敏感的任务, 包括情感分析, 问答类任务.

  • 对于短句的分类, SWEM 的性能不如 CNN 和 LSTM. 文章归因为, 时序在短句中比在长文档中更重要, 仅由词向量提供的语义信息太有限了.

  • Regularization 对于小型训练集由防止过拟合的作用.

  • 文中的一个实验将 SWEM 的池化层后的非线性层替换为了线性分类器, 模型性能只是轻微下降, 证明了模型的鲁棒性.

Notes/Questions

  • 我感觉文章还少了一组设置: 先最大池化后平均池化的实验组. 在 CNN4SC 的代码中, 我补充了对照实验.

Last updated