改善深层神经网络-吴恩达学习笔记

目录

一、L2正则化

二、dropout正则化

三、数值稳定性 & 模型初始化

数值稳定性

模型初始化


一、L2正则化

损失函数

J(W^{[1]}, b^{[1]}, \cdots, W^{[L]}, b^{[L]}) = \frac{1}{m}\sum_{i=1}^m\l (\hat{y}^{(i)}, y^{(i)}) + \frac{\lambda}{2m}\sum_{l=1}^L||W^{[l]}||_{F}^2

梯度

dW^{[l]} = 非正则化部分反向传播的梯度(from backprop)+\frac{\lambda}{m} W^{[l]}

\begin{aligned} W^{[l]} &= W^{[l]} - \alpha [(from \ backprop) + \frac{\lambda}{m}W^{[l]}] \\ &=(1-\frac{\alpha \lambda}{m})W^{[l]} - \alpha (from \ backprop) \end{aligned}

简单来说,添加了正则项后,损失函数计算梯度下降时就要同时满足原损失函数和正则项的权重同时等于0,压缩了解的空间,即对权重w的可能的取值做了限制。权重衰减weight decay,并不是一个规范的定义,而只是俗称而已,可以理解为削减/惩罚权重。在大多数情况下weight dacay 可以等价为L2正则化。L2正则化的作用就在于削减权重,降低模型过拟合,其行为即直接导致每轮迭代过程中的权重weight参数被削减/惩罚了一部分,故也称为权重衰减weight decay。L2正则令权重W^{[L]}先自乘小于1的数,再减去不含惩罚项的梯度。

  • 关于,深度学习中L2范数为啥能减少过拟合,直观上来说,若\lambda过大,则权重矩阵W接近于0,把多个隐藏层单元权重设为0,几乎消除了这些隐藏单元的许多影响,这个被大大简化的网络会变成一个很小的网络,小到如同一个逻辑单元,但是深度却很大。直观上当\lambda很大时,W会接近于0,我们尝试消除或至少减少许多隐藏单元的影响,最终网络会变得更简单,这个网络越来越接近逻辑回归,我们直觉上认为大量隐藏但愿被完全消除了,其实并没有,该神经网络的所有隐藏单元依旧存在,但是他们的影响变小了,这样不容易发生过拟合。
  • L2范数会使W的值不会过大,当W较小的时候,Z就可能比较小,这里就可以利用双曲正切函数的线性状态,当W变大时,z就可能变大,激活函数就开始变得非线性。可能这部分值就集中在激活函数比较线性的部分,非线性不那么明显,所以简化了模型。

二、dropout正则化

倒置丢弃法(inverted dopout)

倒置丢弃法:不改变其输入的期望值。

keep-prob:保留某个单元的概率,例如keep-prob=0.8, 意味着消除任意一个隐藏单元的概率是0.2。

举个🌰 :

我们设置a^{[3]}的keep-prob=0.8,即0.2的概率失活,我们会要对a^{[3]}除以0.8,以弥补或修正失活的20%,a^{[3]}的期望值不会变,反向随机失活方法通过除以keep-prob确保a^{[3]}的期望值不变。该方法在预测阶段也会很方便,若不除以keep-prob,平均值会变得越来越复杂。不同的训练样本,清除不同的隐藏层单元。若通过相同训练集多次传递数据,每次训练数据的梯度不同,则随机对不同隐藏层单元归0。预测阶段不需要考虑dropout,自然无需考虑随机失活,自然了就不用除以keep-prob。

\begin{aligned} Z^{[4]} &= W^{[4]}a^{[3]}/0.8 + b^{[4]} \\ \end{aligned}

dropout之后,神经网络会变得比以前更小。用一个较小的神经网络和使用正则化效果类似

在该例子中,a^{[3]}中的每一个单元都有可能被消除。注定Z^{[4]}不能过渡依赖一个节点,在反向传播时,与这两个隐藏单元相关的权重的梯度均为0(同样可以理解,随机失活,即该单元不起作用,自然相关的前向反向均不起作用)。故而不会偏向给任意一个输入加上太多权重,而是给每一个单元增加一点点权重。dropout将产生收缩权重的平方范数的效果,和之前的L2正则化类似。实施dropout的结果是会压缩权重,并完成一些预防过拟合的外层正则化。

实施dropout在计算机视觉领域有很多成功的第一次,计算机视觉中的输入量非常大,输入了太多像素,以至于没有足够的数据,所以dropout在计算机视觉中应用得比较频繁,有些计算机视觉研究人员非常喜欢用它,几乎成了默认的选择。

但是要牢记一点,dropout是一种正则化方法,它有助于预防过拟合,因此,除非算法过拟合,不然一般是不会使用dropout的。所以它在其它领域应用得比较少,主要应用在计算机视觉中,因为通常没有足够的数据,所以一直存在过拟合,这就是有些计算机视觉研究人员如此钟情dropout函数的原因。

dropout一大缺点是代价函数J 不再被明确定义,每次迭代都会随机移除一些节点,如果再检查梯度下降的性能,实际上是很难进行复查的。定义明确的代价函数J每次迭代后都会下降。因为我们所优化的代价函数J实际上并没有明确定义,或者在某种程度上很难计算,我们失去了调试工具来绘制损失函数图。

通常会关闭dropout函数,将keep-prop的值设置为1,运行代码,确保J函数单调递减,然后再打开dropout函数,在dropout过程中,代码并未引入bug。

三、数值稳定性 & 模型初始化

数值稳定性

关于数值稳定性,ng举了一个例子,激活函数是其本身a=g(z)=z,偏差为0(b=0),y=W^{[L]}\cdots W^{[2]}W^{[1]}X,设

W=\begin{bmatrix} 0.5 & 0 \\ 0& 0.5 \end{bmatrix},则y = W^{[L]}\begin{bmatrix} 0.5^{(L-1)}x_1\\ 0.5^{(L-1)}x_2 \end{bmatrix},当L=20时,0.5^{19} \approx 1.9073486328125e-06,就很小,反向传播,梯度传到第一层也很小。

W=\begin{bmatrix} 1.5 & 0 \\ 0& 1.5 \end{bmatrix},则y = W^{[L]}\begin{bmatrix} 1.5^{(L-1)}x_1\\ 1.5^{(L-1)}x_2 \end{bmatrix},当L=20时,1.5^{19} \approx 2216.8378200531006,就很小,反向传播,梯度传到第一层也很大。

模型初始化

Xavier初始化:设某全连接层输入个数为a,输出个数为b,将使该层中权重参数的每个元素都随机采样于均匀分布。这样的好处:模型参数初始化后,每层输出的方差不该受该层输入个数的影响,每层梯度的方差也不该受该层输出个数的影响。

U\begin{pmatrix} -\sqrt{\frac{6}{a + b}}, & \sqrt{\frac{6}{a + b}} \end{pmatrix}

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值