关于解码词典过大的问题(Large Target Vocabulary, LTV)

针对encoder-docoder模型,在解码时,根据每一步解码时词典中对应的词的概率来选择哪一个词作为当前词的输出。即softmax层。

\LARGE a=Wh_{_t}+b

\LARGE a=(a_{1},a_{2},.....a_{T})

\LARGE p(a_{i})=\frac{exp(a_{i})}{\sum\limits_{k=1}^{T}exp(a_k)}

其中W的维度hidden_size*T,hidden_size表示RNN单元隐藏状态(输出)的维度,T表示词典的大小。其计算复杂度随词典的大小T的增加而增加,当词典过大时,计算复杂度大,需要内存也比较大。softmax层是最大的计算瓶颈。

为了减少内存的需求,T不能过大。下面介绍几种方法:

1、 强制限制T的大小,简单暴力,对于低频词,用<UNK>代替。当解码遇到<UNK>时,根据Attention机制,通过CopyNet或PointerNetwork从原文本中复制对应的词,常见的翻译模型就是这样处理的。

2、On Using Very Large Target Vocabulary for Neural Machine Translation 一文中介绍了一种基于重要度采样的方法,每次只使用目标词汇表的一部分来计算归一化分母,大大降低了每次参数更新的计算量,并且每次只更新目标词汇和采样词汇。

3、Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond 一文介绍了一种更简单的减少计算量的方法。每个mini-batch时

4、word2vec中用到的huffman树和负采样技术。

目标词汇 = 原文本词汇 + 高频词汇

const = count(原文本词汇) + count(高频词汇)

2和3的不同在于:2是翻译模型,原文本和目标文本具有不同的词典,3是摘要模型,原文本和目标文本具有相同的词典。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值