深度 | Google Brain研究工程师:为什么随机性对于深度学习如此重要?

简介:

在一个怡人的午后,我开始尝试着用通俗易懂的语言向我妈妈解释随机性对于深度学习的重要性。尽管我妈妈还是对于深度学习一知半解,但是我认为我的努力部分成功了,我迷上了这种方式并将它应用在了我的实际工作中。


我想将这篇稍具技术性的小文章送给在深度学习领域的实践者,希望大家能够对神经网络内部的运行过程有更好的理解。

* * *


如果你是一个刚刚入门的新手,那么你有可能会觉得一大堆技术被随意的一股脑的用在了训练神经网络上,例如dropout正则化、扩增梯度噪声、异步随机下降。那这些技术有什么相同的呢?答案是他们都利用了随机性!

随机性是深度神经网络正常运行的关键:


· 随机噪声使得神经网络在单输入的情况下产生多输出的结果;


· 随机噪音限制了信息在网络中的流向,促使网络学习数据中有意义的主要信息;


· 随机噪声在梯度下降的时候提供了“探索能量”,使得网络可以寻找到更好的优化结果。


单输入多输出

* * *

(单进多出)


让我们假设你正在训练一个深度神经网络去实现分类。


4808c6a273ec17405b27edf46b6b32b8bb99110c


对于图中的每一个区域,网络会学习将图像映射到一系列的词语标签上,例如“狗”或者“人”。


这样的分类表现很不错,并且这样的深度神经网络不需要在推理模型中加入随机性。毕竟任何一张狗的图片应该被映射到“狗”这个词语标签上,这没有任何的随机性。


现在让我们来假设你在训练一个深度神经网络下围棋,在下图这样的情况下,深度神经网络需要落下第一个棋子。如果我们还是使用确定不变的策略,那么将无法得出一个好的结果。你可能会问,为什么啊?因为在这样的情况下最优的“第一步”选择不是唯一的,对于棋盘上的每一个位置来说,他们都和对面位置具有旋转对称性,所以具有相同的机会成为较优的选择。这是一个多元最优问题。如果神经网络的策略是确定并且是单输入单输出的话,优化过程会迫使网络选择移向所有最佳答案的平均位置,而这个结果不偏不倚的落在了棋盘的中心,这恰恰在围棋里被认为是一个糟糕的先手。


b6e0c1a2ee7dd987843c2f63acccdae23cbe8679


所以,随机性对于一个想输出多元最优估计的网络十分重要,而不是一遍遍重复输出相同的结果。当行动空间暗含对称性的情况下,随机性一个十分关键的因素,在随机性的帮助下,我们可以打破夹杂中间不能自拔的对称悖论。


同样的,如果我们想训练一个神经网络去作曲或者画画,我们当然不希望它总是演奏相同的音乐,描绘单调重复的场景。我们期待得到变化的韵律,惊喜的声音和创造性的表现。在结合随机性的深度神经网络中,一方面保持了网络的确定性,但是另一方面将其输出变成为概率分布的参数,使得我们可以利用卷积采样方法画出具有随机输出特性的样例图片。


DeepMind的阿法狗采用了这样的原则:基于一个给定的围棋盘图片,输出每一种走棋方式的获胜的概率。这种网络输出的分布建模被广泛应用与其他深度强化学习领域。


随机性与信息论

* * *


在刚刚接触概率论与数理统计时,我十分纠结于理解随机性的物理含义。抛一枚硬币时,结果的随机性来自哪里?随机性是否仅仅是确定性混沌?是否可以做到绝对的随机?


老实地说,我还是没有完全弄明白这些问题。


318f9043b98274d96a1c494aaed38020db07758e


信息论中将随机性定义为信息的缺失。具体来说一个物体的信息便是在计算机程序里能确定描述它的最小字节数。例如π的前一百万个字节可以被表示为字节长度为1,000,002个字符,但是同样也可以被完整的用70个字符表示出来,如下用莱布尼茨公式所示:


aa4b8ab01a03f54b7b61cdad6f4cb6b034dd64a4


上面的公式是π的一百万个数据的压缩表示。而更为精确的公式可以将π的前一百万个数据表示为更少的比特。从这个角度去解释的话,随机性是不可以被压缩的量。π的前一百万个量可以被压缩说明它们不是随机的。经验证据表明π是一个正规数(normal number),π中编码的信息是无穷的。


我们现在考虑用数字a表示π的前万亿个位数,如a=3.14159265...。如果我们在其中加上一个随机数r属于(-0.01,0.01),我们将会得到一个处于3.14059...和3.14259...之间的数。那么a+r里的有效信息只有三位数,因为加性随机噪声破坏了百位小数以后数位携带的信息。


迫使深度神经网络学到简洁表示

* * *


这个随机性的定义(指“随机性是不可以被压缩的量”,译者注)与随机性有什么联系呢?


随机性嵌入到深度神经网络的另一种途径是直接将噪声嵌入到网络本身,这与用深度神经网络去模拟一个分布不同。这种途径使得学习任务变得更加困难,因为网络需要克服这些内在的“扰动”。


