正则化是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法。
在没有添加正则化项前,我们的损失函数是: J ( θ ; x , y ) J(\theta;x,y) J(θ;x,y)。
而添加正则化后,相当于对损失函数引入了惩罚(约束条件),损失函数变为: J ^ ( θ ; x , y ) = J ( θ ; x , y ) + β Ω ( θ ) \hat J(\theta;x,y)=J(\theta;x,y)+\beta Ω(θ) J^(θ;x,y)=J(θ;x,y)+βΩ(θ)。
其中:
L 2 L_2 L2正则化:
L 2 L_2 L2正则化又称为岭回归或者权重衰减,其表达式为: Ω ( θ ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 Ω(θ)={1\over 2}||w||_2^2 Ω(θ)=21∣∣w∣∣22,引入 L 2 L_2 L2正则化后,我们的损失函数变为:
J ^ ( θ ; x , y ) = J ( θ ; x , y ) + β 2 ∣ ∣ w ∣ ∣ 2 2 \hat J(\theta;x,y)=J(\theta;x,y)+ {\beta\over 2}||w||_2^2 J^(θ;x,y)=J(θ;x,y)+2β∣∣w∣∣22
损失函数的梯度计算为:
▽ w J ^ = ▽ w J + β w ▽_w\hat J=▽_wJ+\beta w ▽wJ^=▽wJ+βw
对于 w w w的更新则为:
w = ( 1 − α β ) w − α ▽ w J w=(1-\alpha \beta)w-\alpha▽_wJ w=(1−αβ)w−α▽wJ
其中 α \alpha α为学习率,是超参数。
L 1 L_1 L1正则化:
L 2 L_2 L2正则化表达式为: Ω ( θ ) = ∣ ∣ w ∣ ∣ 1 Ω(θ)=||w||_1 Ω(θ)=∣∣w∣∣1,引入 L 2 L_2 L2正则化后,我们的损失函数变为:
J ^ ( θ ; x , y ) = J ( θ ; x , y ) + β ∣ ∣ w ∣ ∣ 1 \hat J(\theta;x,y)=J(\theta;x,y)+ \beta ||w||_1 J^(θ;x,y)=J(θ;x,y)+β∣∣w∣∣1
L 1 L_1 L1正则化与 L 2 L_2 L2正则化:
dropout相当于是向模型注入噪声,不过这种噪声是注入到网络的隐藏层单元。
dropout是指在训练期间,一定数量的层输出会被随机丢弃。而在测试阶段,所有的单元都存在。
通过引入dropout增加了网络的稀疏性。
dropout有效地原因:
数据增强指为我们的数据集生成新的训练示例的过程。更多的训练数据意味着更低的模型方差,也就是更低的泛化误差。
数据增强的方法:图像翻转、裁剪、旋转、平移、图像颜色修改、图像混合等
提前停止指当训练误差不再减小但验证误差开始上升时停止训练的过程。
本质上是注入噪声。它不是将每个隐藏单元与一个随机值相乘,而是将它们与小批量中所有隐藏单元的偏差相乘。它还在每一步从每个隐藏单元中减去一个随机值(小批量的平均值)。这两种“噪音”都会使模型更加健壮并减少其方差
引入激活函数的主要原因是让原本线性的模型变为非线性,使得模型能够处理线性不可分的问题,如异或问题。
由于之前已经写过常见的激活函数(relu,tanh,sigmoid),这篇文章就说点新的补充内容。
什么是死亡Relu:
在训练过程中,如果参数在一次不恰当的更新后,第一个隐藏层中的某个Relu神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是0,以后的训练过程中永远不能被激活。
避免死亡Relu的方法:
R e l u l e a k y = { x x > 0 λ x x ≤ 0 R e l u p a r a m e t i c = { x x > 0 α x x ≤ 0 \begin{aligned}Relu_{leaky}={\begin{cases}x&x>0\\\lambda x& x≤0\end{cases}} &\qquad&Relu_{parametic}=\begin{cases}x&x > 0\\\alpha x &x≤0\end{cases} \end{aligned} Reluleaky={xλxx>0x≤0Reluparametic={xαxx>0x≤0
作用:进行特征选择,降低特征的数量,从而减少参数数量。
卷积与池化:卷积减少连接的数量,池化减少参数的数量。
1×1卷积:1x1卷积实际上是对每个像素点,在不同的channels上进行线性组合且保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能。
最大池化(max pooling)与平均池化(average pooling)
卷积操作实现了高维特征向低维特征的转换,而转置卷积则实现了将低维特征映射到高维特征。
具体来说,假设 x x x是一个高维张量, z z z是一个低维张量,那么可以用仿射变换来实现高维到低维的映射。
z = W x z=Wx z=Wx
而我们很容易地通过转置 W W W来实现低维到高维的映射。
x = W T z x=W^Tz x=WTz
卷积操作可以写成仿射变化的形式,例如:
z = w ⊗ x = [ w 1 w 2 w 3 0 0 0 w 1 w 2 w 3 0 0 0 w 1 w 2 w 3 ] x = C x \begin{aligned}z&=w⊗x \\&=\begin{bmatrix} w_1&w_2&w_3&0&0\\ 0&w_1&w_2&w_3&0 \\0&0&w_1&w_2&w_3\end{bmatrix}x \\&=Cx\end{aligned} z=w⊗x=⎣⎡w100w2w10w3w2w10w3w200w3⎦⎤x=Cx
其中:
那么转置卷积就有:
z = C T x = [ w 1 0 0 w 2 w 1 0 w 3 w 2 w 1 0 w 3 w 2 0 0 w 3 ] x = r o t 180 ( w ) ⊗ ^ x \begin{aligned}z&=C^Tx \\&=\begin{bmatrix} w_1&0&0\\ w_2&w_1&0 \\w_3&w_2&w_1 \\0&w_3&w_2 \\0&0&w_3\end{bmatrix}x \\&=rot180(w)\hat⊗x\end{aligned} z=CTx=⎣⎢⎢⎢⎢⎡w1w2w3000w1w2w3000w1w2w3⎦⎥⎥⎥⎥⎤x=rot180(w)⊗^x
转置卷积的示意图:
定义:
空洞卷积是一种不增加参数数量,同时增加输出单元感受野的一种方法,也称为膨胀卷积。
实现:
空洞卷积通过给卷积核插入“空洞”来变相地增加其大小。如果在卷积核的每两个元素之间插入 D − 1 D-1 D−1个空洞,则卷积核的有效大小为:
K ^ = K + ( K − 1 ) × ( D − 1 ) \hat K= K+(K-1)×(D-1) K^=K+(K−1)×(D−1)
其中 D D D称为膨胀率,当 D = 1 D=1 D=1时卷积核为普通卷积核。