[cvpr2015]Improving training of deep neural networks via Singular Value Bounding

introduction

  • 【training method】
  • Singular Value Bounding (SVB):在网络训练过程中,通过将权重矩阵的奇异值限制在1附近,保证权值矩阵的正交性。
  • Bounded Batch Normalization (BBN):用SVB的思想对BN的改进,去除了BN的ill-conditioning(ill-conditioning参考)的风险

算法

  • 样本:
    {xxi,yyi}Ki=1,xxiRNx,yyiRNy { x x i , y y i } i = 1 K , x x i ∈ R N x , y y i ∈ R N y
  • lth l t h 层(共 L L 层)输入特征:
    xxl=f(zl)=f(WWlxxl1+bbl)RNl,WWlRNl×Nl1,bblRNl x x l = f ( z l ) = f ( W W l x x l − 1 + b b l ) ∈ R N l , W W l ∈ R N l × N l − 1 , b b l ∈ R N l
  • 有一些理论研究显示以正交的随机高斯矩阵初始化网络能够带来更好的表现,作者希望尝试在训练过程当中保持权重矩阵的正交性,具体来说:
    Θ=min{WWl,bbl}Ll=1L({xxi,yyi}Ki=1;Θ) Θ = min { W W l , b b l } l = 1 L L ( { x x i , y y i } i = 1 K ; Θ )

    s.t.l{1,..,L},WWlO s . t . ∀ l ∈ { 1 , . . , L } , W W l ∈ O

    (其中 O O 指的是那些行向量(或者列向量)相互正交的矩阵的集合,即文中所提的Stiefel流形
  • 通过在执行SGD的同时将权重矩阵的奇异值限制到 [1/(1+ϵ),(1+ϵ)] [ 1 / ( 1 + ϵ ) , ( 1 + ϵ ) ] 来完成
  • SVB:
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第1张图片

推导与证明

前向
  • 为了简化,先使用两层神经网络 WW2WW1xx W W 2 W W 1 x x (忽略bias),线性激活函数 f(z)=z f ( z ) = z ,损失函数 L=12KKi=1||yyiWW2WW1xxi||22 L = 1 2 K ∑ i = 1 K | | y y i − W W 2 W W 1 x x i | | 2 2
  • 其中:
    ||yyiWW2WW1xxi||22=tr[(yyiWW2WW1xxi)T(yyiWW2WW1xxi)]=tr(yyTiyyi)tr(yyTi(WW2WW1xxi))tr((WW2WW1xxi)Tyyi)+tr[(WW2WW1xxi)T(WW2WW1xxi)]=tr(yyTiyyi)2tr[(WW1xxi)TWW2Tyyi]+tr[(WW1xxi)T(WW2TWW2)(WW1xxi)] | | y y i − W W 2 W W 1 x x i | | 2 2 = t r [ ( y y i − W W 2 W W 1 x x i ) T ( y y i − W W 2 W W 1 x x i ) ] = t r ( y y i T y y i ) − t r ( y y i T ( W W 2 W W 1 x x i ) ) − t r ( ( W W 2 W W 1 x x i ) T y y i ) + t r [ ( W W 2 W W 1 x x i ) T ( W W 2 W W 1 x x i ) ] = t r ( y y i T y y i ) − 2 t r [ ( W W 1 x x i ) T W W 2 T y y i ] + t r [ ( W W 1 x x i ) T ( W W 2 T W W 2 ) ( W W 1 x x i ) ]
  • 上式对 W2W2 W 2 W 2 求偏导(矩阵求导可查表(WIKI))可得:
    02yyi(WW1xxi)T+(WW2T)T(WW1xxi)(WW1xxi)T+(WW2T)T((WW1xxi)T)T((WW1xxi))T=2[yyixxTi+WW2WW1(xxixxTi)]WW1T 0 − 2 y y i ( W W 1 x x i ) T + ( W W 2 T ) T ( W W 1 x x i ) ( W W 1 x x i ) T + ( W W 2 T ) T ( ( W W 1 x x i ) T ) T ( ( W W 1 x x i ) ) T = 2 [ − y y i x x i T + W W 2 W W 1 ( x x i x x i T ) ] W W 1 T
  • 综上可得:
  • LWW2=(CCxyWW2WW1CCxx)WW1T ∂ L ∂ W W 2 = ( C C x y − W W 2 W W 1 C C x x ) W W 1 T

    类似地:
    LWW1=WW2T(CCxyWW2WW1CCxx) ∂ L ∂ W W 1 = W W 2 T ( C C x y − W W 2 W W 1 C C x x )

    其中:
    CCyx=1Ki=1KyyixxTt,CCxx=1Ki=1KxxixxTt C C y x = 1 K ∑ i = 1 K y y i x x t T , C C x x = 1 K ∑ i = 1 K x x i x x t T

    假设输入数据做了白化, ccyx c c y x x x y y 的交叉协方差矩阵(cross-covariance matrix,注意到x是zero-mean,不过y应该不会是zero-mean吧。。。就当近似),而 CCxx=II C C x x = I I
  • 其中,对 ccyx c c y x 作奇异值分解
    CCyx=UUySSyxVVxT C C y x = U U y S S y x V V x T
    ,由奇异值分解的性质,左奇异向量组成的 UUyRNy×Ny U U y ∈ R N y × N y 表示了输出空间 RNy R N y 内的一组基底(文中:represent independent directions of output
    variations),右奇异向量组成的 VVxRNx×Nx V V x ∈ R N x × N x 则表示了输入空间 RNx R N x 的一组基底, SSyxRNy×Nx S S y x ∈ R N y × N x 是包含了排序过的奇异值的对角矩阵
  • 再对 WW1 W W 1 WW2 W W 2 作初始化为:
    WW1=RRSS1VVxT,WW2=RRSS2VVxT W W 1 = R R S S 1 V V x T , W W 2 = R R S S 2 V V x T

    其中, RRRN1×N1 R R ∈ R N 1 × N 1 是一个任意的正交矩阵,并且在训练过程当中保持不变。 SS1 S S 1 SS1 S S 1 都为对角矩阵
    损失函数的偏导即是:
    LWW1=RRSS2T(SSyxSS2SS1)VVxTLWW2=UUy(SSyxSS2SS1)SS1TRRT ∂ L ∂ W W 1 = R R S S 2 T ( S S y x − S S 2 S S 1 ) V V x T ∂ L ∂ W W 2 = U U y ( S S y x − S S 2 S S 1 ) S S 1 T R R T
  • RR R R 给定的时候,能够保证 WW1 W W 1 WW2 W W 2 沿着他们各自的基地变化(
    are optimized along their respective independent
    directions of variations. )
  • sm s m tm t m σm σ m 分别为 SS1 S S 1 SS1 S S 1 SSyx S S y x 的第m个对角元素,那么有:
    Lsm=(σmsmtm)tm,Ltm=(σmsmtm)sm ∂ L ∂ s m = ( σ m − s m t m ) t m , ∂ L ∂ t m = ( σ m − s m t m ) s m

    (忽略常数部分)
    其中, L L 可以和能量函数
    ε(sm,tm)=12(σmsmtm)2 ε ( s m , t m ) = 1 2 ( σ m − s m t m ) 2
    进行类比,
    从这里可以清楚地看出,式
    smtm s m t m

    正朝着 σm σ m 的方向优化。
  • 将上述分析拓展到 L L 层:
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第2张图片
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第3张图片
    其中, WWl=RRlSSRRl+1T W W l = R R l S S R R l + 1 T ,权值矩阵的右奇异向量会作为下一层矩阵的左奇异向量,但是Algorithm 1(SVB)中并未做到这一点
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第4张图片
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第5张图片
    (注: σM σ M 在给定训练数据时已经确定)
    易证, L L 很大的时候,如果所有奇异值 slm s m l 没有落在1附近,则式(10)是不能收敛的。
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第6张图片
  • 作者认为,由于目前的训练方法中没有对权值矩阵奇异值做出限制,因此所有层的权值矩阵能够在任意层和方向上放大或者缩小,导致结果容易陷入局部最小,使得仅仅只有一部分的输入-输出互相关关系(input-output correlations,我认为就是前文的矩阵 CCyx C C y x 中的向量)被使用到。
  • 考虑一个两层模型 WWl+1WWl W W l + 1 W W l ,做奇异值分解,有:
    WWl+1WWl=UUl+1SSl+1VVl+1TUUlSSlVVlT W W l + 1 W W l = U U l + 1 S S l + 1 V V l + 1 T U U l S S l V V l T

    MM=SSl+1VVl+1TUUlSSl M M = S S l + 1 V V l + 1 T U U l S S l
    ,其中该矩阵第 m m m m ′ 列元素可记为:
    MMm,m=sl+1mslm(vvl+1mTuulm) M M m , m ′ = s m l + 1 s m l ( v v m l + 1 T u u m ′ l )

    式中 (vvl+1mTuulm) ( v v m l + 1 T u u m ′ l ) 表示 l l 层和 l+1 l + 1 层之间的基底坐标变换(即表示了第l层ouput space第 m m ′ 个基上的变动与第(l+1)层input space第 m m 个基上的变动的混合)
  • Algorithm 1(SVB)能够通过限制 slm s m l sl+1m s m l + 1 ,保证信号的变动从上一层传向下一层时,各个方向的强度更加适当(我的理解是避免了ill-conditioning的出现)。作者认为没有这些限制以后,一些方向的变动会被过度放大,使得别的方向的变动被缩小很多。
反向
  • [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第7张图片
  • WWi=RRiSSRRi+1T W W i = R R i S S R R i + 1 T ,则有:
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第8张图片
  • 当网络很深的时候,容易发生 Li=l+1sim ∏ i = l + 1 L s m i 的explode or vanish,导致最终的梯度爆炸和梯度消失。而作者的SVB能够避免这一情况的出现
  • (理想的情况下,SVB能够保证各层输入对 L L 的偏导后的范数和error vector xxL x x L L L 的偏导后的范数一致)

与BN的兼容(BBN,Bounded Batch Normalization)

  • BN引入了一个深层神经网络训练的问题:internal covariate shift(因各层输入的分布持续变化导致训练很慢),通过加入BN层能够缓解这一状况 。

  • 对于一层 f(zz)=f(WxWx)RN f ( z z ) = f ( W x W x ) ∈ R N ,如果在激活函数之前加入BN,即 f(BN(zz))=f(BN(WxWx)) f ( B N ( z z ) ) = f ( B N ( W x W x ) ) ,其中:

    BN(zz)=ΓΣ(zzμμ)+ββ B N ( z z ) = Γ Σ ( z z − μ μ ) + β β

    • (zero-mean): μμRNN μ μ ∈ R N 为 层 上 单 个 神 经 元 的 输 出 的 均 值 ( 共 N 个 )
    • (norm->1): ΣRN×N Σ ∈ R N × N 为对角矩阵,对角元素 {1/ςi}Ni=1 { 1 / ς i } i = 1 N 为单个神经元输出的标准差再加一个小常数的倒数
    • (scale): ΓRN×N Γ ∈ R N × N 为包含展缩(scale)元素 {γi}Ni=1 { γ i } i = 1 N 的度角矩阵
    • (shift): ββ β β 为可训练的偏置项
  • 带入 z=Wxz=Wx z = W x z = W x

    BN(xx)=WW˜xx+bb˜s.t.WW˜=ΓΣWWbb˜=ββΓΣμμ B N ( x x ) = W W ~ x x + b b ~ , s . t . W W ~ = Γ Σ W W , b b ~ = β β − Γ Σ μ μ
    ,其中对角矩阵 ΓΣ Γ Σ 有对角元素 {γi/ςi}Ni=1 { γ i / ς i } i = 1 N

  • 由引理1:
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第9张图片
    可知矩阵 Γ Γ Σ Σ 在BN中都能够使信号在层与层的传递中分布发生改变,当对角矩阵 ΓΣ Γ Σ 的对角元素 {γi/ςi}Ni=1 { γ i / ς i } i = 1 N 同时偏离1比较远时,梯度爆炸/梯度弥散很容易出现了。

  • 为了避免这种状况,作者打算将 {γi/ςi}Ni=1 { γ i / ς i } i = 1 N 限制在1附近,但是这样作会抹消BN的一个优点( Γ Γ β β 的存在能够使得BN在特定情况下退化为近似的恒定变换( γiςi γ i ≈ ς i ,即消除BN的作用))
  • BN中,解耦出的 {γi}Ni=1 { γ i } i = 1 N 能够显著地提升网络的适应性,受次启发,作者再引入一个解耦参数 α α ,使得SVB能够与BN算法兼容,即用 {1αγi/ςi}Ni=1 { 1 α γ i / ς i } i = 1 N 替代 {γi/ςi}Ni=1 { γ i / ς i } i = 1 N ,将 {1αγi/ςi}Ni=1 { 1 α γ i / ς i } i = 1 N 在训练过程当中限制到 [1/(1+ϵ),(1+ϵ)] [ 1 / ( 1 + ϵ ) , ( 1 + ϵ ) ]
  • BBN:
    [cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第10张图片

Experiment

作者在:

  • CIFAR 10
  • CIFAR 100
  • ImageNet

数据集上,使用

  • 标准的卷积神经网络
  • ResNets
  • Wide ResNets

对算法SVBBBN做了测试
(作者的实验结果表示当网络较深的时候,BBN确实表现的比普通的BN更加优秀)

[cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第11张图片
[cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第12张图片
[cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第13张图片
[cvpr2015]Improving training of deep neural networks via Singular Value Bounding_第14张图片

你可能感兴趣的:(ML)