Deep Learning

在这里插入图片描述深度神经网络代替机器学习的最终产品,学习规则成为从训练数据生成模型(深度神经网络)的算法。知道深度学习只是使用**更深层(更隐蔽的层)**的神经网络

单层神经网络,即第一代神经网络,在解决机器学习面临的实际问题时,很快就揭示了其基本局限性。研究人员已经知道多层神经网络将是下一个突破。可能不容易理解为什么只需要一个附加层就需要这么长时间。这是因为没有找到适合多层神经网络的学习规则。由于训练是神经网络存储信息的唯一方式,无法训练的神经网络是无用的

1986年,当反向传播算法被引入时,多层神经网络的训练问题最终得以解决。神经网络又上台了。然而,它很快就遇到了另一个问题。它在实际问题上的表现没有达到预期。当然,有各种各样的尝试来克服这些限制,包括添加隐藏层和在隐藏层中添加节点。然而,它们都不起作用。他们中的许多人的表现甚至更差。由于神经网络有一个非常简单的结构和概念,没有什么可以做,可以改善它。最后,神经网络被判没有改进的可能性,被遗忘了。

它被遗忘了大约20年,直到21世纪中叶,深度学习被引入,开启了一扇新的大门。由于训练深层神经网络的困难,深层隐层需要一段时间才能产生足够的性能。无论如何,当前的深度学习技术产生了令人眼花缭乱的性能水平,这超过了其他机器学习技术和其他神经网络,并在人工智能研究中占了上风。

Improvement of the Deep Neural Network

尽管取得了卓越的成就,但深度学习实际上没有任何关键技术可供展示。**深度学习的创新是许多小技术改进的结果。**本节简要介绍了深层神经网络产生较差性能的原因以及深层学习如何克服此问题。

更深层次的神经网络产生较差性能的原因是网络没有经过适当的训练反向传播算法在深度神经网络的训练过程中遇到以下三个主要困难
在这里插入图片描述

Vanishing Gradient

在这种情况下,梯度可以被认为是与反向传播算法的增量类似的概念。当输出误差更可能无法到达更远的节点时,使用反向传播算法的训练过程中会出现消失梯度。反向传播算法训练神经网络,因为它将输出误差反向传播到隐藏层。但是,由于误差很难到达第一个隐藏层,因此无法调整权重。因此,靠近输入层的隐藏层没有得到正确的训练。如果无法对隐藏层进行训练,则没有必要添加隐藏层(见图5-2)。

在这里插入图片描述
消失梯度的代表性解决方案是使用校正线性单位(ReLU)函数作为激活函数。众所周知,它比sigmoid函数更好地传输错误。通过使用ReLU激活函数和交叉熵驱动的学习规则,极大地改善了消失梯度问题。使用高级梯度下降法也是有益的。ReLU功能定义如下:
在这里插入图片描述它为负输入产生零,为正输入传送输入。

sigmoid函数将节点的输出限制为单位,而与输入的大小无关。相反,ReLU功能不施加此类限制。这样一个简单的改变导致了深度神经网络学习性能的显著提高

Overfitting

深层神经网络特别容易过度拟合的原因是模型变得更复杂,因为它包含更多的隐藏层,因此权重更大。最具代表性的解决方案是dropout,它只训练一些随机选择的节点,而不是整个网络。它非常有效,但其实施并不十分复杂。图5-4解释了辍学的概念。某些节点以一定百分比随机选择,其输出设置为零以停用节点
在这里插入图片描述
dropout有效地防止了过度拟合,因为它在训练过程中不断改变节点和权重。对于隐藏层和输入层,适当的退出百分比分别约为50%和25%。

另一种用于防止过度拟合的流行方法是向成本函数添加正则化项,该项提供权重的大小。这种方法的工作原理是尽可能简化神经网络的结构,从而减少可能出现的过度拟合。第三章解释了这一方面。

此外,大量训练数据的使用也非常有用,因为特定数据导致的潜在偏差减少了。

Computational Load

最后一个挑战是完成培训所需的时间。权重的数量随着隐藏层的数量呈几何增长,因此需要更多的训练数据。这最终需要进行更多的计算。神经网络执行的计算越多,训练时间越长。

这一问题是神经网络实际发展中的一个严重问题。如果一个深度神经网络需要一个月的训练,那么它一年只能修改20次。在这种情况下,很难进行有用的研究。通过引入高性能硬件(如GPU)和算法(如批量标准化),这一问题在很大程度上得到了缓解。

本节介绍的小改进是使深度学习成为机器学习英雄的驱动因素。机器学习的三个主要研究领域通常被称为图像识别、语音识别和自然语言处理。这些领域中的每一个都分别用特别合适的技术进行了研究。然而,深度学习目前胜过所有三个领域的所有技术。

在这里插入图片描述执行这些行将输出从20%的第一个隐藏节点切换到0;它会删除20%的第一个隐藏节点。

ym = Dropout(y, ratio)
下面是函数Dropout的实现细节。它获取输出向量和丢失率,并返回将与输出向量相乘的新向量。
其中y是输出向量,ratio是输出向量的漏失率。函数Dropout的返回向量ym的维数与y相同ym包含与比率相同数量的元素的零,其他元素的1 1/-(ratio)比率。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