### 3.2整改
多层网络通常是高度非线性的,并且整流通常是将非线性引入模型的第一阶段处理。整流是指将点状非线性(也称为激活函数)应用于卷积层的输出。该术语的使用借鉴了信号处理,其中整流是指从交流到直流的转换。这是另一个处理步骤,从生物学和理论点观点中找到动机。计算神经科学家引入整流步骤,以寻找最佳解释手头神经科学数据的适当模型。另一方面,机器学习研究人员使用整改来获得学习更快更好的模型。有趣的是,两个研究流程都倾向于同意,不仅仅是需要纠正,而且它们也趋同于同一类型的整改。
#### 3.2.1生物学观点
从生物学的角度来看,整流非线性通常被引入到神经元的计算模型中,以便解释它们作为输入函数的激发率[31]。生物神经元的射击率一般被广泛接受的模型被称为漏泄积分和火(LIF)[31]。该模型解释了任何神经元的输入信号必须超过某个阈值才能使细胞发射。研究视皮层细胞的研究也特别依赖于类似的模型,称为半波整流[74,109,66]。
值得注意的是,Hubel和Wiesel的开创性工作已经证明,简单单元包括线性滤波后半波整流的非线性处理[74]。如前面3.1节所述,线性算子本身可以被认为是卷积运算。众所周知,根据输入信号,卷积可以产生正或负输出。然而,实际上细胞的“放电速率是定义为正。这就是为什么Hubel和Wiesel建议采用剪切操作形式的非线性,只考虑正反应。更符合LIF模型,其他研究建议略有不同的半波整流,其中削波操作基于某个阈值(_即_。除了零之外)[109]。另一个更完整的模型也考虑了可能出现的负面反应在这种情况下,作者提出了一种双路半波整流方法,其中正负输入信号分别被截断并在两条不同的路径中传输。另外,为了处理负数响应两个信号之后是逐点平方操作,因此整流被称为半平方(虽然生物神经元不一定共享这个属性)。在这个mo del将细胞视为编码正负输出的相反相的能量机制。
##### 讨论
值得注意的是,这些具有生物学动机的神经元激活功能模型已成为当今卷积网络算法的常见做法,并且部分地对其成功的大部分负责,这将在下面讨论。
#### 3.2.2理论观点
从理论的角度来看,机械学习研究人员通常会引入整改,主要有两个原因。首先,它通过允许网络学习更复杂的功能来用于增加提取的特征的区分能力。其次,它允许控制数据的数字表示以便更快地学习。历史上,多层网络依赖于使用逻辑非线性或双曲正切的逐点S形非线性[91]。虽然逻辑函数在生物学上更合理,因为它没有负输出,但更常使用双曲正切,因为它具有更好的学习性质,例如![](https://img.kancloud.cn/fb/02/fb0294de83ba79f08ad4634c597b108c_9x12.gif)周围的稳态(见图3.7(a)和(b),分别)。为了说明双曲正切激活函数的负部分,通常后面是模数运算(也称为绝对值整流AVR)[77]。然而,最近由Nair _等_首次引入的整流线性单元(ReLU)。 [111],很快成为许多领域的默认整流非线性(_,例如_。[103]),尤其是计算机视觉以来,它首次成功应用于ImageNet数据集[88]。在[88]中显示,与传统的S形整流功能相比,ReLU在过度拟合和加速训练过程中起着关键作用,即使在导致更好的性能的同时也是如此。
数学上,ReLU定义如下,
![](https://img.kancloud.cn/2b/90/2b904dc34267c704e5e10cc4fd7107ef_142x18.gif)(3.2)
并在图3.7(c)中描述。对于任何基于学习的网络,ReLU运营商有两个主要的理想属性。首先,由于正输入的导数为![](https://img.kancloud.cn/55/95/559537f1e11c68d8ba3d9f6d540de6b0_7x13.gif),因此ReLU不会对正输入饱和。这种特性使得ReLU特别具有吸引力,因为它消除了依赖于S形非线性的网络中通常存在的消失梯度的问题。其次,鉴于当输入为负时,ReLU将输出设置为![](https://img.kancloud.cn/fb/02/fb0294de83ba79f08ad4634c597b108c_9x12.gif),它引入了稀疏性,这有利于更快的训练和更好的分类准确性。实际上,为了改进分类,通常希望具有线性可分的特征,稀疏表示通常更容易分离[54]。然而,负输入的硬![](https://img.kancloud.cn/fb/02/fb0294de83ba79f08ad4634c597b108c_9x12.gif)饱和度具有其自身的风险。这里有两个互补的问题。首先,由于硬零点激活,如果从未激活到这些部分的路径,则网络的某些部分可能永远不会被训练。其次,在退化的情况下,给定层的所有单元都有负输入,反向传播可能会失败,这将导致类似消失梯度问题的情况。由于这些潜在的问题,已经提出了对ReLU非线性的许多改进以更好地处理负输出的情况,同时保持ReLU的优点。
ReLU激活函数的变化包括漏泄整流线性单元(LReLU)[103]及其密切相关的参数整流线性单元(PReLU)[63],它们在数学上被定义为
![](https://img.kancloud.cn/2d/98/2d984149ce201224d965f6fdadaeb20d_256x18.gif)(3.3)
并在图3.7(d)中描述。在LRelu中![](https://img.kancloud.cn/c3/61/c3613cb00d78b4d0d6e7619f639a4181_13x11.gif)是固定值,而在PReLU中学习。最初引入LReLU是为了避免反向传播期间的零梯度,但没有显着改善测试网络的结果。此外,它在选择参数![](https://img.kancloud.cn/c3/61/c3613cb00d78b4d0d6e7619f639a4181_13x11.gif)时严重依赖交叉验证实验。相比之下,PReLU在训练期间优化了该参数的值,从而提高了性能。值得注意的是,PReLU最重要的结果之一是网络中的早期层倾向于学习更高的参数值![](https://img.kancloud.cn/c3/61/c3613cb00d78b4d0d6e7619f639a4181_13x11.gif),而对于网络层次结构中的更高层,该数字几乎可以忽略不计。作者推测这个结果可能是由于在不同层次学习过滤器的性质。特别是,由于第一层内核通常是带状滤波器,所以响应的两个部分都保持不变,因为它们代表输入信号的潜在显着差异。另一方面,更高层的内核被调整为检测特定对象并且被训练为更加不变。
| ![](https://img.kancloud.cn/bf/1e/bf1e3aff780c95ca16e6bbbb42e0572e_165x157.png) | ![](https://img.kancloud.cn/5a/2c/5a2cc76b0a8838e549ec0973fcd37838_165x158.png) | ![](https://img.kancloud.cn/c3/1a/c31a46a0d50c794b38a588fc13c1f38e_165x157.png) |
| (a)物流 | (b)tanh | (c)ReLU |
| ![](https://img.kancloud.cn/46/29/4629f6c025f3fb17a6f9b243c6d45f3c_165x156.png) | ![](https://img.kancloud.cn/cc/8f/cc8ff7aea4f4f22aa2071e9869d4c2c8_165x158.png) | ![](https://img.kancloud.cn/74/8f/748f386550fce5529f9c86bc3046b49f_165x157.png) |
| (d)LReLU / PReLU | (e)SReLU | (f)EReLU |
图3.7:多层网络文献中使用的非线性校正函数。
有趣的是,基于类似的观察[132]提出了另一种整流功能,称为级联整流线性单元(CReLU)。在这种情况下,作者建议CReLU从观察开始,在大多数ConvNets的初始层学习的内核倾向于形成负相关对(_即_。过滤器![](https://img.kancloud.cn/21/ae/21ae7b442f7a9ec0d354cf226c7b0547_26x13.gif)度异相)如图所示在图3.8中。这一观察意味着ReLU非线性消除的负响应被相反相位的学习核所取代。通过用CReLU替换ReLU,作者能够证明设计用于编码双路径校正的网络可以带来更好的性能,同时通过消除冗余来减少要学习的参数数量。
![](https://img.kancloud.cn/76/b4/76b49244a0505466affb6926de6f9a04_365x139.png)
图3.8:由ImageNet数据集训练的AlexNet学习的Conv1过滤器的可视化。图[132]转载。
ReLU系列的其他变化包括:S形整流线性单元(SReLU)[82],定义为
![](https://img.kancloud.cn/18/66/18660be3990b6d3ca1d0177cf847d387_127x24.gif)(3.4)
并在图3.7(e)中描述,其被引入以允许网络学习更多的非线性变换。它由三个分段线性函数和4个可学习参数组成。 SReLU的主要缺点是它引入了几个要学习的参数(_,即_。特别是如果参数不在多个通道之间共享),这使得学习变得更加复杂。考虑到这些参数的错误初始化可能会损害学习,这种担忧尤其如此。另一种变体是指数线性单位(ELU)[26],定义为
![](https://img.kancloud.cn/d6/97/d697191524ff49b3a618dd66a79a07ac_271x55.gif)(3.5)
并且如图3.7(f)所示,其动机是希望通过迫使信号饱和到由负输入的变量![](https://img.kancloud.cn/38/9a/389a9983ea24ad0b3af0559c2aca381b_11x8.gif)控制的值来增加噪声的不变性。 ReLU家族中所有变体的共同点是,也应该考虑负面输入并进行适当处理。
在散射网络[15]中提出了对整流非线性选择的另一种展望。如前面3.1节所述,ScatNet是手工制作的,其主要目标是增加表示对各种变换的不变性。由于它在卷积层中广泛依赖于小波,因此它对于小的变形是不变的;但是,它仍然适用于翻译。因此,作者依赖于定义为的积分运算
![](https://img.kancloud.cn/31/85/3185badbd89319ad0d16ee3a01a8efdc_314x41.gif)(3.6)
并实现为平均合并,以增加移位不变性水平。因此,预期随后的汇集操作可以将响应推向零,_即_。在正响应和负响应相互抵消的情况下,![](https://img.kancloud.cn/bf/40/bf40e5d232290d8bd9544a4a6857039e_53x20.gif)范数运算符用于整流步骤以使所有响应为正。再一次,值得注意的是,依赖于双曲正切激活函数的传统ConvNets也使用类似的AVR校正来处理负输出[91,77]。此外,更多生物学动机模型,如半平方整流[66,67],依赖于信号的逐点平方来处理负响应。该平方操作还允许在能量机制方面对响应进行推理。有趣的是,最近一个理论驱动的卷积网络[60]也提出了一个定义为两路径整流策略
(3.7)
其中![](https://img.kancloud.cn/06/82/06829e442ea4f129ad1d7f67c5c15dda_84x20.gif)是卷积运算的输出。该整流策略结合了保持滤波信号的两个相位和逐点平方的思想,从而允许在考虑光谱能量方面的结果信号的同时保护信号幅度和相位。
##### Discussion
有趣的是,从理论的角度来看,广泛的ReLU非线性明显成为整流阶段最受欢迎的选择。值得注意的是,完全忽略负输入(_即_。在ReLU中所做的)的选择似乎更值得怀疑,因为提出替代选择的许多贡献证明了这一点[103,63,82,26,132] ]。将ReLU的行为与ScatNet [15]和旧的ConvNet架构[77]中使用的AVR校正进行比较也很重要。虽然AVR保留了能量信息但是擦除了相位信息,但另一方面,ReLU通过仅保留信号的正部分来保持某种意义上的相位信息;然而,它不会保留能量,因为它会丢弃一半的信号。值得注意的是,尝试保留两者的方法(_,例如_ .CReLU [132]和在SOE-Net [60]中使用(3.7))能够在多个任务中获得更好的性能,并且这些方法是也与生物学研究结果一致[66]。
- 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
- 六、自编码器,变分自编码器和生成对抗网络
- 七、迁移学习
- 八、机器学习最佳实践和故障排除
- 九、大规模训练
- 十、参考文献