UMFiT

Introduction

文章贡献点:

  1. 利用迁移学习的思想, 提出基于微调的通用语言模型(ULMiT)
  2. 提出discriminative fine-tuning, slanted triangular learning rates, gradual unfreezing等方法

Model

进入正题, 先来看下模型结构

首先预训练一个语言模型, 论文中采用的是AWD-LSTM(没有attention, short-cut connection, 只是加了很多dropout等防止过拟合的策略).
整个模型训练主要分为三部分:

  1. General-domin LM pretraining
  2. Target task LM fine-tuning
  3. Target task classifier fine-tuning

1. General-domin LM pretraining

在Wikitext-103上预训练一个语言模型, 其中包含28595篇处理过的文章.
预训练对小数据集的任务帮助很大.

2. Target task LM fine-tuning

利用目标任务数据集对预训练模型进行fine-tuning.
针对fine-tuning, 提出discriminative fine-tuning和slanted triangular learning rates.

Discriminative fine-tuning

对于不同层可以设置不同的学习率.
SGD更新方程变为:

其中, η l 1 = η l / 2.6 \eta^{l-1} = \eta^l/2.6 ηl1=ηl/2.6

Slanted triangular learning rates(STLR)

学习率一开始线性增长, 之后再线性降低.

这里, T是训练的迭代次数. cut就代表学习率从增长改为下降的迭代次数

3. Target task classifier fine-tuning

为了fine-tuning分类器, 在预训练模型基础上加了两层全连接.
每层都使用batch normalization和dropout, 并用ReLU作为中间层激活函数, 最后加上softmax输出结果.

Concat pooling

对隐藏层分别进行max-pooling和avg-pooling, 之后和隐藏层时间T的输出做拼接:

Gradual unfreezing

作者提出, 太“急躁”的微调会很快失去通过LM学到features的优势; 太谨慎的微调会导致收敛太慢,甚至过拟合。所以想出逐渐解冻的方法, 从最后一层开始, 每个epoch解冻一层, 直到fine-tune所有层, 模型收敛.

BPTT for Text Classification (BPT3C)

为了让在大数据集上fine-tuning更灵活, 提出新的反向传播算法.
具体地, 将一个文档分成固定长度的batches, 在每个batch开始, 模型用上一个batch最后状态来初始化.

实验

参数设置

embedding size: 400
语言模型使用三层双向的AWD-LSTM.
hidden layer: 1150
BPTT batch size: 70
dropout: 全连接设置为0.4, RNN层0.3, 输入embedding层0.4.
分类器的hidden layer: 50
batch size: 64
base LR: 0.004
fine-tuning LR: 0.01