AWD-LSTM为什么这么棒?

AWD-LSTM是目前最优秀的语言模型之一。在众多的顶会论文中,对字级模型的研究都采用了AWD-LSTMs,并且它在字符级模型中的表现也同样出色。

本文回顾了论文——Regularizing and Optimizing LSTM Language Models ,在介绍AWD-LSTM模型的同时并解释其中所涉及的各项策略。该论文提出了一系列基于词的语言模型的正则化和优化策略。这些策略不仅行之有效,而且能够在不改变现有LSTM模型的基础上使用。

AWD-LSTM即ASGD Weight-Dropped LSTM。它使用了DropConnect及平均随机梯度下降的方法,除此之外还有包含一些其它的正则化策略。我们将在后文详细讲解这些策略。本文将着重于介绍它们在语言模型中的成功应用。

实验代码获取:awd-lstm-lm GitHub repository

LSTM中的数学公式:

  • it = σ(Wixt + Uiht-1)
  • ft = σ(Wfxt + Ufht-1)
  • ot = σ(Woxt + Uoht-1)
  • c’t = tanh(Wcxt + Ucht-1)
  • ct = it ⊙ c’t + ft ⊙ c’t-1
  • ht = ot ⊙ tanh(ct)


其中, Wi, Wf, Wo, Wc, Ui, Uf, Uo, Uc都是权重矩阵,xt表示输入向量,ht表示隐藏单元向量,ct表示单元状态向量, 表示element-wise乘法。
接下来我们将逐一介绍作者提出的策略:

权重下降的LSTM

RNN的循环连接容易导致过拟合问题,如何解决这一问题也成了一个较为热门的研究领域。Dropouts的引入在前馈神经网络和卷积网络中取得了巨大的成功。但将Dropouts引入到RNN中却反响甚微,这是由于Dropouts的加入破坏了RNN长期依赖的能力。

研究学者们就此提出了许多解决方案,但是这些方法要么作用于隐藏状态向量ht-1,要么是对单元状态向量ct进行更新。上述操作能够解决高度优化的“黑盒”RNN,例如NVIDIA’s cuDNN LSTM中的过拟合问题。

但仅如此是不够的,为了更好的解决这个问题,研究学者们引入了DropConnect。DropConnect是在神经网络中对全连接层进行规范化处理。Dropout是指在模型训练时随机的将隐层节点的权重变成0,暂时认为这些节点不是网络结构的一部分,但是会把它们的权重保留下来。与Dropout不同的是DropConnect在训练神经网络模型过程中,并不随机的将隐层节点的输出变成0,而是将节点中的每个与其相连的输入权值以1-p的概率变成0。


Regularization of Neural Networks using DropConnect

DropConnect作用在hidden-to-hidden权重矩阵(Ui、Uf、Uo、Uc)上。在前向和后向遍历之前,只执行一次dropout操作,这对训练速度的影响较小,可以用于任何标准优化的“黑盒”RNN中。通过对hidden-to-hidden权重矩阵进行dropout操作,可以避免LSTM循环连接中的过度拟合问题。

你可以在 awd-lstm-lm 中找到weight_drop.py 模块用于实现。

作者表示,尽管DropConnect是通过作用在hidden-to-hidden权重矩阵以防止过拟合问题,但它也可以作用于LSTM的非循环权重。

使用非单调条件来确定平均触发器

研究发现,对于特定的语言建模任务,传统的不带动量的SGD算法优于带动量的SGD、Adam、Adagrad及RMSProp等算法。因此,作者基于传统的SGD算法提出了ASGD(Average SGD)算法。

Average SGD

ASGD算法采用了与SGD算法相同的梯度更新步骤,不同的是,ASGD没有返回当前迭代中计算出的权值,而是考虑的这一步和前一次迭代的平均值。

传统的SGD梯度更新:

w_t = w_prev - lr_t * grad(w_prev)

AGSD梯度更新:

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)是迭代k到t的权重之和,lr_t是迭代次数t的学习效率,由学习率调度器决定。

你可以在这里找到AGSD的PyTorch实现。

但作者也强调,该方法有如下两个缺点:

  • 学习率调度器的调优方案不明确
  • 如何选取合适的迭代次数k。值太小会对方法的有效性产生负面影响,值太大可能需要额外的迭代才能收敛。

