神经网络语言模型的自适应输入表示
今天看一篇轻松一点的paper。
在GPU上的高效softmax近似中,我们介绍了超大词表时softmax的优化。
今天介绍的则是将类似的思维应用到input embedding层来的方法。原始论文见参考文献[1]。我认为,这篇论文值得看的点有两个:
自适应的input embedding。 char-level,subword-level, word-level的语言模型间的实验对比。
词表分组
自适应输入表示的做法如下:
将词表按照频次分成若干个组,最频繁的组到最不频繁的组依次标记为1,2,……,n
,那么对于第i组而言,它里面的词语的embedding size为d/ki-1,其中k是常数,论文中设置k=4。
那么这样就相当于输入的词语的embedding size不同了,如何解决呢?就是对于每一个词语组,都做一个线性映射,将它们映射到同样的size。如下图所示:
![](http://n4.ikafan.com/assetsj/blank.gif)
实验
在开头也提到过,这篇paper,是我见过的第一篇将subword, char, word level的而语言模型放在一起对比的论文,非常有借鉴意义。
跟之前的方法的对比:
![](http://n4.ikafan.com/assetsj/blank.gif)
不同level的词语输入的对比:
![](http://n4.ikafan.com/assetsj/blank.gif)
不同词频分组的loss:
![](http://n4.ikafan.com/assetsj/blank.gif)
按照上一个词的词频来聚合,当前词的loss分组:
![](http://n4.ikafan.com/assetsj/blank.gif)
可以看到,word-level的语言模型会比char-level, bpe会好,softmax前的矩阵和input embedding矩阵共享参数效果会好。
赞 (0)