选自arXiv
作者:Batchlechner等
机器之心编译
机器之心编辑部
深度学习在许多范畴都取得了显着发展,但与此同时也存在一个问题:深层网络的练习常常面对梯度消失或梯度爆破的阻止,尤其是像 Transformer 这样的大型网络。现在,加州大学圣迭戈分校的研讨者提出了一种名为 ReZero 的神经网络结构改善办法,并运用 ReZero 练习了具有一万层的全衔接网络,以及初次练习了超越 100 层的 Tansformer,作用都非常冷艳。
深度学习在核算机视觉、自然言语处理等范畴取得了许多重大突破。神经网络的表达才能一般跟着其网络深度呈指数添加,这一特性赋予了它很强的泛化才能。可是深层的网络也发生了梯度消失或梯度爆破,以及模型中的信息传递变差等一系列问题。研讨人员运用精心设计的权值初始化办法、BatchNorm 或 LayerNorm 这类标准化技能来缓解以上问题,可是这些技能往往会消耗更多核算资源,或许存在其本身的限制。
近来,来自加州大学圣迭戈分校(UCSD)的研讨者提出一种神经网络结构改善办法「ReZero」,它能够动态地加快优质梯度和恣意深层信号的传达。
论文地址:https://arxiv.org/abs/2003.04887v1
代码地址:https://github.com/majumderb/rezero
这个主意其实分外的简略:ReZero 将一切网络层均初始化为恒等映射。在每一层中,研讨者引入了一个关于输入信号 x 的残差衔接和一个用于调理当时网络层输出 F(x) 的可练习参数α,即:
在刚开始练习的时分将α设置为零。这使得在神经网络练习初期,一切组成改换 F 的参数所对应的梯度均消失了,之后这些参数在练习进程中动态地发生适宜的值。改善的网络结构如下图所示:
图 1:ReZero 结构示意图
ReZero 首要带来了以下两个好处:
1. 能够练习更深层神经网络
学习信号能够有用地在深层神经网络中传递,这使得咱们也能够练习一些之前所无法练习的网络。研讨者运用 ReZero 成功练习了具有一万层的全衔接网络,初次练习了超越 100 层的 Tansformer 而且没有运用学习速率热身和 LayerNorm 这些奇技淫巧。
2. 更快的收敛速度
与带有标准化操作的惯例残差网络比较,ReZero 的收敛速度显着更快。当 ReZero 应用于 Transformer 时,在 enwiki8 言语建模基准上,其收敛速度比一般的 Transformer 快 56%,到达 1.2BPB。当 ReZero 应用于 ResNet,在 CIFAR 10 上可完成 32% 的加快和 85% 的精度。
ReZero (residual with zero initialization)
ReZero 对深度残差网络的结构进行了简略的更改,可促进动态等距(dynamical isometry)并完成对极深网络的有用练习。研讨者在初始阶段没有运用那些非一般函数 F[W_i] 传递信号,而是添加了一个残差衔接并经过初始为零的 L 个可学习参数α_i(作者称其为残差权重)来从头缩放该函数。现在,信号依据以下办法来进行传递:
在初始阶段,该网络表明为恒等函数而且遍及满意动态等距联络。在该架构修正中,即便某一层的 Jacobian 值消失,也能够练习深度网络(正如 ReLU 激活函数或自留意力机制呈现这样的情况)。这一技能还能够在现有的已练习网络上添加新层。
试验成果
更快的深层全衔接网络练习
图 3 展现了练习丢失的演化进程。在一个简略试验中,一个运用了 ReZero 的 32 层网络,拟合练习数据的收敛速度比较其他技能快了 7 到 15 倍。有必要留意一下的是,与惯例的全衔接网络比较,残差衔接在没有额定的标准化层时会下降收敛速度。这可能是由于初始化阶段信号的方差并不独立于网络深度。
跟着深度的添加,ReZero 架构的优势愈加显着。为了验证该架构可用于深度网络练习,研讨者在一台装备 GPU 的笔记本电脑上成功练习了多达 1 万层的全衔接 ReZero 网络,使其在练习数据集上过拟合。
图 3:256 宽度和 ReLU 激活的 32 层全衔接网络四种变体,在练习进程中的穿插熵丢失。
更快的深层 Transformer 练习
研讨者提出,惯例的 Transformer 会按捺深层信号传递,他们在输入序列 x 的 n x d 个 entry 的无穷小改变下评价其改变,取得留意力处理的输入-输出 Jacobian,然后验证了之前的观念。
图 5a 展现了不同深度中运用 Xavier 一致初始化权重的 Transformer 编码层的输入-输出 Jacobian 值。浅层的 Transformer 体现出峰值在零点邻近的单峰散布,能够发现,深层结构中 Jacobian 呈现了很多超出核算精度的峰值。虽然这些散布取决于不同初始化办法,但以上量化的定论在很大范围内是建立的。这些成果与遍及认为的相一致,也便是深层 Transformer 很难练习。
图 5:多个输入-输出 Jacobian 矩阵中对数奇特值λ_io 的直方图。(a)层数分别为 4、12、64 层的 Transformer 编码器网络;(b)是 64 层时练习前和练习中的 ReZero Transformer 编码器网络。深层 Transformer 间隔动态等距很远,即λ_io 1,而 ReZero Transformer 更挨近动态等距,均匀奇特值 λ_io ≈ 1。
能够在多项 NLP 使命中完成 SOTA 的 Transformer 模型一般是小于 24 层的,这项研讨中,最深层模型最多运用了 78 层,而且需求 256 个 GPU 来练习。研讨者又将这一模型扩展至数百个 Transformer 层,而且依然能够在台式机上练习。为了查看该办法是否能够扩展至更深层的 Transformer 模型之上,研讨者将 ReZero Transformer 拓宽到了 64 及 128 层,并与一般 Transformer 进行了比照。
成果显现,收敛之后,12 层的 ReZero Transformer 与惯例的 Transformer 取得了相同的 BPB。也便是说,用 ReZero 来代替 LayerNorm 不会失掉任何模型体现。练习一般的 Transformer 模型会导致收敛困难或练习缓慢。当到达 64 层时,一般的 Transformer 模型即运用了 warm-up 也无法收敛。ReZero Transformer 在α初始化为 1 时发散,然后支撑了α = 0 的初始化理论。深层的 ReZero Transformer 比浅层的 Transformer 体现出了更优越的功能。
表 3:在 enwiki8 测验集上的 Transformers (TX) 比照。
收敛速度比较
挑选 enwiki8 上的言语建模作为基准,由于较难的言语模型是 NLP 使命功能的杰出方针。在试验中,其方针是经过丈量 12 层的 Transformer 在 enwiki8 上到达 1.2 位每字节(BPB)所需的迭代次数,由此来衡量所提出的每种办法的收敛速度。
表二:针对 ReZero 的 12 层 Transformers 归一化后与 enwiki8 验证集上到达 1.2 BPB 时所需的练习迭代比较。
更快的残差网络练习
经过前述部分,看到了 ReZero 的衔接是怎么使深层网络的练习成为可能的,而且这些深层网络都包括会消失的 Jacobian 奇特值,例如 ReLU 激活或自我留意力。可是,假如没有 ReZero 的衔接或许是其他架构的更改,其间某些架构将无法履行练习。在本节中,会将 ReZero 衔接应用于深层残差网络然后进行图像识别。
虽然这些网络并不需求 ReZero 衔接便能够直接进行练习,但经过调查发现,在 CIFAR-10 数据集上练习的 ResNet56 model4(最多 200 个 epochs)的验证差错得到了很显着的提高:从(7.37±0.06)%到(6.46±0.05)%。这一作用是将模型中的一切残差衔接转换为 ReZero 衔接之后得到的。在施行 ReZero 之后,验证差错下降到 15%以下的次数也减少了(32±14)%。虽然现在这些成果只供给了有限的信息,但它们仍指出了 ReZero 衔接具有更广泛的适用性,然后也推进了进一步的研讨。
上手实操
项目地址:
https://github.com/majumderb/rezero
在此供给了自定义的 ReZero Transformer 层(RZTX),比方以下操作将会创立一个 Transformer 编码器:
创立一个 Transformer 解码器:
留意保证 norm 参数保存为 None,避免在 Transformer 中用到 LayerNorm。
本文为机器之心编译,转载请联络本大众号取得授权。
------------------------------------------------