但是对于具有大量词汇的语言模型来说,神经网络方法在预测单词概率时,必须要计算每一个词的概率,这极大地消耗了计算的资源与时间。因此有许多工作都致力于缓解此类问题,比如层次化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(n−1))。
为了方便后续模型使用,自适应输入表示还将各个簇中的词向量乘以对应的参数
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所示。与之前公开的最好结果相比,自适应输入表示模型参数更少,训练更快。
表中的large、very large自适应输入表示模型与使用10个模型进行ensemble而得到的最好结果相当。而与Char-CNN模型相比,标准自适应输入表示的将结果降低了0.6 PPL, 而且训练时间也减少了接近40%。
自适应输入表示在Wikitext-103任务上的取得了18.7 PPL(表2),比Rae等人在2018年取得的最好结果低了10.5 PPL。
表3表明,在所有的方式中自适应输入表示,尤其是使用参数共享的情况下,在验证集、测试集上都获得了最好的结果。并且这种方式在训练时间,模型参数量上都有不错的表现。
结论
自适应输入表示将词向量根据词频进行分组,并依次逐步减少低频词向量的容量。一方面既改善了准确率;另一方面也极大地减少了模型参的数量。在结合自适应softmax,使用参数共享的情况下,模型参数能够被进一步减少,从而极大地提高了模型的训练速度。
实验结果表明,使用自适应输入表示方法相比于普通方法,其训练熟读更快,准确度更好;并在Wikitext-103与Billion Word数据集上训练的语言模型获得了新的最好结果。
扫码识别关注,获取更多论文解读