深度学习中的归一化(normalization)和正则化(regularization)

本小妞迷上赌 提交于 2020-01-12 22:02:50

  机器学习的学习过程基于概率和统计学,学习到的知识能用于其它数据的一个基本假设是独立同分布(IID),因此把数据变成同分布是很有必要的。

1. 权重归一化

1.1 作用

  权重归一化不归一化特征,而是归一化权重。假设卷积核的向量形式是w\vec w,感受野的向量形式是x\vec x,偏置为bb。一个神经元的输出可以表示为:
y=ϕ(wx+b).y = \phi (\vec w \cdot \vec x + b).

  把w\vec w写成w=gvv\vec w = \frac{g}{||\vec v||} \cdot v。因为wg=e\frac{\vec w}{g} = \vec e,所以w=g||\vec w|| = g。这样,权值向量w\vec w的模长就是gg,方向就是vv\frac{\vec v}{|| \vec v ||}。模长和方向不再耦合,利于加速收敛。

1.2 梯度

  训练的过程中要更新ggv\vec v,所以要求损失函数对它们的导数。
  损失函数关于gg的导数:
gL=wLwLvv.\nabla_{g} L = \nabla_{w} L \cdot \frac{\nabla_{w}L \cdot \vec v}{||\vec v||}.

  损失函数关于v\vec v的导数:
vL=wLwv=wLg(vvvvv2)=wLg(1vvv2vv)=wLg1vwLgvvvv2=gvwLggLv2v \begin{aligned} \nabla_{v}L &= \nabla_{w} L \cdot \frac{\partial w}{\partial \vec v} \\ &= \nabla_{w} L \cdot g \cdot (\frac{\vec v' ||\vec v|| - \vec v||\vec v||'}{||\vec v||^2}) \\ &= \nabla_{w} L \cdot g(\frac{1}{||\vec v||} - \frac{\vec v}{||\vec v||^2} \cdot \frac{\vec v}{||\vec v||}) \\ &= \nabla_{w} L \cdot g \cdot \frac{1}{||\vec v||} - \nabla_{w} L \cdot g \cdot \frac{\vec v}{||\vec v||} \cdot \frac{\vec v}{||\vec v||^2} \\ &= \frac{g}{||\vec v||} \cdot \nabla_{w} L - \frac{g \cdot \nabla_{g}L}{||\vec v||^2} \cdot \vec v \end{aligned}

2. 特征归一化

  特征归一化方法有BNLNINGNSN

2.1 归一化方法

  特征归一化就是:

  1. 求输入数据input_datainput\_data的均值μ\mu、方差σ\sigma
    {μi=1mkSixk,σi=1mkSi(xkμi)2+ϵ. \begin{cases} \mu_i = \frac{1}{m} \sum_{k \in S_i} x_k,\\ \sigma_i = \sqrt { \frac{1}{m} \sum_{k \in S_i} (x_k - \mu _i)^2 + \epsilon}. \end{cases}
      其中ϵ\epsilon是一个值较小的常量,SiS_{i}是用于计算均值和标准差的像素集合,mm是集合的大小。

  2. 把input_data通过线性变换input_dataμσ\frac{input\_data - \mu }{\sigma }化为均值为0、方差为1的标准正态分布:
    x^i=1σi(xiμi).\hat x_{i} = \frac{1}{\sigma_i} (x_i - \mu_i).

  3. 使用可学习的参数γ\gammaβ\beta,把input_datainput\_data化为均值为β\beta、方差为γ2\gamma^2的正态分布:
    yi=γx^i+β.y_{i}=\gamma \hat{x}_{i}+\beta.
      均值和方差分别是:
    {E(yi)=γE(x^i)+β=β,D(yi)=γ2D(x^i)=γ2. \begin{cases} E( y_{i}) = \gamma E(\hat{x}_{i}) +\beta = \beta,\\ D\left ( y_{i} \right ) = \gamma ^{2}D\left ( \hat{x}_{i} \right ) = \gamma ^{2}. \end{cases}
      所以归一化后的特征yN(β,γ2).y \sim N\left ( \beta ,\gamma ^{2} \right ).

2.2 归一化区别

  四种特征归一化实现方法的区别在于SiS_{i}不同,蓝色的特征SiS_{i}被归一化为相同的均值和方差:
在这里插入图片描述

  1. BN中Si={kkC=iC}S_{i}=\left \{ k\mid k_{C}=i_{C} \right \}:C坐标相同的像素在一块归一化。
  2. LN中Si={kkN=iN}S_{i} = \left \{ k \mid k_{N}=i_{N} \right \}:N坐标相同的像素在一块归一化。
  3. IN中Si={kkN=iN,kC=iC}S_{i}=\left \{ k\mid k_{N}=i_{N},k_{C}=i_{C} \right \}:N坐标和C坐标都相同的像素在一块归一化。
  4. GN中Si={kkN=iN,kCC/G=iCC/G}S_{i} = \left \{ k\mid k_{N}=i_{N},\left \lfloor \frac{k_{C}}{C/G} \right \rfloor = \left \lfloor \frac{i_{C}}{C/G} \right \rfloor\right \}:N坐标相同的像素分为G组,组内的像素在一块归一化。
      组数G是一个预定义的超参数。CG\frac{C}{G}是每组的通道数。\left \lfloor \cdot \right \rfloor代表向下取整。最右的图中C=6C=6G=2G=2kCk_{C}{0,1,2,3,4,5}\left \{ 0,1,2,3,4,5 \right \}中取值时kCC/G\left \lfloor \frac{k_{C}}{C/G} \right \rfloor的值为{0,0,0,1,1,1}\left \{ 0,0,0,1,1,1 \right \}iCi_{C}同理,因此把NN坐标相同的像素分为2(G)2(G)组,每组的通道数是3(C/G)3(C/G)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!