ICLR2019 | 神经网络语言模型的自适应输入表示

本文介绍了一种改进的语言模型技术——自适应输入表示,它根据词频将词汇分组并减少低频词向量的维度,结合自适应softmax和参数共享,显著提升了模型效率和准确性。在Wikitext-103和BillionWord数据集上,该方法达到了最佳性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

但是对于具有大量词汇的语言模型来说,神经网络方法在预测单词概率时,必须要计算每一个词的概率,这极大地消耗了计算的资源与时间。因此有许多工作都致力于缓解此类问题,比如层次化softmax、自适应softmax等。

论文地址:
https://openreview.net/pdf?id=ByxZX20qFQ
代码地址:
https://github.com/pytorch/fairseq

引言

本篇文在自适应softmax的基础上,提出了神经网络语言模型的自适应输入表示。该方法使得,在Wikitext-103、Billion Word数据集上训练的语言模型分别获得了18.7 PPL 与23.02 PPL,将已知最好结果分别降低了10.5 PPL与0.68 PPL。

基本理论

自适应softmax

语言模型自适应输入表示基于自适应softmax扩展而来。自适应softmax利用了自然语言中单词分布符合Zipfian分布(即长尾分布)的特征,将词汇根据频率高低归入多个不同大小的簇中,比如一个Head簇和多个Tail簇。Head簇的的词汇出现频率最高,其中的词汇数量也最少,而对于之后的各个tail簇,其所拥有词汇频率逐渐降低,而其包含的词汇数量则逐渐增加。
在使用自适应softmax时,只需要针对Head簇的词汇数量,再加上额外Tail簇的个数做softmax,而这个数量会远小于全部词汇量大小。如果根据神经网络隐藏状态预测的词汇属于Head簇中的某个词汇,那么当前预测的单词就已经得到;若预测的词汇属于某个Tail簇,则只需针对该Tail簇再做一次softmax即可。这种方式与标准softmax,极大地减少了时间与计算资源的消耗。

自适应输入表示

与自适应softmax想法类似,文章中提出语言模型自适应输入表示将所有词汇根据频率切分为n个簇 V 1 , V 2 . . . V n V_1, V_2... V_n V1,V2...Vn;同时以因子k依次降低各簇的容量(capacity),即降低各簇词向量维度。因为相对于高频词汇来说,低频词汇不需要太多维度去编码语义等信息,这也是自适应softmax中提出的优化方法。也就是说,如果 V 1 V_1 V1中的词向量为 d d d维,那么 V n V_n Vn中的词向量维度是 d / ( K ( n − 1 ) ) d/(K^{(n-1)}) d/(K(n1))
为了方便后续模型使用,自适应输入表示还将各个簇中的词向量乘以对应的参数 W i W_i Wi,其中
,从而将词向量维度统一为d。自适应词向量输入表示的构建过程可以表示为图1:

参数共享

如果输出层使用与自适应输入表示相同参数(V, k, d)的自适应softmax,那么可以通过参数共享,进一步减少参数,并且还能得到一些效果上的提升。
除了共享实际的单词向量,还可以共享减少容量的线性变化参数: W 1 , W 2 . . . W n W_1, W_2 ... W_n W1,W2...Wn。文章中,在Wikitext-103任务上共享了上面提到的所有参数;而在Billion Word任务中,只共享词向量则有更好的效果。

实验设置

数据集

实验数据使用Billion Word和Wikitext-103。Billion Word包含768M的单词标记总数,词汇量将近800K。Wikitext-103包含了100M的单词标记数,以及260K的词汇总量。

模型及其参数

模型方面,使用Transformer中的Decoder部分网络,输入层增加了正弦位置编码。整个模型共有16个块,每个块包含有两个子块:16头的自注意力模块和一个前馈神经网络。模型中的所有子块前增加了层归一化,子块间通过残差连接相连。
Billion Word任务上,使用0.1的dropout和0.1的注意力dropout;而Wikitext-103任务上则增加了正则化的力度,使用了0.3的dropout、0.1的ReLU dropout以及0.1的注意力dropout。

实验及结果

在不同参数设置下,使用参数共享的自适应输入表示以及自适应softmax,在Billon Word测试集上的表现如表1所示。与之前公开的最好结果相比,自适应输入表示模型参数更少,训练更快。
表1 Billion Word数据集上的测试困惑度
表中的large、very large自适应输入表示模型与使用10个模型进行ensemble而得到的最好结果相当。而与Char-CNN模型相比,标准自适应输入表示的将结果降低了0.6 PPL, 而且训练时间也减少了接近40%。
自适应输入表示在Wikitext-103任务上的取得了18.7 PPL(表2),比Rae等人在2018年取得的最好结果低了10.5 PPL。
表2 Wikitext-103 测试困惑度
表3 WikiText-103使用各种不通输入输出层分解方式下结果
表3表明,在所有的方式中自适应输入表示,尤其是使用参数共享的情况下,在验证集、测试集上都获得了最好的结果。并且这种方式在训练时间,模型参数量上都有不错的表现。

结论

自适应输入表示将词向量根据词频进行分组,并依次逐步减少低频词向量的容量。一方面既改善了准确率;另一方面也极大地减少了模型参的数量。在结合自适应softmax,使用参数共享的情况下,模型参数能够被进一步减少,从而极大地提高了模型的训练速度。
实验结果表明,使用自适应输入表示方法相比于普通方法,其训练熟读更快,准确度更好;并在Wikitext-103与Billion Word数据集上训练的语言模型获得了新的最好结果。



扫码识别关注,获取更多论文解读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值