基于此,作者在论文中提出了使用非单调条件来确定平均触发器,即NT-ASGD,其中:

  • 当验证度量不能改善多个循环时,就会触发平均值。这是由非单调区间的超参数n保证的。因此,每当验证度量没有在n个周期内得到改进时,就会使用到ASGD算法。通过实验发现,当n=5的时候效果最好。
  • 整个实验中使用一个恒定的学习速率,不需要进一步的调整。

正则化方法

除了上述提及的两种方法外,作者还使用了一些其它的正则化方法防止过拟合问题及提高数据效率。

长度可变的反向传播序列

作者指出,使用固定长度的基于时间的反向传播算法(BPTT)效率较低。试想,在一个时间窗口大小固定为10的BPTT算法中,有100个元素要进行反向传播操作。在这种情况下,任何可以被10整除的元素都不会有可以反向支撑的元素。这导致了1/10的数据无法以循环的方式进行自我改进,8/10的数据只能使用到部分的BPTT窗口。

为了解决这个问题,作者提出了使用可变长度的反向传播序列。首先选取长度为bptt的序列,概率为p以及长度为bptt/2的序列,概率为1-p。在PyTorch中,作者将p设为0.95。

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

其中,base_bptt用于获取seq_len,即序列长度,在N(base_bptt, s)中,s表示标准差,N表示服从正态分布。代码如下:

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

学习率会根据seq_length进行调整。由于当学习速率固定时,会更倾向于对段序列而非长序列进行采样,所以需要进行缩放。

lr2 = lr * seq_len / bptt

Variational Dropout

在标准的Dropout中,每次调用dropout连接时都会采样到一个新的dropout mask。而在Variational Dropout中,dropout mask在第一次调用时只采样一次,然后locked dropout mask将重复用于前向和后向传播中的所有连接。

虽然使用了DropConnect而非Variational Dropout以规范RNN中hidden-to-hidden的转换,但是对于其它的dropout操作均使用的Variational Dropout,特别是在特定的前向和后向传播中,对LSTM的所有输入和输出使用相同的dropout mask。

点击查看官方awd-lstm-lm GitHub存储库的Variational dropout实现。详情请参阅原文。

Embedding Dropout

论文中所提到的Embedding Dropout首次出现在——《A Theoretically Grounded Application of Dropout in Recurrent Neural Networks》一文中。该方法是指将dropout作用于嵌入矩阵中,且贯穿整个前向和反向传播过程。在该过程中出现的所有特定单词均会消失。

Weight Tying(权重绑定)

权重绑定共享嵌入层和softmax层之间的权重,能够减少模型中大量的参数。

Reduction in Embedding Size

对于语言模型来说,想要减少总参数的数量,最简单的方法是降低词向量的维数。即使这样无法帮助缓解过拟合问题,但它能够减少嵌入层的维度。对LSTM的第一层和最后一层进行修改,可以使得输入和输出的尺寸等于减小后的嵌入尺寸。

Activation Regularization(激活正则化)

L2正则化是对权重施加范数约束以减少过拟合问题,它同样可以用于单个单元的激活,即激活正则化。激活正则化可作为一种调解网络的方法。

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

Temporal Activation Regularization(时域激活正则化)

同时,L2正则化能对RNN在不同时间步骤上的输出差值进行范数约束。它通过在隐藏层产生较大变化对模型进行惩罚。

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

其中,alpha和beta是缩放系数,AR和TAR损失函数仅对RNN最后一层的输出起作用。

模型分析

作者就上述模型在不同的数据集中进行了实验,为了对分分析,每次去掉一种策略。

图中的每一行表示去掉特定策略的困惑度(perplexity)分值,从该图中我们能够直观的看出各策略对结果的影响。

实验细节

数据——来自Penn Tree-bank(PTB)数据集和WikiText-2(WT2)数据集。

网络体系结构——所有的实验均使用的是3层LSTM模型。

批尺寸——WT2数据集的批尺寸为80,PTB数据集的批尺寸为40。根据以往经验来看,较大批尺寸(40-80)的性能优于较小批尺寸(10-20)。

总结

该论文很好的总结了现有的正则化及优化策略在语言模型中的应用,对于NLP初学者甚至研究者都大有裨益。论文中强调,虽然这些策略在语言建模中获得了成功,但它们同样适用于其他序列学习任务。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Navicat Premium 12 连接远程Oracle数据库

