跟我一起学PyTorch-05:深度神经网络DNN

前面我们介绍了神经网络,包括神经元函数,激活函数,前向算法,反向传播算法,梯度下降等,这些内容基本上是传统神经网络的范畴,这个浪潮大致在1980~1995年之间,主要标志是1986年David Rumelhart和Geoffrey Hinton等人使用反向传播算法训练具有一两个隐含层的神经网络。这种模拟人脑系统的神经网络初步成功,在一些诸如异或(XOR)问题上能够完美解决,人们热切地盼望着人工智能时代的到来。不少基于神经网络技术和其他AI技术的公司纷纷建立起来,但是在很多图像识别的实际问题上,神经网络很难进行训练,神经网络的参数调试需要很多技巧;同时,其他机器学习方法如SVM(Support Vector Machine,支持向量机)、图模型取得了长足的进步。这两者导致神经网络研究热潮的衰退,这种现象持续到2006年。

Geoffrey Hinton提出了一种名为“深度信念网络”的神经网络,可以使用“贪婪逐层预训练”的策略有效地进行神经网络的训练。紧接着,这种方法在其他神经网络的训练上也取得了成功。在诸如图像识别、语音识别等领域,这些新型的神经网络取得了令人瞩目的成绩,标志着机器学习一个全新时代的到来。这些新型的神经网络统称为深度学习,因为这些神经网络的模型可以有多个隐含层。深度学习主要包括深度神经网络DNN、卷积神经网络CNN、循环神经网络RNN、LSTM以及强化学习等。

深度学习之所以能够成功,是因为解决了神经网络的训练问题,使得包含多个隐含层的神经网络模型变得可能。神经网络训练问题的解决,包括了四个方面的因素:
(1)硬件设备特别是高性能GPU的进步,极大地提高了数值运算和矩阵运算的速度,神经网络的训练时间明显减少。
(2)大规模得到标注的数据集(如CIFAR10和ImageNet等)可以避免神经网络因为参数过多而得不到充分训练的问题。
(3)新型神经网络的提出,包括深度信念网络、受限玻尔兹曼机、卷积神经网络CNN、循环神经网络RNN、LSTM等。
(4)优化算法上的进步,包括ReLU激活函数、Mini-Batch梯度下降算法、新型优化器、正则化、Batch Normalization以及Dropout等。

本章主要介绍深度神经网络、梯度下降算法、优化器及正则化等优化训练技巧。

1.深度神经网络

如果神经网络中前后层的所有结点都是相连的,那么这种网络结构称为全连接层网络结构。深度神经网络是最基础的神经网络之一,最显著的特征是其隐含层由全连接层构成。全连接层是一个经典的神经网络结构层。如下图所示,该深度神经网络主要包括1个输入层,3个隐含层和1个输出层。前后层的所有结点都是两两相连的。

image.png

深度神经网络是传统神经网络的扩展,看起来就是深度神经网络包含多个隐含层。不过,这个看似小小的飞跃的背后,经历了长达20年的艰辛探索。1986年基于后向传播的神经网络取得成功,人们期待神经网络一飞冲天,结果很快发现神经网络只能在有限的领域有效,同时还有严苛的训练技巧。直到2006年,Hilton提出“贪婪逐层训练”的策略进行神经网络训练,在图像识别和语音识别领域率先突破,才取得了令人瞩目的成绩。后续研究发现,这种逐层训练的技巧不是完全必要的,在训练数据和计算资源充足的情况下,使用ReLU激活函数、Mini-Batch梯度下降算法、新型优化器、正则化、Batch Normalization及Dropout等算法,就能训练得到比较满意的深度学习模型。那么传统的神经网络为什么难以训练呢?

1.神经网络为何难以训练

神经网络在层数较多的网络模型训练的时候很容易出问题。除了计算资源不足和带标注的训练数据因素引起的问题外,还表现出两个重大的问题:梯度消失问题和梯度爆炸问题。这两个问题在模型的层数增加时会变得更加明显。例如在上图所示的深度神经网络中,如果存在梯度消失问题,根据反向传播算法原理,接近输出的隐含层3的权值更新相对正常;在反方向上,权值更新越来越不明显,以此类推,接近输入层的隐含层1的权值更新几乎消失,导致经过很多次的训练后,仍然接近初始化的权值,这样导致隐含层1相当于只对输入层做了一个同一映射,那么整个神经网络相当于不包括隐含层1的神经网络。

这个问题是如何产生的呢?在神经网络的训练中,以反向传播算法为例(假设神经网络中一个隐含层,且对每个神经元都有: y i = σ ( z i ) = σ ( w i x i + b i ) y_i=\sigma(z_i)=\sigma(w_ix_i+b_i) yi=σ(zi)=σ(wixi+bi) σ \sigma σ 表示Sigmoid激活函数),如下图所示:

image.png

根据链式法则可以推导如下:

∂ C ∂ b 1 = ∂ C ∂ y 4 ∂ y 4 ∂ z 4 ∂ z 4 ∂ x 4 ∂ x 4 ∂ z 3 ∂ z 3 ∂ x 3 ∂ x 3 ∂ z 2 ∂ z 2 ∂ x 2 ∂ x 2 ∂ z 1 ∂ z 1 ∂ b 1 = ∂ C ∂ y 4 σ ′ ( z 4 ) w 4 σ ′ ( z 3 ) w 3 σ ′ ( z 2 ) w 2 σ ′ ( z 1 ) w 1 \frac{\partial C}{\partial b_1}=\frac{\partial C}{\partial y_4}\frac{\partial y_4}{\partial z_4}\frac{\partial z_4}{\partial x_4}\frac{\partial x_4}{\partial z_3}\frac{\partial z_3}{\partial x_3}\frac{\partial x_3}{\partial z_2}\frac{\partial z_2}{\partial x_2}\frac{\partial x_2}{\partial z_1}\frac{\partial z_1}{\partial b_1}=\frac{\partial C}{\partial y_4}\sigma'(z_4)w_4\sigma'(z_3)w_3\sigma'(z_2)w_2\sigma'(z_1)w_1 b1C=y4Cz4y4x4z4z3x4x3z3z2x3x2z2z1x2b1z1=y4Cσ(z4)w4σ(z3)w3σ(z2)w2σ(z

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值