TensorFlow从1到2 | 第一章 消失的梯度

上一主题 《TensorFlow从0到1》介绍了人工神经网络的基本概念与其TensorFlow实现,主要基于浅层网络架构,即只包含一个隐藏层的全连接(FC,Full Connected)网络。

新主题 《TensorFlow从1到2》 将探索近5年来取得巨大成功的深度神经网络(Deep Neural Networks),它已成为机器学习中一个独立的子领域——深度学习(Deep Learning)。

本篇解释“深度”的含义,并引出在纵向扩展神经网络时所遇到的一个障碍——消失的梯度问题(Vanishing Gradient Problem)。

Vanishing Gradient Problem,来源:https://www.youtube.com/watch?v=SKMpmAOUa2Q

神秘的黑盒

神经网络是一个“黑盒”(Black Box)。不仅外行人看它如此,即使是对亲手构建它并训练它的工程师而言,亦是如此。

它的神秘,并不在于打不开、看不到,而是学习过程不可控,识别原理不可解释。

以一个全连接网络为例。当预设了它的架构,并对其进行初始化后,剩下的就是喂数据给它,至于网络中数以万计的权重和偏置如何调整,又将止步何处,整个动态优化的过程人类完全插不上手。

当网络训练收敛,并惊艳的输出超越人类的识别结果,若此时去查看网络的所有参数和中间结果,肯定会令人失望的,因为那无非是一堆调整的恰到好处的数字,但它们究竟意味着什么概念和逻辑,则不得而知。

理解隐藏层

机器思考的逻辑形式如密码一般晦涩难懂,但是并没有妨碍它成功的应用在诸多领域。所幸研究者除了关注如何进一步提升网络性能,还积极尝试去“解码”机器学习的秘密,而且已经获得了很多启发性的理解。

简单来说,从神经网络输入层的“裸数据”开始,经历层层前馈(Feedforward),最终在输出层获得一个高度抽象的、人类定义的类别概念,而这两端之间的每一层隐藏层都可以看做不同层次的概念表示,离输入层越近的抽象程度越低,反之离输出层越近的抽象程度越高。

以一个识别汽车图片的网络为例,来模拟这种理解,如下图所示。

第一个隐藏层,输入图像像素,可能表示形状的概念。第二个隐藏层,输入为几何形状,概念进一步抽象,可能表示汽车的零部件,直到输出层可以用于综合判断是否可以分类为汽车。

概念层次

上图只是对解释神经网络一种理想的模拟。实际情况中,不同的数据和目的,会训练出不同的网络,而每一层意义也会大相径庭。基于这种启发,研究者已经发展出逐层的可视化分析手段,尝试去理解机器学习的机理。

“深度”的定义

2006年,Hinton发表《基于深度置信网络的快速学习方法》,深度神经网络(DNN)和深度学习(Deep Learning)被提出。

从形式上说,包含两层或更多隐藏层的网络即可称为深度神经网络。

《Deep Learning》中深度学习的定义如下:

(本书所围绕的)这个方案让计算机从经验中学习,并根据层次化的概念体系来理解世界,而每个概念则通过与之关联的更简单的概念来定义。从经验获取知识这种方法,可以避免由人类形式化的制定所有计算机所需要的知识。运用层次化的概念,计算机可以通过较简单的概念来构建复杂的概念。如果我们绘制一个图形来表示概念是如何建立在其他概念之上,这个图形会很深,具有很多层。基于这个原因,我们称这种方法为AI深度学习。

理解机器视角下的层次化概念意义深远,一旦可以充分解释,人类就可以向机器请教,从而照亮思维的盲区。遭遇过Master(即AlphaGo)的柯洁,在正式对战AlphaGo之前,就已经知道了结局:

人类数千年的实战演练进化,计算机却告诉我们人类全都是错的。

我觉得,甚至没有一个人沾到围棋真理的边。但是我想说,从现在开始,我们棋手将会结合计算机,迈进全新的领域达到全新的境界。

棋士柯洁

无效的隐藏层

基于对深度的理解,我们似乎获得了一个简单可行的终极方案:尽可能的增加隐藏层!

以MNIST识别为例,使用在上一主题中构建好的全连接网络进行训练,测试结果如下表所示:

隐层数量

每隐层神经元数

迭代次数

识别精度

代码

1

隐层x1

100

30

95.25%

tf_2-1_1_hidden_layers.py

2

隐层x2

100

30

95.87%

tf_2-1_2_hidden_layers.py

3

隐层x3

100

30

96.3%

tf_2-1_3_hidden_layers.py

4

隐层x4

100

60

96.08%

tf_2-1_4_hidden_layers.py

令人稍感绝望,随着隐藏层数量的增加,识别精度增长并不显著,而当隐藏层数量增加到4层时,不仅需要更多的迭代次数,识别精度反而开始下降了。

可说好的“深度”呢?

消失的梯度

通过追加隐藏层来实现深度神经网络,并不奏效。真正的问题不在“深度”本身,而是由梯度下降算法所指导的训练过程存在困难,其中一个经典障碍就是消失的梯度问题(Vanishing Gradient Problem),以及与之成对存在的爆炸的梯度问题(Exploding Gradient Problem)。

