首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

二十三:神经网络训练中的批量归一化

来看看批量归一化的有关问题吧!记得进入公号菜单“机器学习”,复习之前的系列文章噢。

今天的内容是

【神经网络训练中的批量归一化】

场景描述

深度神经网络的训练中涉及诸多手调参数,如学习率,权重衰减系数,Dropout比例等,这些参数的选择会显著影响模型最终的训练效果。批量归一化(Batch Normalization, BN)方法从数据分布入手,有效减弱了这些复杂参数对网络训练产生的影响,在加速训练收敛的同时也提升了网络的泛化能力。

问题描述

BN基本动机与原理是什么?

BN的具体实现中怎样恢复前一层学习到的特征分布?

简述BN在卷积神经网络中如何使用?

背景知识:统计学习,深度学习

解答与分析

1.BN的基本动机与原理是什么?

神经网络训练过程的本质是学习数据分布,训练数据与测试数据的分布不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数据进行归一化处理。

然而随着网络训练的进行,每个隐层的参数变化使得后一层的输入发生变化,从而每一批(batch)训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大了训练的复杂度以及过拟合的风险。

Batch Normalization方法是针对每一批数据,在网络的每一层输入之前增加归一化处理(均值为0,标准差为1),将所有批数据强制在统一的数据分布下,即对该层的任意一个神经元(不妨假设为第k维)采用如下公式:

2. BN的具体实现中怎样恢复前一层学习到的特征分布?

按照上式直接进行归一化会导致上层学习到的数据分布发生变化,以sigmoid激活函数为例,BN之后数据整体处于函数的非饱和区域,只包含线性变换,破坏了之前学习到的特征分布。为了恢复原始数据分布,具体实现中引入了变换重构以及可学习参数γ,β:

其中

分别为输入数据分布的方差和偏差,对于一般的网络,不采用BN操作时,这两个参数高度依赖前面网络的学习到的连接权重(对应复杂的非线性)。而在BN操作中提取出来后,γ,β变成了该层的学习参数,与之前网络层的参数无关,从而更加有利于优化的过程。

完整的Batch Normalization网络层的前向传导过程公式如下:

3. 简述BN在卷积神经网络中如何使用?

卷积神经网络中每一层操作后得到一系列特征图(feature maps),卷积层上的BN同样使用类似权值共享的策略,将每张特征图做为一个处理单元,即全连接网络中的单个神经元,进行归一化操作。

具体实现中,假设网络训练中每个batch包含b个样本,特征图个数为f,特征图的宽高分别为w, h,那么,每个特征图所对应的全部神经元个数为b * w * h,利用这些神经元我们可得到一组学习参数γ,β用于对该特征图进行BN操作。详细过程可参考问题2中的公式,其中m=b * w * h,为BN操作中的mini-batch。

下一题预告

【随机梯度下降法】

场景描述

深度学习得以在近几年迅速占领工业界和学术界的高地,重要原因之一是数据量的爆炸式增长。如下图所示,随着数据量的增长,传统机器学习算法的性能会进入平台期,而深度学习算法因其强大的表示能力,性能得以持续增长,甚至在一些任务上超越人类。因此有人戏称,“得数据者得天下”。

经典的优化方法,例如梯度下降法,每次迭代更新需要用到所有的训练数据,这给求解大数据、大规模的优化问题带来了挑战。掌握基于大量训练数据求解模型的方法,对于掌握机器学习,尤其是深度学习至关重要。

问题描述

针对训练数据量过大的问题,当前有哪些优化求解算法?

欢迎留言提问或探讨

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180125G0MUZC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券