lightRNN论文阅读笔记

LightRNN通过共享行向量和列向量减少词向量表示,降低模型大小和训练复杂度,实现在One Billion Word Benchmark上保持良好性能的同时,模型压缩40-100倍,训练速度提升2倍。
摘要由CSDN通过智能技术生成

LightRNN Memory and Computation-Efficient Recurrent Neural Networks 论文阅读笔记

 

论文思想:让词语共享行向量与列向量,使实际表示词使用的向量的个数明显减少,从而参数与训练复杂度都减少,达到压缩模型和加速训练的目的。而在One Billion Word Benchmark上面测试结果表明,压缩后的模型的PPL仍表现良好。

 

摘要:RNN在NLP的许多任务上面都取得了state-of-the-art的结果。然而,当词表很大的时候,RNN的模型会变得很大同时训练会变得很低效。在这篇文章中,我们提出了一个新颖的技术来表示词向量。我们将词分配到一个词表中,词表的每行与一个向量相关联,词表的每列与一个向量相关联。依靠在词表中的位置,一个词由行向量与列向量两个部分组成。因为每一行的词共享同一个行向量,每一列的词共享一个列向量,我们仅仅需要2√(|V|)个向量表示|V|个不同的词语,这比现存方法需要|V|个向量要少得多。基于两个组成共享的词嵌入,我们设计了一个新的RNN算法并且在多个基准数据集上面做了测试。结果表明我们的算法能够明显地减小模型的尺寸,增加训练的速度,并且没有损失准确率。相当不错地,在One-Billion-Word benchmark的数据集上,我们的模型取得了之前语言模型差不多的效果,同时将模型缩小了40-100倍,并且在训练速度上面提升了两倍。我们命名我们提出的模型为LightRNN,以此反映出它很小的模型大小以及很高的训练速度。

 

1 引言笔记

         RNN在语言模型中的应用很成功,但是当词表变得很大的时候,参数的数量会变得巨大。一般来说,基于RNN的语言模型,首先要将词语的one-hot映射为词向量,在输出层的时候也对应着输出词向量,每个词的输出词向量要与最后一层隐层做点乘。

        基于这一点,本文提出一个2-Component shared embedding。将词分配到一个二维的词表里面。词表所有相同行的词共享一个行向量,所有相同列的词共享一个列向量。而一个词由其对应的行向量与列向量联合表示。这样,我们就仅需要2√(|V|)个向量来表示词表中的所有的词。

一个重要的技术挑战就在于怎么合理地将词分配到词表中。这分为三步:

       ①  首先随机将词分配到词表中,然后训练LightRNN模型。

       ②  固定训练好的向量,然后重新对词进行分配,从而最小化训练误差,这是一个图论中最小权最佳匹配的问题,并且可以有效地被解决。

       ③  重复第二步直到满足停止机制的条件。

       我们用LightRNN在几个基准数据集上面进行语言模型的任务。LightRNN可以达到目前最好的或者能与最好的相媲美的效果,并且将模型的大小降了100倍,并且将训练过程的速度提升了2倍。

       训练获得一个压缩的模型是很有必要的。

 

自己理解:

        这里的输入词向量,在2003年的Bengio的结构里,直接是有一个叫做输入词向量的巨大的矩阵C, C的大小是|V|*m,其中|V|为词典的词语个数,m为词向量的维度。而在2010年Milkolov的论文里面,则没有显示地定义出来。不过我们可以观察到最开始用one-hot表示的词向量,与隐层之间是全连接。这个全连接的权重就是input embeddings。而在两个模型中,最后一层隐层与输出层之间的权重,就是output embeddings,因为输出层词表中的每一个单词,是会单独对应一个长度为隐层节点个数的向量的。

        词表的大致样子比较好理解。就是将词分配到一个二维的表格里面。然后行相同的词对应同一个行向量,列相同的词对应同一个列向量。然后一个词就由其对应的行向量与列向量这两个向量联合表示。这样能保证每个词的表示是唯一的。这样所有行向量的个数与列向量的个数都分别为√(|V|),就可以用2√(|V|)个向量表示所有的词了。

        关于对词表进行重新分配,大致的过程是先初始话,然后训练LightRNN直至收敛。收敛后再用文中提出的方法进行一个重分配。重复前面的步骤大概4-5次,效果的提升已经不大了。然后在重分配的时候,行向量与列向量是固定不动的,动的只有词语。也就是说,如果一个词语开始在(I,j)的位置,那开始这个词语是用行向量集中第i个行向量与列向量集中第j个列向量联合表示的。经过重分配

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值