【paper reading】Recurrent Neural Network for Text Classification with Multi-Task Learning

原文链接:Recurrent Neural Network for Text Classification with Multi-Task Learning

作者:Pengfei Liu, Xipeng Qiu, Xuanjing Huang

单位:复旦大学 自然语言处理与深度学习组

文章来源:IJCAI 2016

简介:本文针对文本多分类任务,提出了基于 RNN 的三种不同的共享信息机制,在四个基准的文本分类任务中取得了较好的结果。

研究概况

研究背景

假设多个任务之间具有相关性,**多任务学习**利用任务之间的相关性相互促进,通过并行学习任务来提高分类效果。这些模型的基本的多任务架构将共享一些较低的层以确定共同的特性。在共享层之后,每个特定任务单独使用一个输出层。

Shared-Representation

前人工作和不足

基于神经网络的多任务学习已被用于解决 NLP 的各类任务。例如:

  • 使用一个对于输入单词的共享表示:用途是解决词性标注、语义角色标注等传统 NLP 任务。缺点是只有一张查找表是共享的、其他查找表和层是任务特定的,并且需要用基于窗口的方法处理长度不定的文本序列;
  • 多任务 DNN 来学习表示:用途是解决查询分类和网络搜索排名任务。缺点是模型输入为词袋表示,损失了词序信息。

不同于以上两种方法,本文的模型基于 RNN,对于建模变长文本序列更友好。

本文工作

基于 RNN,提出了三种不同的共享信息机制,可以将信息共享到特定任务层的共享层。整个网络都是在所有这些任务上共同训练的。模型在四个基准的文本分类任务上展示了很好的效果,超过了大多数的 state-of-the-art。

具体细节

结构

  • 模型一(Uniform-layer Architecture):对于每个分类任务,在每个输入 character 的 embedding vector 后拼上一个随机生成的可训练向量,表示该特定任务,所有任务共享 LSTM 层,最后一个 时刻的 hidden state 则作为输入传入 softmax;
  • 模型二(Coupled-layer Architecture):每个任务具有自己独立的 LSTM 层,但是每一时刻所有任务的 hidden state 则会和下一时刻的 character 一起作为输入,最后一个时刻的 hidden state 进行分类;
  • 模型三(Shared-layer Architecture):除了一个共享的 Bi-LSTM 层用于获取共享信息,每个任务有自己独立的 LSTM 层,LSTM 的输入包括每一时刻的 character 和 Bi-LSTM 的 hidden state。

训练

对于模型一和模型三,具有一个共享层。在联合学习阶段之后可以进行微调(Fine Tuning)来进一步优化每个任务的性能。

对于模型三,共享层可以由无监督的预训练阶段初始化,用四个任务数据集进行语言模型的训练。

训练方法:

  1. 随机选择一项任务;
  2. 从该任务中随机选择一个训练样本;
  3. 根据基于梯度的优化(paper 中使用 Adagrad update rule)来更新参数;
  4. 重复 1-3 步。

数据集

  • SST-1:5 个情绪类别的电影影评,来自斯坦福情感数据库
  • SST-2:二分类电影影评,来自斯坦福数据库
  • SUBJ:主观性数据集,任务目的是将句子分为主观和客观
  • IMDB:二分类的电影影评,大多数评价为长句子

超参数与训练

使用 word2vec 在维基语料获得词向量,字典规模约 500,000。词嵌入在训练过程中被微调以提高性能;其他参数在 [-0.1, 0.1] 的范围随机采样,超参数将选择在验证集上性能最好的一组。对于没有验证集的数据集使用 10 折交叉验证。

特定任务和共享层的嵌入大小为 64。对于模型一,每个单词有两个嵌入,大小都为 64。LSTM 的隐藏层大小为 50。初始学习率为 0.1。参数的正则化权值为 10^-5。

结果比较

与 state-of-the-art 相比较

将模型三和下列模型进行比较:

paper 中的多任务模型和其他基于 RNN 的模型(例如 Tree-LSTM)是兼容的,可以合并以扩展。

了解模型

从 SST-2 的测试集中采样,看在单个 LSTM 和含共享层的 LSTM 中,句子中每个单词对预测的情绪分数的影响。具体方式是观察全局门(global gates)的激活值,这个值控制一个 LSTM 分享层到一个特定任务层的信号流,使我们能够了解神经元的行为。

例如,“marry”一词使得激活值升高,说明特定任务层从共享层得到很多信息,从而使预测更准确。

通过分析,单个 LSTM 无法捕捉到“but … higher than”的结构,但是 paper 中的模型对其敏感,说明共享层不仅增强了特定词的意义,并且帮助特定任务学到结构信息。

错误分析

该模型的错误案例可分为两种:

  1. 一些含有非常复杂的结构的句子不能被适当处理,例如二次否定、虚拟语气。对于这些情况,在结构上可以做一些改进,比如基于树的 LSTM;
  2. 某些句子难以从书面意思判断其情绪,例如“I tried to read the time on my watch.”