前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度神经网络超参数调整、正则化和优化-Regularization

深度神经网络超参数调整、正则化和优化-Regularization

作者头像
YoungTimes
发布2022-04-28 18:01:16
5670
发布2022-04-28 18:01:16
举报

Improving Deep Neural Networks-Dataset、Bias&Variance中讲述了如何针对神经网络模型的不同Bias和Variance表现采用对应的调整策略,概括如下:

Bias

Variance

解释

模型预测能力不足(欠拟合),表现为训练误差较大

模型泛化能力不足(过拟合),表现为测试误差较大

解决方法

1. 更深、更宽的网络2. 训练更长时间3. 更好的优化方法4. 更优的网络结构

1.更多的数据2.正则化3.更优的网络结构

在神经网络发生过拟合时,在不能大规模扩展数据集的情况下,正则化(Regularization)是一种常用的处理策略。

1.Regularization

1.1 L2 正则化

J(w^{[1]}, b^{[1]}, ..., w^{[n]}, b^{[n]}) = \frac{1}{m} \sum_{i=1}^{m}(L({\hat{y}^{(i)}}, y^{(i)})) + \frac{\lambda}{2m} \sum_{l=1}^{L} {||w^{[l]}||_2}^2
\left\|w^{[l]}\right\|^{2}=\sum_{i=1}^{n^{l}} \sum_{j=1}^{n^{[l-1]}}\left(w_{i, j}^{[l]}\right)^{2}

而对于任何神经网络而言,只要它的激活函数是近似线性,则整个网络的表达能力也是近乎线性的,而不能计算复杂的非线性函数,因此整个网络也不容易过拟合。

2.Dropout Regularization

Dropout使用一定的概率将一层神经网络中的部分节点丢弃,丢弃这些节点后,整个网络变成了一个更小的网络,这也就降低了overfitting的风险。

2.1 如何实现Dropout功能

我们在神经网络的某一层网络上执行Dropout。首先设置一个Dropout的概率: keep_prob = 0.8。

生成矩阵d3,矩阵中每个元素都有80%的概率取1,20%的概率取0。

代码语言:javascript
复制
d_3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep_prob

将神经网络中的部分神经元丢弃,丢弃的概率为20%。

代码语言:javascript
复制
a3 = a3 * d3

随机丢弃20%的神经元,降低了网络层输出的期望值,所以需要采用反向随机激活技术(Inverted Dropout)对网络层的输出进行校正。

代码语言:javascript
复制
a3 /= keep_prob

反向随机激活技术(Inverted Dropout)避免引入缩放的问题,因此简化了神经网络的测试部分,在测试集时不用doprout也能保证最后的测试值值是合理的。这也是目前比较普遍的Dropout实现方法。

2.2 为何Dropout有效

Dropout中由于任何一个神经元都可能会丢弃,所以神经网络就不会由于片面的依赖任何一个特征而在该特征上赋予过大的权重,最终导致每个神经元都被赋予一个较小的权重。和L2正则化类似,Dropout通过缩小权重达到了防止过拟合的目的。

最后,需要注意到,我们可以对不同的网络层设置不同的keep_prob值,对于我们认为Overfitting概率大的网络层应用比较小的keep_prob;而对于Overfitting概率小的网络层应用比较大的keep_prob。但我们通常不对网络的输入层应用Dropout。

2.3 Dropout的注意事项

不要随意使用Dropout,在发现神经网络出现过拟合之后再考虑使用Dropout。

由于Dropout随机使得一些神经元失活,使得在Grident Descent过程中Loss Function可能不会在每个迭代中都在下降,给网络训练带来一些麻烦。所以在实际使用中,我们一般先关闭Dropout,确定Loss Function是下降的,然后再打开Dropout进行调试。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 半杯茶的小酒杯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Regularization
    • 1.1 L2 正则化
    • 2.Dropout Regularization
      • 2.1 如何实现Dropout功能
        • 2.2 为何Dropout有效
          • 2.3 Dropout的注意事项
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档