偏差用于衡量Train set error,方差用于衡量Train set error与Dev set error的差值。
使用L2正则化逻辑回归模型,表达式修正为:
J ( ω , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∣ ∣ ω ∣ ∣ 2 2 J(omega,b)=frac{1}{m}sum_{i=1}^m L(hat y(i),y(i))+frac{lambda}{2m}||omega||^2_2 J(ω,b)=m1i=1∑mL(y^(i),y(i))+2mλ∣∣ω∣∣22
∣ ∣ ω ∣ ∣ 2 2 = ∑ j = 1 n x ω j 2 = ω T ω ||omega||^2_2=sum_{j=1}^{n_{x}}omega^2_j=omega^Tomega ∣∣ω∣∣22=j=1∑nxωj2=ωTω
其中 λ lambda λ就是正则化参数(超参数的一种)。
也可以对b进行正则化。但是一般w为高维参数矢量,而b只是一个常数。相比较来说,参数很大程度上由w决定,改变b值对整体模型影响较小。所以为了简便,一般忽略对b的正则化。
在深度学习模型中,L2 regularization的表达式为:
J ( ω [ 1 ] , b [ 1 ] , … , ω [ L ] , b [ L ] ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∑ l = 1 L ∣ ∣ ω [ l ] ∣ ∣ 2 J(omega^{[1]},b^{[1]},…,omega^{[L]},b^{[L]})=frac{1}{m}sum_{i=1}^m L(hat y(i),y(i))+frac{lambda}{2m}sum_{l=1}^L||omega^{[l]}||^2 J(ω[1],b[1],…,ω[L],b[L])=m1i=1∑mL(y^(i),y(i))+2mλl=1∑L∣∣ω[l]∣∣2
∣ ∣ ω [ l ] ∣ ∣ 2 = ∑ i = 1 n [ l ] ∑ j = 1 n [ l − 1 ] ( ω i j [ l ] ) 2 ||omega^{[l]}||^2=sum_{i=1}^{n^{[l]}}sum_{j=1}^{n^{[l-1]}}(omega^{[l]}_{ij})^2 ∣∣ω[l]∣∣2=i=1∑n[l]j=1∑n[l−1](ωij[l])2
其中 ∣ ∣ ω [ l ] ∣ ∣ 2 ||omega^{[l]}||^2 ∣∣ω[l]∣∣2称为弗罗贝尼乌斯(Frobenius)范数。
使用L2 regularization,当λ很大时,w[l]≈0,意为将某些神经元权重趋于0,给忽略掉了,问题就从high variance变成了high bias了。
另外,假设激活函数是tanh函数。tanh函数的特点是在z接近零的区域,函数近似是线性的,而当|z|很大的时候,函数非线性且变化缓慢。当使用正则化,λ较大,即对权重w[l]的惩罚较大,w[l]减小。因为z[l]=w[l]a[l]+b[l]。当w[l]减小的时候,z[l]也会减小。则此时的z[l]分布在tanh函数的近似线性区域。那么这个神经元起的作用就相当于是线性回归(linear regression)。如果每个神经元对应的权重w[l]都比较小,那么整个神经网络模型相当于是多个linear regression的组合,即可看成一个linear network。得到的分类超平面就会比较简单,不会出现过拟合现象。
除了L2 regularization和dropout regularization之外,还有其它减少过拟合的方法。
1.增加训练样本数量。
例如图片识别问题中,可以对已有的图片进行水平翻转、垂直翻转、任意角度旋转、缩放或扩大等等。
2.early stopping。
一个神经网络模型随着迭代训练次数增加,train set error一般是单调减小的,而dev set error 先减小,之后又增大。 也就是说训练次数过多时,模型会对训练样本拟合的越来越好,但是对验证集拟合效果逐渐变差,即发生了过拟合。因此,迭代训练次数不是越多越好,可以通过train set error和dev set error随着迭代次数的变化趋势,选择合适的迭代次数,即early stopping。
梯度消失和梯度爆炸(Vanishing and Exploding gradients):当训练一个 层数非常多的神经网络时,计算得到的梯度可能非常小或非常大,甚至是指数级别的减小或增大。这样会让训练过程变得非常困难。
*例如,假设一个多层的每层只包含两个神经元的深度神经网络模型,如下图所示:为了简化复杂度,便于分析,我们令各层的激活函数为线性函数,即 g ( Z ) = Z g(Z)=Z g(Z)=Z。且忽略各层常数项b的影响,令b全部为零。那么,该网络的预测输出 Y ^ hat Y Y^为:
Y ^ = W [ L ] W [ L − 1 ] W [ L − 2 ] … W [ 3 ] W [ 2 ] W [ 1 ] X hat Y=W^{[L]}W^{[L-1]}W^{[L-2]}…W^{[3]}W^{[2]}W^{[1]}X Y^=W[L]W[L−1]W[L−2]…W[3]W[2]W[1]X
也就是说,如果各层权重W[l]都大于1或者都小于1,那么各层激活函数的输出将随着层数l的增加,呈指数型增大或减小。当层数很大时,出现数值爆炸或消失。
梯度检验用于检查验证反向传播过程中梯度下降算法是否正确。
梯度检查首先要做的是分别将 W [ 1 ] , b [ 1 ] , ⋯ , W [ L ] , b [ L ] W^{[1]},b^{[1]},⋯,W^{[L]},b^{[L]} W[1],b[1],⋯,W[L],b[L]这些矩阵构造成一维向量,然后将这些一维向量组合起来构成一个更大的一维向量θ。这样cost function J ( W [ 1 ] , b [ 1 ] , ⋯ , W [ L ] , b [ L ] ) J(W^{[1]},b^{[1]},⋯,W^{[L]},b^{[L]}) J(W[1],b[1],⋯,W[L],b[L])就可以表示成 J ( θ ) J(θ) J(θ)。
然后将反向传播过程通过梯度下降算法得到的 d W [ 1 ] , d b [ 1 ] , ⋯ , d W [ L ] , d b [ L ] dW^{[1]},db^{[1]},⋯,dW^{[L]},db^{[L]} dW[1],db[1],⋯,dW[L],db[L]
按照一样的顺序构造成一个一维向量 d θ dθ dθ。 d θ dθ dθ的维度与 θ θ θ一致。
接着利用 J ( θ ) J(θ) J(θ)对每个 θ i θ_i θi计算近似梯度,其值与反向传播算法得到的 d θ i dθ_i dθi相比较,检查是否一致。例如,对于第 i i i个元素,近似梯度为:
d θ a p p r o x [ i ] = J ( θ 1 , θ 2 , ⋯ , θ i + ε , ⋯ ) − J ( θ 1 , θ 2 , ⋯ , θ i + ε , ⋯ ) 2 ε dθ_{approx}[i]=frac{J(θ_1,θ_2,⋯,θ_i+ε,⋯)−J(θ_1,θ_2,⋯,θ_i+ε,⋯)}{2ε} dθapprox[i]=2εJ(θ1,θ2,⋯,θi+ε,⋯)−J(θ1,θ2,⋯,θi+ε,⋯)
计算完所有 θ i θ_i θi的近似梯度后,可以计算 d θ a p p r o x 与 d θ dθ_{approx}与dθ dθapprox与dθ的欧式(Euclidean)距离来比较二者的相似度。公式为:
∣ ∣ d θ a p p r o x − d θ ∣ ∣ 2 ∣ ∣ d θ a p p r o x ∣ ∣ 2 + ∣ ∣ d θ ∣ ∣ 2 frac{||dθ_{approx}-dθ||_2}{||dθ_{approx}||_2+||dθ||_2} ∣∣dθapprox∣∣2+∣∣dθ∣∣2∣∣dθapprox−dθ∣∣2
一般来说,如果欧氏距离越小,例如10−7,甚至更小,则表明 d θ a p p r o x 与 d θ dθ_{approx}与dθ dθapprox与dθ越接近。反之如果欧氏距离较大,例如10−5,则表明梯度计算可能出现问题,需要再次检查是否有bugs存在。如果欧氏距离很大,例如10−3,甚至更大,则表明 d θ a p p r o x 与 d θ dθ_{approx}与dθ dθapprox与dθ差别很大,梯度下降计算过程有bugs,需要仔细检查。
本文发布于:2024-02-02 13:24:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685149944095.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |