zoukankan      html  css  js  c++  java
  • ReZero is All You Need: Fast Convergence at Large Depth

    深度学习/神经网络虽然在各个领域取得了很大进展,但经常面临梯度爆炸和梯度消失问题。对于Transformer这种大型网络更是。ReZero是本文提出的用于训练更深神经网络的框架。总的来说,ReZero能够使网络具有更深的层次以及更快的收敛速度。

    ReZero

    研究者们通常通过三项技术解决梯度消失与梯度爆炸问题:1)精心初始化;2)正则化,即BatchNorm或者LayerNorm;3)残差连接。但是这些技术增加了计算开销,同时也具有局限性。其中,一些典型的方法如下表所示:

    其中,F表示任意的神经网络层,Norm表示正则化,比如BatchNorm或者LayerNorm。

    水平有限,理论证明部分就不做讲解,这里简单介绍ReZero的做法。ReZero全称是Residual with Zero initialization,它是对深层残差网络的体系结构的简单更改,有利于动态等距(dynamical isometry)并实现对极深网络的有效训练。它不是在初始化时通过每个非平凡函数(F[W_i])传播信号,而是添加skip连接,然后通过一个可学习的参数缩放该函数,这个参数称为残差权重,并且一开始初始化为0。因此在ReZero中信号传播方式如下:

    [mathbf{x}_{i+1} = mathbf{x}_i + alpha_i F[W_i](mathbf{x}_i) ]

    在初始时,所有的(alpha_i)都等于0,因此网络表示恒等函数,此时直接满足动态等距。然后模型逐渐学习到正确的权重。

    实验

    论文对于全连接层,Transformer和残差网络均进行了实验,并证明ReZero可以更快更深。

    思考

    看起来论文的做法非常简单,对模型的改动也非常小,而且也是模型独立的。如果真的有效,确实是一个比较有用的发现。

    论文地址
    代码地址

  • 相关阅读:
    Idea中SpringBoot热部署搭建
    Redis 集群搭建
    centos7 vsftp搭建
    Centos 7 安装jdk
    Centos7 安装nginx
    Xshell 连接Linux
    python 的mysql 操作
    NIO/BIO
    java基础-3
    java基础-2
  • 原文地址:https://www.cnblogs.com/weilonghu/p/12504480.html
Copyright © 2011-2022 走看看