投稿/爆料
厂商入驻

语言建模的王者:AWD-LSTM指南

论智|2018-11-30 19:07

【编者按】数据科学家Yashu Seth深入讲解了AWD-LSTM这一语言建模中大放异彩的模型架构。

AWD-LSTM算是当前最先进的语言建模的统治者。所有关于世界级的模型的顶尖研究论文都采用了AWD-LSTM。它在字符模型上的表现也很棒。

这篇文章将解读引入AWD-LSTM的研究论文Regularizing and Optimizing LSTM Language Models(正则化、优化LSTM语言模型),解释其中讨论的各种技术。这篇论文调查了一些面向基于单词的语言建模任务的正则化优化策略,这些策略不仅非常高效,而且可以不加修改地直接应用于现有的LSTM实现。

AWD-LSTMASGD Weight-Dropped LSTM的简称。它使用了DropConnectAverage-SGD的一个变体(NT-ASGD),还有其他一些知名的正则化策略。我们将讲解所有这些技术的细节。尽管所有这些方法以前都有人提出过,也在理论上解释过,这篇论文的妙处在于成功地将这些方法应用于语言模型得到当前最先进的结果。

相关复现代码可以在GitHub仓库salesforce/awd-lstm-lm获取。

如果你想要温习一下LSTM网络的内部机制,那么强烈推荐Christopher Olah撰写的知名文章一文详解LSTM网络

LSTM的数学表述为:

LSTM公式

其中,WiWfWoWcUiUfUoUc为权重矩阵,xt为时刻t的向量输入,ht为当前隐藏状态,ct为记忆细胞状态,为分素相乘。

下面我们将逐一讲解论文作者讨论的策略。

Weight-Dropped LSTM

RNN的循环连接倾向于过拟合。研究社区对预防这一倾向兴趣浓厚,进行了广泛的研究。在前馈网络和卷积神经网络中,dropout在缓解过拟合上取得了巨大的成功。但在RNN的隐藏状态上应用类似dropout的技术效果不佳,因为这干扰了RNN保持长时依赖的能力。

有多种克服这一问题的挑战,但大多数或者应用于隐藏状态向量ht-1,或者应用于记忆状态ct的更新。这妨碍了使用像NVIDIA的cuDNN LSTM这样僵硬但高效的黑盒RNN实现。

为应对这一问题,论文作者提议使用DropConnect。我们知道,dropout归零每一层中随机选择的激活子集。DropConnect归零的不是激活,而是随机选择的权重子集。因此,每个单元接受来自前一层随机单元子集的输入。

DropConnect示意图

图片来源:cs.nyu.edu/~wanli/dropc/

DropConnect应用于隐藏状态之间的权重矩阵(Ui, Uf, Uo, Uc),而不是隐藏状态或记忆状态。这一丢弃操作只在前向和反向传播前进行一次,从而最小化对训练速度的影响,并且适用于任何标准的黑盒RNN优化实现。通过丢弃隐藏状态之间的权重矩阵的部分信息,可以防止LSTM循环连接的过拟合。

具体实现可以查看之前提到的代码仓库的weight_drop.py模块。

论文作者指出,DropConnect同样可以应用于LSTM的非循环权重,不过重点在于防止循环连接的过拟合。

NT-ASGD

人们发现,在语言建模任务中,传统的不带动量的SGD算法比动量SGD、Adam、Adagrad、RMSProp等其他算法要好。因此,论文作者调研了一种传统SGD算法的变体ASGD平均SGD)。

平均SGD

我们首先讲解下ASGD算法。它采用和SGD算法一样的梯度更新步骤,但并不返回当前迭代计算的权重,而是同时考虑之前迭代的权重并返回一个均值。

传统SGD更新:

w_t = w_prev - lr_t * grad(w_prev)

ASGD更新:

avg_fact = 1 / max(t - K, 1)

if avg_fact != 1:
  w_t = avg_fact * (sum(w_prevs) + (w_prev - lr_t * grad(w_prev)))
else:
  w_t = w_prev - lr_t * grad(w_prev)

其中,K为开始计算权重平均前运行的最小迭代数目。也就是说,在前K个迭代中,ASGD的行为和传统SGD完全一致。t是当前完成的迭代数,sum(w_prevs)是从迭代Kt的权重和,而lr_t是迭代t的学习率,由学习率规划器决定。

可以参考PyTorch的ASGD实现:torch/optim/asgd.py

论文作者指出了该方法的两处不足:

  • 学习率规划器的调整原则不明。
  • 参数K的选取原则不明。过小的值可能对这一方法的效果有负面影响,而过大的值可能导致需要额外的迭代才能收敛。

论文作者提议使用ASGD的一种非单调触发变体(NT-ASGD),其中:

  • 仅当验证测度在多次循环后没有改善的情况下才触发平均。所以,当验证测度在n次循环(n称为非单调间隔超参数)后没有改善时,算法换用ASGD。论文作者发现n=5这一设置效果良好。
  • 使用恒定学习率,因此无需进一步调整。