文章目录1. Nacicat premium 12.1.11下载2. 点击【连接】-【ORACLE】3. 输入连接信息异常解决方案1. Nacicat premium 12.1.11下载 Nacicat premium 12.1.11破解版 32/64位 2. 点击【连接】-【ORACLE】 3. 输入连接信息 #连接信息如下&#xff1a; Hostname: 192.168.1.101 …

NLP深度学习:近期趋势概述(一)

在最近发表的论文中&#xff0c;Young及其同事汇总了基于深度学习的自然语言处理&#xff08;NLP&#xff09;系统和应用程序的一些最新趋势。本文的重点介绍是对各种NLP任务&#xff08;如视觉问答&#xff08;QA&#xff09;和机器翻译&#xff09;最新技术&#xff08;SOTA&…

matlab meshgrid函数_从零开始的matlab学习笔记——(28)立体图切面与三视图

matlab应用——求极限&#xff0c;求导&#xff0c;求积分&#xff0c;解方程&#xff0c;概率统计&#xff0c;函数绘图&#xff0c;三维图像&#xff0c;拟合函数&#xff0c;动态图....更多内容尽在个人专栏&#xff1a;matlab学习这一节我们说一说立体图的切面问题slice函数…

NLP深度学习:近期趋势概述(二)

递归神经网络&#xff08;RNN&#xff09; RNN是专门用于处理顺序信息的神经网络的方法。RNN将计算应用于以先前计算结果为条件的输入序列。这些序列通常由固定大小的标记向量表示&#xff0c;他们被顺序送至循环单元。下图说明了一个简单的RNN框架。 RNN的主要优势在于能够记…

使用IntelliJ IDEA 2019.3.2 x64 远程连接oracle数据库

登录验证第2种方式&#xff1a; 点击【Database】-【Data Source】-【Oracle】 输入连接信息&#xff0c;点击【Test Connection】-【OK】 Hostname: 192.168.1.101 Port: 1521 Sid: helowin Username: system Password: oracle 注释&#xff1a;第一次应该会下载客户端依赖&…

起底中国 IT 发展 20 年!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 马超责编 | 阿秃刚开始撰写此文时恰逢我结婚10周年纪念日&#xff0c;暮然回首&#xff0c;我突然发现第一款浏览器Worldwideweb出现在1990年&#xff0c;Java与Python都诞生于1994年&#xff0c;甚至被沿用至今的Visual st…

TableStore发布多元索引功能,打造统一的在线数据平台

什么是NoSQL “NoSQL”一词最早出现在1998年&#xff0c;距今刚好二十年。站在今天回头看的话&#xff0c;很少有人能想到在关系型数据库成熟发展了三十年&#xff0c;已经在数据存储领域占据了不可动摇的的地位后&#xff0c;NoSQL数据库尽然还可以快速地异军突起&#xff0c…

阿里是如何“宠”员工的?除了福利,还有这满屏黑科技

分散在世界各地的六万阿里员工是如何快速协同工作的&#xff1f; 在2018年杭州云栖大会现场&#xff0c;一块近4米宽的企业信息化大屏上&#xff0c;展示了全球阿里员工1天的云上办公与连接情况。 目前阿里巴巴的办公网络与音视频会议已经覆盖全球33个国家和地区&#xff0c;其…

里用gam使用_第一次使用Roam一头雾水?

有感于自己使用Chrome插件&#xff0c;自己看了官方文档也是一头雾水的状态&#xff0c;想到自己使用的Roam Research&#xff0c;用了好几个月也是不断摸索的&#xff0c;记录下使用Roam Research方法供新手们参考。工具的使用是简单的&#xff0c;但是看着详尽的工具文档和使…

使用PLSQL 远程连接oracle数据库

文章目录一、软件下载准备1. 下载PLSQL客户端2. 下载instantclient 客户端3. 将解压instantclient复制到PLSQL目录下面二、配置oracle监听2.1. 首先进入oracle内部2.2. 找到这个文件的目录2.3. 将tnsnames.ora文件从容器内部复制到宿主机上2.4. 再从linux服务器上将文件下载到w…