我们到底为什么想要在网络中引入噪声?一个基本的直觉是噪声能够限制数据通过网络传输的信息容量。


我们可以参考自动编码(auto-encoder)模型,这种神经网络结构尝试通过“压缩”输入数据、在隐含层得到更低维度的表示来得到有效的编码,并且在输出层重构原始数据。下面是一个示意图:


12cfd69bee7b0190cc66a24ff6f40bdecbf4ed6b


在训练过程中,输入数据从左边通过网络的节点,在右边出来,非常像一个管道。


假设我们有一个理论上存在的神经网络,其可以在实数(而不是浮点数)上训练。如果该网络中没有噪声,那么深度神经网络的每一层实际上都在处理无穷多的信息量。尽管自动编码网络可以把一个1000维的数据压缩到1维,但是这个1维的数可以用实数去编码任意一个无穷大维度的数,如3.14159265……


因此网络不需要压缩任何数据,也学不到任何有意义的特征。尽管计算机不会真的把数字以无穷维精度表示,但它倾向于给神经网络提供远远超过我们原本希望的数据量。


通过限制网络中的信息容量,我们可以迫使网络从输入特征里学到简洁的表示。现在已经有几种方法是这么做的:


• 变分自动编码(VAE) – 其在隐含层里加入高斯噪声,这种噪声会破坏“过剩信息”,迫使网络学习到训练数据的简洁表示。


• Dropout正则化与变分自动编码的噪声紧密相关(可能等价?) - 其随机将网络中的部分单元置为0,使其不参与训练。与变分自动编码相似,dropout噪声迫使网络在有限的数据里学习到有用的信息。


• 随机深度的深度网络 – 思想与dropout类似,但不是在单元层面上随机置0,而是随机将训练中的某些层删除,使其不参与训练。


• 有一篇非常有趣的文章是《二值化神经网络》(Binarized Neural Networks)。作者在前向传播中使用二进制的权重和激活,但在后向传播中使用实值的梯度。这里网络中的噪声来自于梯度—— 一种带噪声的二值化梯度。二进制网络(BinaryNets)不需要比常规的深度神经网络更加强大,每个单元只能编码一个比特的信息,这样正则是为了防止两个特征通过浮点编码被压缩在一个单元里。


更加有效的压缩方案意味着测试阶段的更好的泛化能力,这也解释了为什么dropout对防止过拟合如此有效。如果你决定用常规的自动编码而不是变分自动编码,你必须用随机正则化技巧,比如dropout,去控制压缩后的特征的比特数,不然你的网络将非常可能过拟合。


客观地说,我觉得变分自动编码网络(VAEs)更有优势,因为它们容易实现,并且允许你精确指定每层网络有多少比特的信息通过。


在训练中避免局部最小值

* * *


训练深度神经网络通常是通过梯度下降的变体来完成,基本意味着网络是通过降低在整个训练数据集上的平均损失误差来迭代参数。这就像从山上向山下走,当你走到山谷最底部的时候,你会找到神经网络的最优参数。


这种方法的问题是,神经网络的损失函数表面有很多个局部最小值和高原(因为网络拟合的函数通常非凸,译者注)。网络的损失函数很容易陷入一个小坑里,或者陷入一个斜率几乎为0的平坦区域(局部最小值),但你觉得此时还没有得到满意的结果。


e92d73dc4c89319ef878cd2aa73f675dc5ed69d3


随机性到底如何帮助深度学习模型?我的第三点解释是基于探索的想法。


因为用于训练深度神经网络的数据集通常都非常大,如果我们在每次梯度下降中对上千兆的数据通通计算梯度,这个计算量实在是太大了!事实上,我们可以使用随机梯度下降算法(SGD)。在这个算法里,我们只需要从数据集中随机挑选小部分数据,并且计算其平均梯度就可以了。


在进化中,如果物种的成功延续用随机变量X模拟,那么随机的突变或噪声会增加X的方差,其子孙可能会远远变得更好(适应性,防毒能力)或者远远变得更差(致命弱点,无法生育)。


在数值优化中,这种“基因突变”被称为“热力学能量”或“温度”,其允许参数的迭代轨迹并非总走“下山路”,而是偶尔地从局部最小值跳出来或者通过“穿山隧道”。


这些都与增强学习里的“探险-开采”平衡紧密相关。训练一个纯确定性的、没有梯度噪声的深度神经网络,其“开采”能力为0、直接收敛到最近的局部最小点,而且网络是浅层的。


使用随机梯度(通过小批量样本或在梯度本身加入噪声)是一个允许优化方法去做一些“搜索”和从局部最小值“跳出”的有效途径。异步随机梯度下降算法是另一个可能的噪声源,其允许多个机器并行地计算梯度下降。


这种“热力学能量”保证可以破坏训练的早期阶段中的对称性,从而保证每层网络中的所有梯度不同步到相同的值。噪声不仅破坏神经网络在行为空间中的对称性,而且破坏神经网络在参数空间里的对称性。


