论文浅尝 | LightRNN:存储和计算高效的 RNN

640?wx_fmt=png

链接:https://arxiv.org/pdf/1610.09893.pdf

动机

NLP任务中使用RNN已经被证明是很有用的模型方法。但是传统的RNNNLP中的应用有一个很大的限制:RNN的输出输入Embedding占用的空间太大,比如102410M词表大小的Embedding矩阵就要占掉40GB,这在大部分的GPU上都是不可训练的。本文的目标就是解决Embedding过大和参数过多的问题。

亮点

文章的亮点主要包括:

1. 通过二维Embedding使得参数所占空间和数量大幅减少,训练更快,使得手机甚至嵌入式训练成为可能

2. 由于单词安排的形式语义性表达更丰富,在NLP任务上能够不输于甚至超过一维的情形

概念

  1. 2-ComponentShared Embedding:维度共享的Embedding.

  • 每个word的词向量划分为行向量和列向量,同一行的词共享行向量,同一列也如此

  • 两个Embedding 矩阵的大小减为

640?wx_fmt=png640?wx_fmt=png

方法

⒈ 新的RNN以适应新的Embedding形式

640?wx_fmt=png

相较于传统RNN

a. t时刻的输入拆成两个(行列向量)由于矩阵U在两个小RNN中都一样,也可以看成传统的RNN交替输入行列向量

b. 显然只有都知道当前的行列向量才能预测下一个词,所以预测的行列向量跟输入错开了一个单元。

c. 由于错开,最后一次没得原始输入,需要将最后一个预测出来的行向量接过来

640?wx_fmt=png

行列向量的softmax.最终的概率为二者相乘.

Bootstrap for Word Allocation,重新分配词表中单词的位置

a.随机分配词表中单词的位置

b.训练模型得到embedding.

c. 调整单词的位置,使得最小化训练集中所有句子的NegativeLog Likelihood.

640?wx_fmt=png

其中lr(w,r(w))表示单词w安排在r(w)行时出现在位置r的概率. lc则是列. 现在将单词w换到其他行或者列中,得到lr(w,i), 再重新计算此NLL,比如:

位置

1

2

3

1

I

you

dislike

2

NUAA

PKU

love

3

hate

we

ZJU

 

     对于I love ZJUZJU对应的lr(w,r(w))即为-log(3,3),其中(3,3)表示第三行出现在句子的第三个位置的概率。现在将ZJU换到第二行, 对应的lr(w,2)= -log(2,3).其实也就是改为计算I Love Love这句话的概率,而任意的概率lr(w,i)lc(w,j)已经在RNN模型的softmax中计算过了。直接带入即可.

640?wx_fmt=png

最后,因为ZJU占据了Love的位置,Love也要找下一个位置,所以这个问题是所有的单词全部重新排列,选取最小的NLL。这是个二分图的最小权值匹配问题.有现成的算法可以计算.

640?wx_fmt=png


实验

                                                                            

. 比较的指标:PPL

T是预料中的所有token数量。

640?wx_fmt=png

. 各数据集的情况:(token数和词典大小)

640?wx_fmt=png

     (3) BillonW数据集的结果:

640?wx_fmt=png


可以看出在BillionW中不仅超越了stateof art的模型性能,而且大幅减少了训练参数的数量和空间大小.

总结                                                  

本文提出了一种可以大幅减少RNNNLP中应用时的Embedding矩阵的大小和数量,同时又不削减性能的方法。

 

论文笔记整理:吴杨,浙江大学硕士,研究方向为知识图谱、自然语言处理。



OpenKG.CN


中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

640?wx_fmt=jpeg

点击阅读原文,进入 OpenKG 博客。

猜你喜欢

转载自blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/85270975
RNN