458 Chapter 13. 神经机器翻译模型训练 肖桐 朱靖波
13.5 知识蒸馏
理想的机器翻译系统应该是品质好、速度快、存储占用少。不过,为了追求更好
的翻译品质,往往需要更大的模型,但是相应的翻译速度会降低,模型的体积会变
大。在很多场景下,这样的模型无法直接使用。比如,Transformer-Big 等“大”模型
通常在专用服务器上运行,在手机等受限环境下仍很难应用。
但是,直接训练“小”模型的效果往往并不理想,其翻译品质与“大”模型相比
仍有比较明显的差距。既然直接训练小模型无法达到很好的效果,一种有趣的想法
是把“大”模型的知识传递给“小”模型。这类似于,教小孩子学习数学,不是请一
个权威数学家(即数据中的标准答案)进行教学,而是会请一个小学数学教师(即
“大”模型)来教小孩子。这就是知识蒸馏的基本思想。
13.5.1 什么是知识蒸馏
通常,知识蒸馏可以被看作是一种知识迁移的手段
[549]
。如果把“大”模型的知
识迁移到“小”模型,这种方法的直接结果就是模型压缩(Model Compression)。当
然,理论上也可以把“小”模型的知识迁移到“大”模型,比如,将迁移后得到的
“大”模型作为初始状态,之后继续训练该模型,以期望取得加速收敛的效果。不过,
在实践中更多是使用“大”模型到“小”模型的迁移,这也是本节讨论的重点。
知识蒸馏基于两个假设:
•“知识”在模型间是可迁移的。也就是说,一个模型中蕴含的规律可以被另一
个模型使用。最典型的例子就是预训练语言模型(见第九章)。使用单语数据学
习到的表示模型,在双语的翻译任务中仍然可以发挥很好的作用。也就是,把
在单语语言模型学习到的知识迁移到双语翻译过程中对句子的表示任务上。
• 模型所蕴含的“知识”比原始数据中的“知识”更容易被学习到。比如,机器
翻译中大量使用的回译(伪数据)方法,就把模型的输出作为数据让系统进行
学习。
这里所说的第二个假设对应了机器学习中的一大类问题
——
学习难度(Learning
Difficulty)。所谓难度是指:在给定一个模型的情况下,需要花费多少代价对目标任
务进行学习。如果目标任务很简单,同时模型与任务很匹配,那学习难度就会降低。
如果目标任务很复杂,同时模型与其匹配程度很低,那学习难度就会很大。在自然语
言处理任务中,这个问题的一种表现是:在质量很高的数据中学习的模型的翻译质
量可能仍然很差。即使训练数据是完美的,但是模型仍然无法做到完美的学习。这可
能是因为建模的不合理,导致模型无法描述目标任务中复杂的规律。在机器翻译中
这个问题体现的尤为明显。比如,在机器翻译系统输出的 n-best 结果中挑选最好的
译文(称为 Oracle)作为训练样本让系统重新学习,系统仍然达不到 Oracle 的水平。
知识蒸馏本身也体现了一种“自学习”的思想。即利用模型(自己)的预测来教
模型(自己)。这样既保证了知识可以向更轻量的模型迁移,同时也避免了模型从原