以下图中的网络为例来解释下梯度消失问题。

假设我们能抽出由蓝色神经元构成的前馈路径,形成一个每层只有一个神经元的多层网络,尝试获得损失C对第一层神经元偏置b1的梯度。采用链式法则进行反向传播进行推导:

整理得到下式,再次表达出反向传播的含义:参数的梯度会受到其后每层神经元的乘性影响,越靠近输出层的,乘性因子越多。这会导致梯度的不稳定——容易过大或者过小,最终各层神经元的更新速率差异显著。

接下来说明梯度是如何消失的。

假设网络参数初始化符合标准正态分布N(0,1),且神经元的激活函数采用Sigmoid函数,那么大部分情况下|w| < 1,而Sigmoid的导数σ' < 1/4。Sigmoid导数曲线见下图。

Sigmoid导数曲线

于是有:

可见网络越深,靠近输入层的神经元的梯度越小,几近消失,神经元也停止学习。

ReLU是救星吗?

ReLU

当看到sigmoid激活函数导数的最大值不过1/4时,你一定会想到ReLU(Rectified Linear Units),整流线性单元,如上图所示。在输入大于0时,它的导数为1,几乎完美。

可如果一个ReLU就能解决深度神经网络难训练的问题,Hinton就不会在2006年发表《基于深度置信网络的快速学习方法》了。

将隐藏层的激活函数全部换成ReLU进行实验,结果如下表所示。尽管识别精度比Sigmoid版本高了2个点,但是随着层数的增加,识别精度并没有出现大幅的提高。

隐层数量

每隐层神经元数

迭代次数

识别精度

代码

1

隐层x1

100

30

97.62%

tf_2-1_1_hidden_layers_relu.py

2

隐层x2

100

30

97.72%

tf_2-1_2_hidden_layers_relu.py

3

隐层x3

100

30

97.79%

tf_2-1_3_hidden_layers_relu.py

4

隐层x4

100

60

97.79%

tf_2-1_4_hidden_layers_relu.py

尽管RelU已取代Sigmoid称为神经元标配激活函数,很大程度上平衡了各层更新速率的差异,但是基于梯度下降算法导致的梯度不稳定性,是算法本身所固有的:

深度学习的复兴

2006年,Hinton的深度信念网络(Deep Belief Network,DBN),是通过对每层神经元单独进行训练来完成学习过程的,成为第一批成功应用深度架构训练的非卷积模型之一,由此开启了深度学习的复兴。而将深度学习带入巅峰的则是我们主题的主角:卷积神经网络(CNN)。

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

开发 | 深度学习中的“深度”究竟怎么理解?

AI科技评论按:本文原作者 YJango,本文原载于其知乎专栏——超智能体。AI科技评论已获得原作者授权。 介绍 为了研究神经网络,我们必须要对什么网络是什么有...

3017
来自专栏专知

【干货面经】常见面试之机器学习算法思想简单梳理

【导读】这是早期一篇关于机器学习面试方面的干货总结。到今天也值得一看。请大家看阅。 作者:tornadomeet 出处:http://www.cnblogs....

8788
来自专栏新智元

【干货】AI 实践者需要掌握的10大深度学习方法:反向传播、迁移学习、梯度下降……

来源:towardsdatascience.com 编译:马文 文强 【新智元导读】本文总结了10个强大的深度学习方法,包括反向传播、随机梯度下降、学习率衰减...

3509
来自专栏人工智能的秘密

4种普遍的机器学习分类算法

本文主要介绍了 4 种应用比较普遍的的机器学习算法,但是机器学习算法还有其他很多不同的算法,大家感兴趣的可以自己去了解。

2340
来自专栏机器之心

学界 | 正在涌现的新型神经网络模型:优于生成对抗网络

选自Medium 作者:Alfredo Canziani等人 机器之心编译 参与:黄小天、吴攀 随着深度神经网络技术的发展,新型的网络架构也在不断涌现。普渡大学...

36210
来自专栏WD学习记录

牛客网 机器学习题目

SVM核函数:线性核函数、多项式核函数、径向基核函数、高斯核函数、幂指数核函数、拉普拉斯核函数、ANOVA核函数、二次有理核函数、多元二次核函数、逆多元二次核函...

1393
来自专栏媒矿工厂

HDR关键技术:逆色调映射(二)

HDR技术近年来发展迅猛,在未来将会成为图像与视频领域的主流。当前HDR内容非常短缺,限制了HDR视听节目的广泛应用。逆色调映射(Inverse Tone Ma...

3086
来自专栏智能算法

常见面试之机器学习算法思想简单梳理

来源: tornadomeet 的博客(@tornadomeet) 链接: www.cnblogs.com/tornadomeet/p/3395593.htm...

36510
来自专栏CreateAMind

论文解读:生成模型采样-类比学习应用 多图

911
来自专栏人工智能

利用 SVCCA 解释深度神经网络

文 / Google Brain 团队 Maithra Raghu 深度神经网络 (DNN) 推动视觉、语言理解和语音识别等领域取得了前所未有的进步。但是,这些...

1966

扫码关注云+社区