论文作者使用了这一NT-ASGD设定,并演示了它的效果要优于SGD。

扩展正则化技术

除了上面讨论到的两种技术,论文作者还使用了其他预防过拟合、提升数据效率的正则化技术。

可变长度反向传播序列

论文作者指出了固定长度BPTT的低效。假设我们在100个元素上进行长度为10的固定窗口的BPTT。在这一情形下,任何可以被10整除的元素将没有任何元素可以反向传播。固定长度BPTT阻止了1/10的数据以循环的方式改善自身,还有8/10的数据仅仅使用部分BPTT窗口。

为了应对这一问题,论文作者提议使用可变长度反向传播序列。首先选定基本序列长度,有p的概率选择bptt1-p的概率选择bptt/2。在PyTorch实现中,论文作者将p设为0.95.

base_bptt = bptt if np.random.random() < 0.95 else bptt / 2

接着,据N(base_bptt, s)得到seq_len,其中s是标准差,N是正态分布。论文中是这么写的,不过PyTorch实现中是这么计算的:

seq_len = max(5, int(np.random.normal(base_bptt, 5)))

然后再根据seq_len改变比例。这一步是必要的,因为取样任意序列长度的情况下,使用固定学习率将倾向于短序列。

变分dropout

在标准dropout中,每次调用dropout时取样一个新的dropout掩码。而在变分dropout中,dropout掩码只在第一次调用时取样,接着锁定的dropout掩码重复应用于前向和反向过程中的所有连接。

尽管RNN的隐藏到隐藏转换中使用了DropConnect,但其他所有dropout操作中使用了变分dropout,特别是在给定的前向和反向传播中,LSTM的所有输入和输出使用同样的dropout掩码。mini-batch内的每个样本使用不同的dropout掩码,而不是在所有样本上使用同一个掩码,以确保元素丢弃的多样性。

具体细节可以参考代码仓库中的locked_dropout.py模块。

嵌入dropout

论文作者使用最早由A Theoretically Grounded Application of Dropout in Recurrent Neural Networks这篇论文提出的嵌入dropout。该技术在单词的嵌入矩阵上应用dropout,导致在完整的前向和反向传播上该特定单词的所有使用都消失了。

减少嵌入尺寸

减少语言模型的总参数量的最简单方法是降低词向量的尺寸,尽管这无助于缓解过拟合。论文作者修改了第一个和最后一个LSTM层的输入和输出维度,以和降低了的嵌入尺寸保持一致。

激活正则化

权重上常常使用L2正则以缓解过拟合。L2正则也同样可以应用于单个单元激活。激活正则化惩罚显著过大的激活。

loss = loss + alpha * dropped_rnn_h.pow(2).mean()

时域激活正则化

这一方法在RNN不同时步的输出的差异上应用L2正则化,惩罚产生过大的隐藏状态变动的模型。

loss = loss + beta * (rnn_h[1:] - rnn_h[:-1]).pow(2).mean()

上面的alpha和beta都是比例系数。激活正则化和时域激活正则化只应用于RNN最终层的输出。

模型分析

论文作者也做了消融试验,检验各种技术的有效性。

消融试验

从上表我们可以看到,最剧烈的表现下降来自放弃使用DropConnect

重要的实现细节

数据集 Penn Tree Bank (PTB)数据集和WikiText 2数据集。

网络架构 WT2上的batch尺寸设为80,PTB上的batch尺寸设为40。根据论文作者的经验,较大的batch尺寸(例如,40-80)表现优于较小的尺寸(例如,10-20)。

指针模型 论文作者也演示了如何在基于指针的注意力模型上应用这些技术。

其他超参数的细节请参阅论文。超参数的选取基于试错法,使用细粒度超参数搜索可能进一步提升表现。

结语

AWD-LSTM精彩地解释了如何在语言模型上应用现有正则化和优化策略。我觉得这是任何NLP研究者(包括初学者在内)必读的经典论文。论文作者同时指出,尽管这些策略是在语言建模的任务上演示的,它们应该通用于其他序列学习任务。这为未来的研究提供了许多可能性。

希望你享受阅读本文的时间,也希望本文能让你更容易理解原论文。非常感谢。🙂

十分感谢Stephen Merity(论文第一作者)的认可😊

twitter

原文 What makes the AWD-LSTM great?
感谢原作者Yashu Seth授权论智编译,未经授权禁止转载。详情见转载须知

本文来自机器人之家,如若转载,请注明出处:https://www.jqr.com/article/000622
爆料投稿,欢迎投递至邮箱:service@jqr.com
自然语言处理 RNN 正则化 优化
推荐阅读

最新评论(0

暂无回帖,快来抢沙发吧

评论

游客
robot
发布需求
联系客服联系客服
robot
联系客服