一文详解DeepMind最新模型SUNDAE,了解迭代去噪模型的前世今生

6494a1fd13ac7fbb403f33e1d9cbc598.gif

©作者 | 中森

单位 | 粤港澳大湾区数字经济研究院

研究方向 | 条件受控下的文本生成

近期笔者在做些去噪语言模型的预训练和迭代生成语言模型的实验和探索,在读到谷歌 DeepMind 实验室的新作圣代 SUNDAE 模型后,便决定写篇迭代生成语言模型的整理和对比。

4343163b3c5d83068bda19a4c240fe93.png


导言:自回归式语言模型建模的缺陷

在 NLP 的文本生成(序列建模)领域,无论是开放域文本生成、主题生成、还是翻译任务,最主流的方式还是自回归式的语言建模。即给定一个序列 我们使用一个神经网络来对序列里的每一个变量进行条件概率建模。而每一个变量的条件概率依赖于当前变量在序列里的所有前置变量,即 << 。无疑,自回归式的语言模型符合人类单向阅读的直觉与思维方式,并在一系列任务里展现出了良好的效果;但它同样有其阿克琉斯之踵。首先,其对序列的单向依赖导致其无法并行,解码速度慢。

其次,当我们试图在解码过程中试图搜索最大似然序列 时,自回归的语言建模要求我们在序列长度为 T,每个变量有|V|种可能的情况下搜索最大可能,其中 V 代表词表大小,一共有 种可能。由于我们显然无法处理天文数字般的计算复杂度,我们只能依赖于贪心搜索,柱搜索等策略近似求解这个解码过程。那么,我们是否有其他方式对语言模型建模,来规避以上两个问题?

ae4414e940595ffb5e114815de0acce2.png


迭代去噪模型的数学假设

如果我们以类似于朴素贝叶斯的方法,假设序列里的每一个变量 都是依赖于某个序列 而互相间条件独立的话,我们可以将 基于序列 的条件概率因式分解为:

8c82895d24e7b779791d3a489ec65637.png

显然,将语言模型以该种方式建模的好处在于:首先,生成序列里的所有词之间条件独立,无需再按次序逐个生成,可以平行解码,极大加速解码过程。其次,因为规避了联合概率的建模,我们不再需要在一个极大的搜索空间里寻找最大似然序列,对于每一个变量,我们只需简单地对其进行 argmax 操作即可。这两个特性完美对应了以上提到的自回归式生成的缺陷。

但是,该方法最大的问题在于建模一个只依赖于输入序列的条件独立的语言模型难度远大于建模一个自回归式的语言模型!

为了缓解这个难题的同时,依然保留条件独立所带来的速度和解码优势,近几年的 NLP 学界的主流做法是引入一系列隐变量且让该隐变量的形式与输出 Y 保持一致。这样子,我们的条件概率建模便等同于在一个模型架构上进行多轮迭代生成。每一次迭代我们所获得的中间过程输出 即为我们所依赖的隐变量。每一步的修正可表示为 ,其中 是我们当前所迭代的步数。

笔者认为,将隐变量和输出Y的形式保持一致的做法实质上将朴素贝叶斯的条件独立假设打破,使得输出 Y 不仅依赖于输入 X,且依赖于生成词间的相互联系。但这种巧妙的建模方式,使我们依然可以保留平行解码的速度优势!

将多轮迭代合并起来讨论的话,我们建模的是以下式子。其中序列 包含 T 个独立变量, 迭代次数 。且如上文所假设,输出序列 Y 里的所有独立变量,互相对输入序列 X 条件独立,即 。所以我们有

92338166aca9992c43914b4105d12fe6.png

其中,如果我们引入时齐马尔可夫假设,认为每轮迭代只与上一轮的隐变量相关的话,上面式子的第一行可以改写为

4c0e8b8869a82eaea5761bc38509987e.png

这样,每一轮的迭代我们只依赖于输入和上一轮的隐状态表达。如果熟悉 transformer 的读者会发现,这种建模方式天然适合于 transformer 里的 encoder+decoder 架构, 并且非常适用于翻译任务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值