最后的思考

* * *


我发现有个现象非常有趣,即随机噪声事实上在帮助人工智能算法避免过拟合,帮助这些算法在优化或增强学习中找到解空间。这就提出了一个有趣的哲学问题:是否我们的神经编码中的固有噪声是一种特征,而不是瑕疵(bug)。


有一个理论机器学习问题让我很有兴趣:是否所有的神经网络训练技巧事实上是某些通用正则化定理的变形。也许压缩领域的理论工作将会对理解这些问题真正有所帮助。


如果我们验证不同神经网络的信息容量与手工设计的特征表示相比较,并观察这些比较如何关系到过拟合的趋势和梯度的质量,这会是一件非常有趣的事情。度量一个带有dropout或通过随机梯度下降算法训练的网络的信息容量当然不是没有价值的,而且我认为这是可以做到的。比如,构建一个合成矢量的数据集,这些矢量的信息容量(以比特,千字节等为单位)是完全已知的,我们可以通过结合类似于dropout的技巧,观察不同结构的网络如何在这个数据集上学到一个生成式模型。


-END-

本文来源于"中国人工智能学会",原文发表时间" 2016-08-12"

相关文章
|
机器学习/深度学习 数据可视化 网络架构
增强深度学习模型的可解释性和泛化能力的方法研究
【8月更文第15天】在深度学习领域,模型的准确率和预测能力是衡量模型好坏的重要指标。然而,随着模型复杂度的增加,它们往往变得越来越难以理解,这限制了模型在某些关键领域的应用,例如医疗诊断、金融风险评估等。本文将探讨如何通过几种方法来增强深度学习模型的可解释性,同时保持或提高模型的泛化能力。
1248 2
|
机器学习/深度学习 人工智能 TensorFlow
TensorFlow 是一个由 Google 开发的开源深度学习框架
TensorFlow 是一个由 Google 开发的开源深度学习框架
254 3
|
10月前
|
机器学习/深度学习 数据采集 传感器
基于深度学习的图像识别技术在自动驾驶中的应用研究####
本文旨在探讨深度学习技术,特别是卷积神经网络(CNN)在自动驾驶车辆图像识别领域的应用与进展。通过分析当前自动驾驶技术面临的挑战,详细介绍了深度学习模型如何提升环境感知能力,重点阐述了数据预处理、网络架构设计、训练策略及优化方法,并展望了未来发展趋势。 ####
376 6
|
11月前
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
471 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
10月前
|
机器学习/深度学习 监控 自动驾驶
基于深度学习的图像识别技术研究进展###
本文旨在探讨深度学习在图像识别领域的最新研究进展,重点分析卷积神经网络(CNN)的技术创新、优化策略及其在实际应用中的成效。通过综述当前主流算法结构、损失函数设计及数据集增强技巧,本文揭示了提升模型性能的关键因素,并展望了未来发展趋势。尽管未直接涉及传统摘要中的研究背景、方法、结果与结论等要素,但通过对关键技术点的深度剖析,为读者提供了对领域现状与前沿动态的全面理解。 ###
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
软件工程师,入门下深度学习吧
软件工程师,入门下深度学习吧
132 9
|
11月前
|
机器学习/深度学习 搜索推荐 算法
深度学习-点击率预估-研究论文2024-09-14速读
深度学习-点击率预估-研究论文2024-09-14速读
170 0
|
机器学习/深度学习 算法 PyTorch
PyTorch Lightning:简化深度学习研究与开发
【8月更文第27天】PyTorch Lightning 是一个用于简化 PyTorch 开发流程的轻量级封装库。它的目标是让研究人员和开发者能够更加专注于算法和模型的设计,而不是被训练循环和各种低级细节所困扰。通过使用 PyTorch Lightning,开发者可以更容易地进行实验、调试和复现结果,从而加速研究与开发的过程。
439 1
|
机器学习/深度学习 人工智能 安全
深度学习中的对抗性样本研究
在深度学习技术飞速发展的今天,对抗性样本作为一项重要的安全议题,引起了研究者们的广泛关注。对抗性样本指的是经过精心设计的、能够误导深度学习模型做出错误判断的输入数据。本文将深入探讨对抗性样本的生成机制、防御策略以及对未来深度学习安全性的影响,同时通过实验数据分析,揭示对抗性攻击对模型性能的具体影响,旨在为深度学习的安全性研究提供理论依据和实践指导。 【7月更文挑战第19天】
219 2
|
机器学习/深度学习 存储 搜索推荐
Elasticsearch与深度学习框架的集成案例研究
Elasticsearch 是一个强大的搜索引擎和分析引擎,广泛应用于实时数据处理和全文搜索。深度学习框架如 TensorFlow 和 PyTorch 则被用来构建复杂的机器学习模型。本文将探讨如何将 Elasticsearch 与这些深度学习框架集成,以实现高级的数据分析和预测任务。
198 0

热门文章

最新文章

推荐镜像

更多