面试官:知道你的接口QPS是多少么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 孤独烟责编 | 阿秃引言大家好&#xff0c;我是渣渣烟。我又来水文章了。这篇文章我个人感觉含金量不是太大&#xff0c;大概5分钟左右就能看完&#xff01;其实大家都知道&#xff0c;我不爱写这种操作型的文章&#xff0c;…

Module 让 Terraform 使用更简单

众所周知&#xff0c;Terraform 是一个开源的自动化的资源编排工具&#xff0c;支持多家云服务提供商。阿里云作为第三大云服务提供商&#xff0c;terraform-alicloud-provider 已经支持了超过 90 多个 Resource 和 Data Source&#xff0c;覆盖20多个服务和产品&#xff0c;吸…

android java 实体类 object变量 保存_Java中的实体类--Serializable接口、transient 关键字...

在java中&#xff0c;实体类是一个非常重要的概念&#xff0c;我们可以在实体类中封装对象、设置其属性和方法等。关于实体类&#xff0c;也经常涉及到适配器模式、装饰者模式等设计模式。那么在实际代码开发中&#xff0c;关于实体类的注意事项有哪些呢&#xff1f;1. Seriali…

杭州云栖大会阿里云放大招,8K远程医疗会诊引关注

大家每天都会照镜子&#xff0c;镜子里的一切都清清楚楚&#xff0c;足可乱真&#xff0c;可是你想过有一天看视频直播就像照镜子么&#xff1f; 这不&#xff0c;在云栖大会的C馆里&#xff0c;8K超高清直播体验馆前异常火爆&#xff0c;在这里&#xff0c;很多参会者都围着有…

「2019 嵌入式智能国际大会」 399 元超值学生票来啦,帮你豪省 2600 元!

2019 嵌入式智能国际大会即将来袭&#xff01;购票官网&#xff1a;https://dwz.cn/z1jHouwE物联网是继计算机、互联网和移动通信之后的又一次信息产业的革命性发展&#xff0c;在互联网和移动互联网高速发展的时代&#xff0c;几乎所有行业都有数据联网的需求。无论是国外的科…

【杭州云栖】飞天技术汇大视频专场:全民视频时代下的创新技术之路

2018杭州•云栖大会在9月19日如期召开&#xff0c;在四天时间内将举行2场主论坛、170多场前沿峰会。在9月19日上午的飞天技术汇-大视频专场中&#xff0c;多位阿里云技术专家、合作伙伴、客户为现场观众分享了各自领域的多媒体研发成果&#xff0c;进行多款重磅产品的发布&…

Centos7 使用Docker 安装Oracle精简版本

文章目录一、Docker1. 在线安装Docker2. 启动docker3. 使用docker拉取Oracle镜像4. 看拉取的oracle镜像5. 创建守护式oracle容器并启动容器6. 查看正在运行的容器二、oracle容器配置篇2.1. 进入oracle容器的控制台2.2. 切换root用户配置环境变量2.3. 设置系统及用户密码三、登录…

sip协议详解_SIP协议详解-INVITE消息发送过程

SIP协议是VoIP中最重要的信令控制协议。SIP中第一件事情就是主叫发送INVITE给被叫&#xff0c;被叫响铃。本文从多角度详细描述INVITE消息发送的全过程。一、阅读RFC权威描述关于INVITE消息发送&#xff0c;先查看RFC 3261中权威描述&#xff1a;INVITE client transaction: ht…

【杭州云栖】飞天技术汇CDN与边缘计算专场:让内容离消费者更进一步

【杭州云栖】飞天技术汇CDN与边缘计算专场&#xff1a;让内容离消费者更进一步 在5G移动通信、IoT万物智联时代即将到来的大背景下&#xff0c;越来越多的应用和数据来自边缘位置&#xff0c;呈现低延时、高带宽、大连接、本地化的业务特征&#xff0c;那么如何协同阿里云全球…

迈克尔·戴尔再次到访2019戴尔科技峰会,为“戴尔中国4.0+战略”加个码……

10月25日&#xff0c;以“拓界成真”为主题的2019戴尔科技峰会在北京国家会议中心隆重举行。戴尔科技集团董事长兼首席执行官迈克尔戴尔出席峰会&#xff0c;发表主题演讲&#xff0c;见证集团与多个地方政府、高校、企业签署战略合作协议&#xff0c;并与教育部领导一起&#…