IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Batch Normalization -> 正文阅读

[人工智能]Batch Normalization

??2015年 Google 技术团队发表论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,在文中正式提出了批标准化(Batch Normalization, BN)。

Internal Covariate Shift

??对神经网络的参数初始化有了解的读者可能知道神经网络有一个重要的假设——每层的各个输入之间相互独立且服从正态分布。网络在训练的过程中,可训练参数在不断发生着变化,某神经元的可训练参数发生变化后,其输出值的概率分布很可能发生变化(数学期望和方差发生变化)。这也就意味着,经过一次训练后,该神经元的输出值的概率分布与本次训练之前的不服从同一分布。以上这种现象被论文的作者称为 “Internal Covariate Shift”。
??这种现象会导致以该神经元的输出作为输入的神经元需要调整权重以适应概率分布的变化。显然,这无疑会降低网络的收敛速度。再进一步说,为了降低两次训练之间的分布变化的程度,以让相关神经元及时适应这种变化,我们就需要设置一个较小的学习率。小的学习率也就意味着慢的收敛速度。

Batch Normalization

??为了缓解上述现象,论文作者提出了 BN 方法。我们知道在训练网络时,每次送入网络的不是一个样本,而是由多个样本组成的 batch。假设一个 batch 中有 h h h 个样本,那么神经元的一个输入端每次就会得到 h h h 个输入值(如果不理解此处,可以参考神经网络的基本原理一文中正向传播的矩阵公式)。如果我们将对这 h h h 个输入值进行统一调整,使调整后的这 h h h 个输入值的均值为 0 0 0、方差为 1 1 1。虽然是在 h h h 个输入值上进行的调整,并不是在整个训练集上,但这已经有了一定的近似了。那么,经过这样的调整,我们就可以近似的认为在训练的过程中输入值的概率分布始终稳定在数学期望为 0 0 0、方差为 1 1 1 的同一分布,这也就解决了 Internal Covariate Shift。这种将 h h h 个值的均值和方差分别调整为 0 0 0 1 1 1 的过程被作者称为白化(whitening)。
??我们对每个神经元内输入激活函数的激活值进行白化与上文中提到的对每个输入端的输入值进行白化所达到的效果是相同的。因为通过概率论的知识,我们知道两个独立的服从同一分布的随机变量,经过同一个函数变换后,仍然服从同一分布。如果每次训练中的激活值都服从同一分布,因为它们每次经过的都是同一个激活函数的变换,所以激活函数的输出值即神经元的输出值必然也服从同一分布。本层神经元的输出值就是下一层神经元的输入值,本层输出服从同一分布即下一层输入服从同一分布。
??事实上,BN 就是对激活值进行了白化,而没有对输入值进行白化。一方面,根据上一段,我们知道激活值和输入值的白化效果相同。另一方面,对激活值进行白化,会使白化后的激活值大部分分布到 0 0 0 附近,这可以缓解 Sigmoid、tanh 的梯度消失现象,也可以减少 ReLU 发生神经元死亡的可能性。(如果此处不理解,可以参考神经网络的激活函数一文)
??设 batch 中有 h h h 个样本,batch 中第 k k k 个样本使某神经元产生的激活值记作 s { k } s^{\{k\}} s{k},白化后的记作 s ~ { k } \tilde{s}^{\{k\}} s~{k}。设激活值的均值为 μ \mu μ,方差为 σ \sigma σ。则对激活值的白化公式如下:
μ = 1 h ∑ k = 1 h s { k } \mu = \frac{1}{h}\sum_{k=1}^h{s^{\{k\}}} μ=h1?k=1h?s{k} σ = 1 h ∑ k = 1 h ( s { k } ? μ ) 2 \sigma = \sqrt{\frac{1}{h}\sum_{k=1}^h{\left( s^{\{k\}}-\mu \right)^2}} σ=h1?k=1h?(s{k}?μ)2 ? s ~ { k } = s { k } ? μ σ \tilde{s}^{\{k\}} = \frac{s^{\{k\}} - \mu}{\sigma} s~{k}=σs{k}?μ???经过如上处理 s ~ { 1 } , ? s ~ { 2 } , ? ? ? , ? s ~ { h } \tilde{s}^{\{1\}}, \, \tilde{s}^{\{2\}}, \, \cdots, \, \tilde{s}^{\{h\}} s~{1},s~{2},?,s~{h} 的均值为 0 0 0,方差为 1 1 1。论文作者认为,白化后的激活值虽然解决了 Internal Covariate Shift,但却大都集中在 0 0 0 附近,这可能会降低一些神经元的表达能力。所以,作者又为每个神经元配置两个新的可训练参数 γ \gamma γ β \beta β,对白化后的激活值再进行一次线性变换。又经过线性变换后的激活值记作 s ~ ~ { k } \tilde{\tilde{s}}^{\{k\}} s~~{k},则公式如下:
s ~ ~ { k } = γ ? s ~ { k } + β \tilde{\tilde{s}}^{\{k\}} = \gamma \cdot \tilde{s}^{\{k\}} + \beta s~~{k}=γ?s~{k}+β??当 γ = σ \gamma = \sigma γ=σ β = μ \beta = \mu β=μ 时,最终的激活值也就相当于没有做白化。作者并未论述加入这两个新的可训练参数的理论依据。可能是想做一种调和吧,不把事情做的太绝?
??作者的实验结果表明:

  • BN 可以提高收敛速度。
  • 使用 BN 时,可以达到 Dropout 的缓解过拟合效果,因此可以不使用 Dropout。
  • 使用 BN 时,可以使用较大的学习率,对于权重的初始化可以不再十分严格。
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:15:35  更:2022-10-22 21:18:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:37:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码