1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > byte比较_浅谈Byte-Level BPE

byte比较_浅谈Byte-Level BPE

时间:2020-12-05 21:16:21

相关推荐

byte比较_浅谈Byte-Level BPE

在12月5日的《Neural Machine Translation with Byte-Level Subwords》中,作者提出了一种新的subword算法,称之为BBPE,Byte-level BPE。下文会大概介绍这种算法。

为了限制vocabulary的大小,现在的许多模型会采取subwords,甚至是character-based system来构建vocabulary。然而,在一些比较复杂,或者是字符比较多的语言(例如中文,日文)中,一些比较罕见的字会占用vocabulary的一定空间,影响其的表现。作为一种替代方法,由 Wang et al. () 提出的基于bytes的算法能很好的替代以往基于characters的算法。

Byte-Level Text Representation

在UTF-8编码中,每一个字符会被encode到1-4长度大小的bytes中,这为我们提供了用bytes sequence,而不是character sequence来表达文本的可能性。UTF-8编码中大概有138000个unicode字符,如果直接使用bytes来代表一段text的话,sequence的长度将会是character sequence的数倍大小(最多4倍)。因此,Wang et al.() 将一个原始的byte sequence分割成byte-level subwords,可以说是byte n-grams。他们使用 BPE算法,提取出top k 个出现次数最多的n-grams,k在此代表的是最后输出的vocabulary size。接下来的这幅图举例说明了分割的过程。

本图来自Wang et al.()论文

Byte-level BPE (BBPE) 字符可能是某个character的一部分,也有可能是一些完整的character或者不完整character的组合。总的来说这有两个后果,一个是当我们需要去确认字符的边界的时候,会引起歧义。作者为此增加了一个模块,通过运用每个BBPE 字符的上下文信息来解决歧义,并且确认字符边界。其次,一个由BBPE字符构成的sequence可能并不是一句合规的句子。在decoding时,作者使用了一种动态规划算法来保证输出valid的句子。

Qualitative comparison with BPE

BBPE提供了一种巧妙,适应性强的方法来解码一些罕见的字符,而不是直接把它们include进此表。这种方法解放了词表的部分空间,可以用来容纳别的更加常见的字符。因此每个BBPE字符的分布概率相比BPE会更平均。在BPE中,分布概率最低的15%-20%的BPE字符是在实际使用中非常罕见的,但是BBPE则不会出现这个问题。在日语/多语言来源中,有大概30%-50%的BBPE字符实际上代表了不完整的character。当来源是德语/英语的时候,这个比例降到了5%左右。

Noisy Character Sets

作者在一个比较noisy的英语-德语训练语料库上进行测试,这个语料库一共有3400个不同的单词,但是两种语言各自只有不到30个字母。在使用BPE算法的时候,那些比较罕见的单词会占据BPE vocabulary很大的一部分空间,然而BBPE却不会。这两种算法在取得近似的BLEU分数时,各自的词库大小分别为2000或者4000(BBPE)以及16000或者32000(BPE),而且不得不提一下BBPE based模型比起BPE based小至少15%。

Character-Rich Languages

Wang et al. 在一个日语-英语数据集上进行了测试,这个数据集一共有7900个日语字符,其中99.99%的token可以被最频繁的2400个日语字符所替代。他们基于此训练了一个4000 BBPE 词表大小的神经翻译模型,并且发现BBPE在表现上不输于BPE,甚至在有些条件(模型的大小)下超过BPE(BBPE取得19.6的BLEU score,BPE则是19.1)。

Multilingual NMT

作者还在另一个由58种语言构成,包含了10.8K别的书写系统的字符的多语言-英语的数据集上进行了测试。这些语言中的字符并不互相共用,但是他们的byte n-gram是可以互相共用的。因此在一个多语种的神经翻译模型中,使用BBPE可以最大化的实现词表共享。这也为BBPE base模型在BLEU分数上带来了一些提升。(BBPE的BLEU分数为29.9,BPE为29.6)

Summary

当处理noisy的字符集合,或者character-based语言,或者多语种神经翻译的时候,BBPE可以很好的取代BPE。BBPE based模型可能比BPE based模型表现的更好,以及更加小巧。然而,BBPE sequence比起BPE来说略长,这也导致了更长的训练/推理时间。在一些character based模型的表现胜过BPE based模型的setting中,BBPE模型的表现与character based更接近,但是效率更高。

Wang et al. () : 《Neural Machine Translation with Byte-Level Subwords》,Changhan Wang, Kyunghyun Cho, and Jiatao Gu

另:封面图版权归本人所有

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。