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

今天看一篇轻松一点的paper。

GPU上的高效softmax近似中,我们介绍了超大词表时softmax的优化。

今天介绍的则是将类似的思维应用到input embedding层来的方法。原始论文见参考文献[1]。我认为,这篇论文值得看的点有两个:

  1. 自适应的input embedding。
  2. char-level,subword-level, word-level的语言模型间的实验对比。

词表分组

自适应输入表示的做法如下:

将词表按照频次分成若干个组,最频繁的组到最不频繁的组依次标记为1,2,……,n,那么对于第i组而言,它里面的词语的embedding size为d/ki-1,其中k是常数,论文中设置k=4。

那么这样就相当于输入的词语的embedding size不同了,如何解决呢?就是对于每一个词语组,都做一个线性映射,将它们映射到同样的size。如下图所示:

实验

在开头也提到过,这篇paper,是我见过的第一篇将subword, char, word level的而语言模型放在一起对比的论文,非常有借鉴意义。

跟之前的方法的对比:

不同level的词语输入的对比:

不同词频分组的loss:

按照上一个词的词频来聚合,当前词的loss分组:

可以看到,word-level的语言模型会比char-level, bpe会好,softmax前的矩阵和input embedding矩阵共享参数效果会好。

(0)

相关推荐