前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[DeeplearningAI 笔记]第二章 3.4-3.7-Batch NormalizationBN 算法

[DeeplearningAI 笔记]第二章 3.4-3.7-Batch NormalizationBN 算法

作者头像
演化计算与人工智能
发布2020-08-14 11:46:14
3130
发布2020-08-14 11:46:14
举报

3.4 正则化网络的激活函数

  • Batch 归一化会使你的参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定.超参数的范围会更庞大,工作效果也更好.也会使你更容易的训练甚至是深层网络.
  • 对于 logistic 回归来说

正则化原理

u=\frac{1}{m}\sum x^{i}(求出平均值u)
x=x-u
\sigma^{2}=\frac{1}{m}\sum(x^{i})^{2}(求出方差)
x=\frac{x}{\sigma^{2}}
  • 函数曲线会由类似于椭圆变成更圆的东西,更加易于算法优化.
  • 深层神经网络
  • 我们将每一层神经网络计算得到的 z 值(在计算激活函数之前的值)进行归一化处理,即将
Z^{[L]}

的值进行归一化处理,进而影响下一层

W^{[L+1]}和b^{[L+1]}

的计算.

  • 此时 z 的每个分量都含有平均值 0 和方差 1,但我们不想让隐藏单元总是含有平均值 0 和方差 1,例如在应用 sigmoid 函数时,我们不想使其绘制的函数图像如图所示,我们想要变换方差或者是不同的平均值.

第 L 层神经元正则化公式

u=\frac{1}{m}\sum_{i}Z^{i}
\sigma^{2}=\frac{1}{m}\sum_{i}(Z^{i}-u)^{2}
Z^{i}_{norm}=\frac{Z^{i}-u}{\sqrt{\sigma^2+\epsilon}}
\check{Z^{i}}=\gamma Z^{i}_{norm}+\beta

3.5 将 Batch Normalization 拟合进神经网络

  • 对于 Batch Normalization 算法而言,计算出一层的
Z^{[l]}

之后,进行 Batch Normalization 操作,此过程将有

\beta^{[l]},\gamma^{[l]}

这两个参数控制.这一步操作会给你一个新的规范化的

z^{[l]}

值.然后将其输入到激活函数中,得到

a^{[l]}
  • 实质上,BN 算法是在每一层的
Z^{[l]}

a^{[l]}

之间进行的运算

3.6 Batch Normalization 为什么奏效

原因一

  • 无论数据的范围是 0~1 之间还是 1~1000 之间,通过归一化,所有的输入特征 X,都可以获得类似范围的值,可加速学习.

原因二

  • 如果神经元的数据分布改变,我们也许需要重新训练数据以拟合新的数据分布.这会带来一种数据的不稳定的效果.(covariate shift)
  • Batch Normalization 做的是它减少了这些隐藏值分布变化的数量.因为随着训练的迭代过程,神经元的值会时常发生变化.batch 归一化可以确保,无论其怎样变化,其均值和方差将保持不变.(由每一层的 BN 函数的参数
\beta^{[l]},\gamma^{[l]}

决定其方差和均值)

  • Batch Normalization 减少了输入值改变的问题,它的确使这些值变的稳定,即是原先的层改变了,也会使后面的层适应改变的程度减小.也可以视为它减少了前层参数和后层参数之间的联系.

原因三

  • Batch Normalization 有轻微的正则化作用.
    • BN 算法是通过 mini-batch 计算得出,而不是使用整个数据集,所以会引入部分的噪音,即会在纵轴上有些许波动.
    • 缩放的过程从
    Z^{[l]}\rightarrow\check{Z^{[l]}}

    也会引入一些噪音.

    • 所以和 Dropout 算法一样,它往每个隐藏层的激活值上增加了噪音,dropout 有噪音的模式,它使一个隐藏的单元以一定的概率乘以 0,以一定得概率乘以 1.BN 算法的噪音主要体现在标准偏差的缩放和减去均值带来的额外噪音.这使得后面层的神经单元不会过分依赖任何一个隐藏单元.有轻微的正则化作用.如果你想获得更好的正则化效果,可以在使用 Batch-Normalization 的同时使用 Dropout 算法.

3.7 测试时的 Batch Normalization

  • Batch-Normalization 将你的数据以 mini-batch 的形式逐一处理,但在测试时,你可能需要对每一个样本逐一处理.我们应该怎么做呢~

Batch-Normalization 公式

  • 注意 对于 u 和
\sigma

是在整个 mini-batch 上进行计算,但是在测试时,你不会使用一个 mini-batch 中的所有数据(因为测试时,我们仅仅需要少量数据来验证神经网络训练的正确性即可.)况且如果我们只使用一个数据,那一个样本的均值和方差没有意义,因此我们需要用其他的方式来得到 u 和

\sigma

这两个参数.

  • 运用覆盖所有 mini-batch 的指数加权平均数来估算 u 和
\sigma

利用指数加权平均来估算

u和\sigma

对数据进行测试

对于第 L 层神经元层,标记 mini-batch 为

x^{[1]},x^{[2]},x^{[3]},x^{[4]}...x^{[n]}

在训练这个隐藏层的第一个 mini-batch 得到

u^{[1][l]}

,训练第二个 mini-batch 得到

u^{[2][l]}

,训练第三个 mini-batch 得到

u^{[3][l]}

...训练第 n 个 mini-batch 得到

u^{[n][l]}

.然后利用指数加权平均法估算

u

的值,同理,以这种方式利用指数加权平均的方法估算

\sigma^{2}

.

总结

在训练时,u 和

\sigma^{2}

在整个 mini-batch 上计算出来的,但是在测试时,我们需要单一估算样本,方法是根据你的训练集估算 u 和

\sigma^{2}

.常见的方法有利用指数加权平均进行估算.

参考资料

[1]

吴恩达老师课程原地址: https://mooc.study.163.com/smartSpec/detail/1001319001.htm

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

本文分享自 DrawSky 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.4 正则化网络的激活函数
    • 正则化原理
      • 第 L 层神经元正则化公式
      • 3.5 将 Batch Normalization 拟合进神经网络
      • 3.6 Batch Normalization 为什么奏效
        • 原因一
          • 原因二
            • 原因三
            • 3.7 测试时的 Batch Normalization
              • Batch-Normalization 公式
                • 利用指数加权平均来估算
                  • 对于第 L 层神经元层,标记 mini-batch 为
                • 总结
                  • 在训练时,u 和
                  • 参考资料
              相关产品与服务
              批量计算
              批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档