### 3.3规范化
如前所述,由于在这些网络中发生的非线性操作的级联,多层体系结构是高度非线性的。除了上一节中讨论的整流非线性之外,归一化是另一个非线性处理块,它在ConvNet架构中起着重要作用。 ConvNets中使用最广泛的标准化形式是所谓的Divisive Normalization或DN(也称为局部响应标准化)。本节阐述了归一化步骤的作用,并描述了它如何纠正前两个处理块(_,即_。卷积和整流)的一些缺点。再次从生物学和理论的角度讨论规范化的作用。
#### 3.3.1生物学观点
早期由神经生理学家提出标准化来解释视网膜中光适应的现象[13],后来扩展到解释哺乳动物视皮层中神经元的非线性特性[66]。实际上,从生物学的角度来看,对标准化步骤的需求源于两个主要观察[67,66]。首先,虽然细胞反应被证明是刺激特异性的[74],但也表明细胞反应可以相互抑制,并且存在交叉定向抑制现象,其中神经元对其优选刺激的反应被减弱。如果它与另一种无效的刺激叠加[67,14,19]。线性模型(卷积步骤中的_即_。)和前一节中讨论的不同形式的整流,例如计算神经科学家提出的半波整流,都没有解释这种交叉定向抑制和抑制行为。 。其次,虽然已知细胞响应在高对比度下饱和,但仅依赖于卷积和无界整流器(例如ReLU)的模型将具有随着对比度增加而不断增加的值。这两个观察结果表明,需要一个折扣其他刺激反应的步骤,以保持每个细胞的特异性,并使其对比不变,同时解释细胞的其他抑制行为。
处理这些问题的一种流行模型包括在数学上描述如下的分裂归一化块
![](https://img.kancloud.cn/8f/2d/8f2d656c2011293a8ff1417a304a021e_139x45.gif)(3.8)
其中![](https://img.kancloud.cn/b4/23/b423806e83b1ae4311168bded5c2134b_17x15.gif)是平方半波整流卷积运算的输出,汇集在一组方向和尺度上![](https://img.kancloud.cn/f3/99/f3990417ea74c9d830634565aa466608_9x16.gif)和![](https://img.kancloud.cn/8c/97/8c97e53e47d9ac642fc260db31a39a84_17x16.jpg)是一个饱和常数,可以根据两种适应机制中的任何一种来选择[66] ]。在第一种情况下,从细胞的反应历史中学习的每个细胞可能是不同的值。第二种可能性是从所有细胞的反应统计数据中推导出来。这种分裂归一化方案丢弃了关于对比度大小的信息,有利于在归一化操作中,根据输入响应![](https://img.kancloud.cn/d3/c3/d3c3500d4ef8d92003533e5c06fd7fa5_19x18.gif)的相对对比度对基础图像模式进行编码,(3.8)。使用该模型似乎可以很好地适应哺乳动物视皮层的神经元反应[67]。还表明它也很好地解释了交叉方向抑制现象[14]。
##### 讨论
有趣的是,大多数研究分裂归一化作用的研究表明,包括它的神经元模型很好地符合记录数据(_,例如_。[66,67,14,19])。事实上,最近的研究表明,分裂正常化也可以解释IT皮层的适应现象,其中神经反应随着刺激重复而降低(_,例如_。[83])。此外,在皮质的几个区域中建议的分裂正常化的普遍性导致了这样的假设:分裂归一化可以被视为哺乳动物视觉皮层的规范操作,类似于卷积的操作[19]。
#### 3.3.2理论观点
从理论的角度来看,归一化已被解释为在表示自然图像时实现有效编码的方法[102]。在这项工作中,标准化步骤的动机是关于自然图像统计的发现[102],这些结果已知是高度相关的并且包含非常冗余的信息。根据这些发现,引入了归一化步骤,目的是找到最小化图像中统计依赖性的表示。为了实现这一目标,在[102,101]中彻底讨论的流行推导开始于使用基于高斯尺度混合的统计模型来表示图像。使用该模型和目标函数,其作用是最小化依赖性,非线性以形式导出
![](https://img.kancloud.cn/18/66/18660be3990b6d3ca1d0177cf847d387_127x24.gif)(3.9)
其中![](https://img.kancloud.cn/42/c9/42c9d02a8d8f13696994eb0204c82e63_14x11.jpg)和![](https://img.kancloud.cn/e9/eb/e9eb8574ea1ee9a3f2ed46b25361704d_12x11.gif)分别是输入和输出图像,而![](https://img.kancloud.cn/a0/76/a07675eb420c5a094218ccaf1bb3763f_8x13.gif),![](https://img.kancloud.cn/c3/61/c3613cb00d78b4d0d6e7619f639a4181_13x11.gif)和![](https://img.kancloud.cn/d2/5f/d25f4a36de037b23b21ec4d65cc935f8_12x11.gif)是可以从训练集中学习的分裂归一化的参数。值得注意的是,在处理冗余时引入的分裂归一化的定义与自然图像中的高阶依赖性之间存在直接关系,(3.9),并且建议最佳地拟合视觉皮层中的神经元响应,(3.8)。特别是,随着我们设置![](https://img.kancloud.cn/9b/da/9bda179c6f6c3c8dd328e4eb3d9b5f8f_137x42.gif)的变量的变化,我们看到这两个方程通过元素运算(_即_。平方,与![](https://img.kancloud.cn/82/1d/821d4d3ba683fc0836bc36e90c86769c_58x21.gif)相关,受平方根差异的影响。 ]),从而两个模型都达到了在满足神经科学观察的同时最大化独立性的目标。
另一种看待ConvNets标准化的方法是将其视为一种强化特征之间局部竞争的方式[77,91],类似于生物神经元中发生的竞争。该竞争可以通过减法归一化在特征地图内的相邻特征之间实施,或者通过在特征地图上的相同空间位置处操作的分裂归一化在特征地图之间实施。或者,分裂归一化可被视为一种最小化对乘法对比度变化的敏感性的方法[60]。在更深层次的网络架构中,还发现分裂归一化有助于提高网络的泛化能力[88]。
最近的ConvNets依赖于所谓的批量标准化[129]。批量标准化是另一种分裂标准化,它考虑了一批训练数据来学习标准化参数(_即_。方程式(3.10)中的均值和方差)并且它还引入了新的超参数,![](https://img.kancloud.cn/ad/8f/ad8fd262604d7d99b5deb23f5bee753e_27x22.gif)和![](https://img.kancloud.cn/79/76/7976c0c31c474c11e13dadcd5d40f528_27x22.gif),以控制每层所需的标准化量。
批量标准化可以分为两个步骤。首先,在具有![](https://img.kancloud.cn/da/b8/dab8f201ba10fb5a14e991ab157a9c7c_10x13.gif)维输入![](https://img.kancloud.cn/66/e5/66e50825bc0aa7f53e99fcae25a10ba7_120x22.gif)的任何层,每个标量特征根据以下内容独立标准化。
![](https://img.kancloud.cn/b9/69/b96940292710b198381676a150fb4535_163x52.gif)(3.10)
![](https://img.kancloud.cn/7b/f4/7bf481fe9dfd1d9cf8ad9250281df528_51x23.gif)是小批量平均值![](https://img.kancloud.cn/7d/6c/7d6c801206d08cd800c04a98673dd1b8_142x51.gif)计算的小批量平均值,![](https://img.kancloud.cn/fb/2c/fb2c4987506004ab2ed055d67a1ad2e8_69x23.gif)是![](https://img.kancloud.cn/be/8b/be8b654516ec76c953109ee8b0a79720_253x51.gif)计算的相同小批量的方差。其次,等式(3.10)中归一化的输出经历线性变换,使得所提出的批量归一化块的最终输出由![](https://img.kancloud.cn/a1/0d/a10daea007688f579ffc52e4728a1080_157x22.gif)给出,其中![](https://img.kancloud.cn/ad/8f/ad8fd262604d7d99b5deb23f5bee753e_27x22.gif)和![](https://img.kancloud.cn/79/76/7976c0c31c474c11e13dadcd5d40f528_27x22.gif)是在参数期间学习的超参数。训练。
批量标准化的第一步旨在确定每层输入的均值和方差。但是,由于该规范化策略可以改变或限制层可以表示的内容,因此包括第二个线性转换步骤以维持网络的表示能力。例如,如果输入处的原始分布已经是最优的,则网络可以通过学习身份映射来恢复它。因此,归一化输入![](https://img.kancloud.cn/8e/43/8e43a0d2e3c78d1e36c3def136e9ff27_26x18.gif)可以被认为是在网络的每一层添加的线性块的输入。
批量归一化首先被引入作为对传统分裂归一化的改进,其最终目标是减少内部协变量移位问题,这是指每层输入分布的连续变化[129]。每层输入的变化规模和分布意味着网络必须在每一层显着调整其参数,因此训练必须缓慢(_即_。使用小学习率)以保持损失在训练期间减少(_即_。以避免训练期间的分歧)。因此,引入批量标准化以保证所有输入处的更规则分布。
这种规范化策略的灵感来自为ConvNets的有效培训而建立的一般经验法则。特别是,为了在ConvNets中获得良好的泛化性能,通常的做法是强制所有训练和测试集样本具有相同的分布(_,即_。通过归一化)。例如,已经表明,当输入始终变白时,网络收敛得更快[91,77]。通过考虑每个层可以被视为浅层网络,批量标准化建立在这个想法的基础上。因此,确保输入在每一层保持相同的分布是有利的,并且这通过学习训练数据的分布(使用小批量)并使用训练集的统计来标准化每个输入来强制执行。更一般地说,重要的是要记住,从机器学习的角度来看,这种规范化方案还可以使特征更容易分类。例如,如果两个不同的输入引起两个不同的输出,如果响应位于相同的范围内,则它们更容易被分类器分离,因此处理数据以满足该条件是重要的。
与分裂归一化类似,批量归一化也证明在ConvNets中起着重要作用。特别是,已经证明批量标准化不仅加速了训练,而且在一般化方面起着非常重要的作用,它能够超越以前最先进的图像分类(特别是在ImageNet上)同时消除了对Dropout正则化的需求[88]。
相比之下,批量归一化有点类似于分裂归一化,因为它们都使得每层输入的比例相似。但是,Divisive Normalization通过将每个输入的值除以同一层内同一位置的所有其他输入来标准化每个输入的值。另一方面,批量标准化相对于在相同位置处的训练集的统计(或更准确地说,包含来自整个训练集的示例的小批量的统计)对每个输入进行标准化。批量标准化依赖于训练集的统计的事实可以解释这样的事实,即它提高了表示的泛化能力。
批量标准化的一个问题是它对小批量大小的依赖:如果选择它太小,它可能无法正确表示每次迭代的训练集;或者,如果它太大(_,即_,它会产生减慢训练的负面影响。因为网络必须在当前权重下看到所有训练样本以计算小批量统计数据)。此外,批量标准化不易应用于递归神经网络,因为它依赖于在一小批训练样本上计算的统计数据。因此,在[4]中提出了层标准化。层规范化遵循批量归一化中提出的相同过程,唯一的区别在于规范化统计的计算方式。批量标准化计算小批量的统计数据时,图层标准化使用任何一个图层中的所有要素图或隐藏单位分别计算每个输入的统计数据。因此,在批量标准化中,每个单元使用与该单元相关的不同统计量进行标准化,而层标准以相同方式标准化所有单元。
虽然层次规范被证明在语言相关的应用程序中是有效的,其中循环网络通常更合适,但它无法与使用批量标准化训练的ConvNets竞争图像处理任务[129]。作者提出的一个可能的解释是,在ConvNets中,所有单位在输出中激活单位时没有做出同等贡献;因此,在层标准化(_即_。使用所有单位来计算标准化的统计数据的情况下)的基本假设不适用于ConvNets。
##### Discussion
本小节中讨论的贡献的共同点是,他们都同意标准化在提高多层体系结构的表征能力方面的重要作用。需要注意的另一个重要的一点是,它们都有着共同的目标,即减少输入中的冗余,并且即使在以不同形式提出问题时也将其提高到相同的规模。实际上,虽然早期提出了分裂正常化,_,例如_。 [102],明确地将问题作为冗余减少问题,诸如批量标准化[129]之类的新提议也通过在每一层白化数据来隐式地强制执行该操作。最后,从生物学角度反思归一化问题,重要的是要注意生物系统在编码自然信号的统计特性方面也是有效的,因为它们代表了具有小代码的世界。因此,人们可能会假设他们也在执行类似的分裂归一化操作,以减少冗余并获得那些有效的代码。
- TensorFlow 1.x 深度学习秘籍
- 零、前言
- 一、TensorFlow 简介
- 二、回归
- 三、神经网络:感知器
- 四、卷积神经网络
- 五、高级卷积神经网络
- 六、循环神经网络
- 七、无监督学习
- 八、自编码器
- 九、强化学习
- 十、移动计算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度学习
- 十三、AutoML 和学习如何学习(元学习)
- 十四、TensorFlow 处理单元
- 使用 TensorFlow 构建机器学习项目中文版
- 一、探索和转换数据
- 二、聚类
- 三、线性回归
- 四、逻辑回归
- 五、简单的前馈神经网络
- 六、卷积神经网络
- 七、循环神经网络和 LSTM
- 八、深度神经网络
- 九、大规模运行模型 -- GPU 和服务
- 十、库安装和其他提示
- TensorFlow 深度学习中文第二版
- 一、人工神经网络
- 二、TensorFlow v1.6 的新功能是什么?
- 三、实现前馈神经网络
- 四、CNN 实战
- 五、使用 TensorFlow 实现自编码器
- 六、RNN 和梯度消失或爆炸问题
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用协同过滤的电影推荐
- 十、OpenAI Gym
- TensorFlow 深度学习实战指南中文版
- 一、入门
- 二、深度神经网络
- 三、卷积神经网络
- 四、循环神经网络介绍
- 五、总结
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高级库
- 三、Keras 101
- 四、TensorFlow 中的经典机器学习
- 五、TensorFlow 和 Keras 中的神经网络和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于时间序列数据的 RNN
- 八、TensorFlow 和 Keras 中的用于文本数据的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自编码器
- 十一、TF 服务:生产中的 TensorFlow 模型
- 十二、迁移学习和预训练模型
- 十三、深度强化学习
- 十四、生成对抗网络
- 十五、TensorFlow 集群的分布式模型
- 十六、移动和嵌入式平台上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、调试 TensorFlow 模型
- 十九、张量处理单元
- TensorFlow 机器学习秘籍中文第二版
- 一、TensorFlow 入门
- 二、TensorFlow 的方式
- 三、线性回归
- 四、支持向量机
- 五、最近邻方法
- 六、神经网络
- 七、自然语言处理
- 八、卷积神经网络
- 九、循环神经网络
- 十、将 TensorFlow 投入生产
- 十一、更多 TensorFlow
- 与 TensorFlow 的初次接触
- 前言
- 1. TensorFlow 基础知识
- 2. TensorFlow 中的线性回归
- 3. TensorFlow 中的聚类
- 4. TensorFlow 中的单层神经网络
- 5. TensorFlow 中的多层神经网络
- 6. 并行
- 后记
- TensorFlow 学习指南
- 一、基础
- 二、线性模型
- 三、学习
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 构建简单的神经网络
- 二、在 Eager 模式中使用指标
- 三、如何保存和恢复训练模型
- 四、文本序列到 TFRecords
- 五、如何将原始图片数据转换为 TFRecords
- 六、如何使用 TensorFlow Eager 从 TFRecords 批量读取数据
- 七、使用 TensorFlow Eager 构建用于情感识别的卷积神经网络(CNN)
- 八、用于 TensorFlow Eager 序列分类的动态循坏神经网络
- 九、用于 TensorFlow Eager 时间序列回归的递归神经网络
- TensorFlow 高效编程
- 图嵌入综述:问题,技术与应用
- 一、引言
- 三、图嵌入的问题设定
- 四、图嵌入技术
- 基于边重构的优化问题
- 应用
- 基于深度学习的推荐系统:综述和新视角
- 引言
- 基于深度学习的推荐:最先进的技术
- 基于卷积神经网络的推荐
- 关于卷积神经网络我们理解了什么
- 第1章概论
- 第2章多层网络
- 2.1.4生成对抗网络
- 2.2.1最近ConvNets演变中的关键架构
- 2.2.2走向ConvNet不变性
- 2.3时空卷积网络
- 第3章了解ConvNets构建块
- 3.2整改
- 3.3规范化
- 3.4汇集
- 第四章现状
- 4.2打开问题
- 参考
- 机器学习超级复习笔记
- Python 迁移学习实用指南
- 零、前言
- 一、机器学习基础
- 二、深度学习基础
- 三、了解深度学习架构
- 四、迁移学习基础
- 五、释放迁移学习的力量
- 六、图像识别与分类
- 七、文本文件分类
- 八、音频事件识别与分类
- 九、DeepDream
- 十、自动图像字幕生成器
- 十一、图像着色
- 面向计算机视觉的深度学习
- 零、前言
- 一、入门
- 二、图像分类
- 三、图像检索
- 四、对象检测
- 五、语义分割
- 六、相似性学习
- 七、图像字幕
- 八、生成模型
- 九、视频分类
- 十、部署
- 深度学习快速参考
- 零、前言
- 一、深度学习的基础
- 二、使用深度学习解决回归问题
- 三、使用 TensorBoard 监控网络训练
- 四、使用深度学习解决二分类问题
- 五、使用 Keras 解决多分类问题
- 六、超参数优化
- 七、从头开始训练 CNN
- 八、将预训练的 CNN 用于迁移学习
- 九、从头开始训练 RNN
- 十、使用词嵌入从头开始训练 LSTM
- 十一、训练 Seq2Seq 模型
- 十二、深度强化学习
- 十三、生成对抗网络
- TensorFlow 2.0 快速入门指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 简介
- 一、TensorFlow 2 简介
- 二、Keras:TensorFlow 2 的高级 API
- 三、TensorFlow 2 和 ANN 技术
- 第 2 部分:TensorFlow 2.00 Alpha 中的监督和无监督学习
- 四、TensorFlow 2 和监督机器学习
- 五、TensorFlow 2 和无监督学习
- 第 3 部分:TensorFlow 2.00 Alpha 的神经网络应用
- 六、使用 TensorFlow 2 识别图像
- 七、TensorFlow 2 和神经风格迁移
- 八、TensorFlow 2 和循环神经网络
- 九、TensorFlow 估计器和 TensorFlow HUB
- 十、从 tf1.12 转换为 tf2
- TensorFlow 入门
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 数学运算
- 三、机器学习入门
- 四、神经网络简介
- 五、深度学习
- 六、TensorFlow GPU 编程和服务
- TensorFlow 卷积神经网络实用指南
- 零、前言
- 一、TensorFlow 的设置和介绍
- 二、深度学习和卷积神经网络
- 三、TensorFlow 中的图像分类
- 四、目标检测与分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自编码器,变分自编码器和生成对抗网络
- 七、迁移学习
- 八、机器学习最佳实践和故障排除
- 九、大规模训练
- 十、参考文献