前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Batch Normalization

Batch Normalization

作者头像
mathor
发布2020-01-15 10:34:03
4560
发布2020-01-15 10:34:03
举报
文章被收录于专栏:mathor

Batch Normalization(批量归一化)是深度学习中经常用到的

我们知道Sigmoid函数在定义域为$(-\infty,-4) \cup (4,\infty)$内导数趋于0,由于容易出现梯度消失的现象,因此ReLU函数使用的较多

但在某些场合不可避免的要去使用Sigmoid函数,因此我们希望能把输入的$x$值控制在有效的区间内,进行一个等效变化,使这些值均匀的分布在0附近,这样输入到Sigmoid函数后就能大概率避免梯度消失

如下面左侧的图所示,$x_1$的值处于一个比较小的区间$x_2$的值处于一个比较大的区间,因此对于$w_2$来说,少量的变化就会对Loss产生急剧的变化,而对$w_1$来说,变化就会相对小一点,可以看下面的“等高线”图,沿着纵轴方向变化的话,等高线会急剧的变化,沿着横轴方向变化,等高线的变化就稍平缓一点

但如果如右图所示,输入的值区间都很接近,这样$w_1$和$w_2$对Loss的影响就比较接近,就会形成一种“圆形”路径,在这种情况进行搜索的时候,不管从哪个点出发,梯度的方向都是指向全局最小解的方向,这种搜索过程会比较快一些,而且更稳定

Batch Normalization较多的应用于两个方面

  • Image Normalization,例如对RGB三通道进行Normalization,将数据进行统一缩放
代码语言:javascript
复制
normalize = transforms.Normalize(mean=ean[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])

mean有三个值,分别对应RGB三个通道的均值,具体的Normalize过程就是

$$ \begin{align*} x_R&= \frac{x_R-0.485}{0.229} \\ x_G&= \frac{x_G-0.456}{0.224} \\ x_B&= \frac{x_B-0.406}{0.225} \\ \end{align*} $$

  • Batch Normalization Batch Normalization现在有四种用法

假设一张图片有3个channel,长28,宽28,假设一个batch有6张图片,那么一个Batch的数据就是[6, 3, 28, 28],这里我们把28和28合并起来,就变成一个三维的矩阵[6, 3, 784]

在最左侧图中,它是对6和784进行normalize,因为有3个channel,所以[6, 3, 784]就变成了[3],而3个位置上的值,分别表示channel0的均值,channel1的均值,channel2的均值

同理,后面的Layer Norm就由[6, 3, 784]变成了[6]

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档