Batch Normalization原理与实战(上)

论坛 期权论坛     
选择匿名的用户   2021-5-23 01:20   0   0
<div id="js_content">
<p style="text-align: left">来自 | 知乎   作者 | 天雨粟</p>
<p style="text-align: left">链接 | https://zhuanlan.zhihu.com/p/34879333</p>
<p style="text-align: left">编辑 | 深度学习这件小事公众号<br></p>
<p style="text-align: left">本文仅作学术交流,如有侵权,请联系后台删除。</p>
<p style="text-align: left"><strong> </strong><strong>  前言</strong></p>
<p>本文主要从理论与实战视角对深度学习中的Batch Normalization的思路进行讲解、归纳和总结,并辅以代码让小伙伴儿们对Batch Normalization的作用有更加直观的了解。</p>
<p>本文主要分为两大部分,由于篇幅过长,分为上下两篇。第一部分是理论板块,主要从背景、算法、效果等角度对Batch Normalization进行详解;第二部分是实战板块,主要以MNIST数据集作为整个代码测试的数据,通过比较加入Batch Normalization前后网络的性能来让大家对Batch Normalization的作用与效果有更加直观的感知。</p>
<p style="text-align: left"><strong><strong> </strong><strong>  </strong>一、理论板块</strong></p>
<p>理论板块将从以下四个方面对Batch Normalization进行详解:</p>
<ul><li><p>提出背景</p></li><li><p>BN算法思想</p></li><li><p>测试阶段如何使用BN</p></li><li><p>BN的优势</p></li></ul>
<p>理论部分主要参考2015年Google的Sergey Ioffe与Christian Szegedy的论文内容,并辅以吴恩达Coursera课程与其它博主的资料。所有参考内容链接均见于文章最后参考链接部分。</p>
<p><strong>1、提出背景</strong><strong></strong></p>
<p><strong>1.1 炼丹的困扰</strong></p>
<p>在深度学习中,由于问题的复杂性,我们往往会使用较深层数的网络进行训练,相信很多炼丹的朋友都对调参的困难有所体会,尤其是对深层神经网络的训练调参更是困难且复杂。在这个过程中,我们需要去尝试不同的学习率、初始化参数方法(例如Xavier初始化)等方式来帮助我们的模型加速收敛。深度神经网络之所以如此难训练,其中一个重要原因就是网络中层与层之间存在高度的关联性与耦合性。下图是一个多层的神经网络,层与层之间采用全连接的方式进行连接。</p>
<p><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-18dd327e50ba251875fa63d914b996f4" width="1694"></p>
<p>我们规定左侧为神经网络的底层,右侧为神经网络的上层。那么网络中层与层之间的关联性会导致如下的状况:随着训练的进行,网络中的参数也随着梯度下降在不停更新。一方面,当底层网络中参数发生微弱变化时,由于每一层中的线性变换与非线性激活映射,这些微弱变化随着网络层数的加深而被放大(类似蝴蝶效应);另一方面,参数的变化导致每一层的输入分布会发生改变,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难。上述这一现象叫做Internal Covariate Shift。</p>
<p><strong>1.2 什么是Internal Covariate Shift</strong></p>
<p>Batch Normalization的原论文作者给了Internal Covariate Shift一个较规范的定义:在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化的这一过程被称作Internal Covariate Shift。</p>
<p>这句话该怎么理解呢?我们同样以1.1中的图为例,我们定义每一层的线性变换为 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-bcfa22790bbc75dc7ee2063fd4e4aaf4">,其中 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-e1c68bd925669e6541d7bd3d50b8aafc"> 代表层数;非线性变换为 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-6f72a8e62a61d2a1c31250671d29f6c0"> ,其中 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-b7cc4051aa9a9d3ffc2cfb8a8226e550">为第 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-e1c68bd925669e6541d7bd3d50b8aafc"> 层的激活函数。</p>
<p>随着梯度下降的进行,每一层的参数 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-91f2039f934eba71a485d7367f7f461c"> 与 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-2a3638bd7674979c3717fcd0daab784f"> 都会被更新,那么 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-5abe548d9e9fba4ea79e82c92ac75390"> 的分布也就发生了改变,进而 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-53331a475c68df67baef9a8cbac28dff"> 也同样出现分布的改变。而 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-53331a475c68df67baef9a8cbac28dff"> 作为第 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-f47a650b4f70328951ebd3151917e340"> 层的输入,意味着 <img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-f47a650b4f70328951ebd3151917e
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP