abstract
token vocabulary的选择对机器翻译结果的影响比较大
本文研究什么样才是好的词表,并且能不能不通过训练直接找到最优的词表
首先提供一种从信息理论的角度来分析词表的作用
通过optimal transport的思路来找到最佳token词典,并且有一个合适的词表大小,不用训练
降低70%的词表大小,取得0.5bleu提升
相对于BPE-search,搜索时间从384gpu->30gpu,这个的意思有些没看懂,是指vocabularies的时间。
背景:
当所有样本等几率出现的情况下,熵达到最大值(所有可能的事件等概率时不确定性最高)
对于样本等几率分布而言,样本数越大,熵值越大(可能的事件越多,不确定性越高)
1. intoduction
- 用更小的词表来压缩数据,减少熵,可以使语料更容易训练和预测,降低过拟合的风险。
- byte-pair encoding BPE:就是选择最高频的sub-words或者sub-word pieces来做的。
- 因为词表大小也会影响下游任务的表现,如何选择合适的大小呢,只考虑频率也是不妥的,通过实验来做,需要一个一个来做,比较繁琐,导致大家现在都是只选择30k-40k左右。
- 一般来说减低熵和词表大小是矛盾的,词表越大,熵约大。
- 根据语料的熵和词表大小,选择合适的词表,并且可以再polynomial时间内解决。
- muv作为评价指标,muv=熵在词表大小上的微分=diff(熵)/m,m为词表大小的diff。
- muv和下游任务的表现基本上是正相关的,所以优化muv就是优化下游任务了?所以可以直接算出muv最大值,拿到最佳词表大小,就可以拿到一个比较好的下游表现了?
- 通过找到最大的muv来找到词表,并且将其转化成optimal transport problem来做,相当于是从字符的分布到词表的分布中找到最佳转移矩阵optimal transport matrix,最终是通过这个矩阵来产生词表。
2. related work
- 字级别的词典有大小限制,会遇到oov
- 有基于char的,BPE等优化方法,拿到subword-level级别的词表,例如happy可能和happier比较相似,在char-lvel,并且在小的粒度上就没有oov了,还有sentencepiece方法等
- 一般大家只注意到频率,没有注意到词表大小,并且确定词表是一个很耗资源的工作
3. MUV是啥
- muv定义了增加词表大小带来的收益。
- 通过实验证明了muv和bleu的关系,验证了用muv来衡量的正确性。
4 Maximizing MUV via Optimal Transport
4.1 idea
- 词表是离散的,找最佳muv的搜索空间太大。
- 简化:从固定大小的词表中找到最佳muv,固定的步长还是固定的大小?
S:递增整数数列
t:timestep,代表diff t
总结:
固定t,找到最佳muv(找到最大熵的词表)
枚举所有t
- 词表到转移矩阵
不同的转移矩阵有不同的转移cost,目标是找到最小的cost,例如负的熵等。
4.2 optimal transport solution
-
给定词表,要找到最大熵,公式可转化为:
-
合并,减少token太大带来的计算量问题
-
计算转移矩阵的每一行的和和每一列的和干啥?
-
非平衡交叉熵的正则最优化转移问题?
-
可以用Sinkhorn算法解决,每个时间t,产生一个新的词表,根据转移矩阵p计算交叉熵分数,根据熵挑选词表,输出词表。
4.3 implementation
- 根据频率将所有token排序,用的是BPE方法生成的token,例如利用BPE-100K作为候选,其他的也可以,基本可以带来类似的结果。
- 用他们的概率初始化L
- 每个timestep,根据当前的词表及其转移矩阵计算最大的熵。
- 枚举t,选择合适的词表。
- 有词表后,使用贪心算法去对句子进行编码。
- 将句子分裂到char粒度的token
- 和并consecutive tokens到一个,如果他在词表中
- oov token会被分到更细的粒度
5. experience
-
就用VOLT来选词表,效果居然就好了
-
对于低资源的数据集,BPE-1k通过很多实验拿到词表,VOLT通过一次实验,0.5CPU hours,30GPU hours就找到了最优的词表。
-
VOLT是一个绿色的词表化解决方案,通过比较BPE-search:一种从BPE生成的词表中,根据BLEU分数选择最优词表的方法,来证明,VOLT在一个cpu花费少量时间就能算出来0.5h,BPE-search在需要在GPU上花费上百小时。
5.3 讨论
- VOLT生成的词表能达到SOTA结果。
- 领先sentencePiece和wordPiece方法非常多,这两个是分到细粒度词的一种分词方法。
- 各种架构都适应,transformer-big结构,seq2seq结构都适应。
- VOLT能在训练阶段带来加速,主要因为降低embedding参数的大小,对于softmax计算,因为在gpu中已经并行计算了,提升不大。
- VOLT和BPE词表高度重叠,相当于直接可以拿到BPE的结果?
6. 结论
不用训练,直接可能产生词表搜索的方法,利用信息论理论,通过两步优化,离散化目标函数和最优化转移方案来实现。实验表明效果非常有效。
- 构造目标函数
- optimal transport solution解目标函数极值的方法。