简单地说,深度学习就是一种采用深度神经网络的机器学习技术,深度神经网络就是一种包含2个或者2个以上隐藏层的多层神经网络。
这里再次简单回顾一下“深度学习”的发展历史:
l 第一代神经网络——单层神经网络,在解决机器学习面临的实际问题时,很快就暴露出它的基本局限性,单层神经网络只能求解线性可分问题。
l 多层神经网络必然是下一个突破点,然而,单层到多层网络的演进却花费了大约30年的时间。
l 直到1986年,多层神经网络的训练问题最终在引入反向传播算法后得到解决;神经网络再次登上了历史舞台。
l 遗憾的是,多层神经网络在实际问题上的性能并没有达到预期;研究者尝试了很多方法进行改善,但都失败了,最后,神经网络被判处没有改进可能的死刑,它被大家遗忘了。
l 直到2000年中期深度学习的引入,才打开了新的研究大门。由于深度神经网络的训练难度较大,深度隐藏层需要较长时间才能获得足够的性能。海量存储器及飞跃发展的计算机处理能力为深度学习的实现提供了强有力的硬件基础。
深度学习的创新是许多小技术改进的结果。从本质上说,深度神经网络性能较差的原因是因为网络没有得到正确的训练。在深度神经网络的训练过程中,反向传播算法存在以下三个主要困难:
-
梯度消失Vanishing gradient
-
过度拟合Overfitting
-
计算量Computational load
梯度消失Vanishing gradient
在反向传播算法训练神经网络时,它将输出误差向后传播到隐藏层。当神经网络的隐藏层数量较多时,输出误差几乎不能到达第一隐藏层(即与输入层相邻的隐藏层),所以导致权值无法被调整,也就无法充分地训练所有隐藏层。
消失梯度的代表性解决方案是使用整流线性单元(ReLU)函数作为激活函数,ReLU比sigmoid函数能够更好地传递误差。ReLU函数的定义如下:
当输入为负数时,该函数输出0;当输入为正数时,则输出为输入的正数。ReLU的名字是因为它的功能类似于整流器,一种在切断负电压时将交流转换成直流的电气元件
sigmoid函数将神经节点的输出范围限制为单位1,没有考虑输入值的大小;相反,ReLU函数不受这样的限制。
反向传播算法中需要的另一个元素是ReLU函数的导数。根据ReLU函数的定义,它的导数为:
过度拟合Overfitting
深度神经网络特别容易过拟合的原因是模型变得更加复杂,因为模型中包含更多的隐藏层,以及更多的权值。越复杂的模型越容易过拟合。
通过加深神经网络的层数可以获得更优的性能,但可能使得神经网络面临“过度拟合”的危机,这是一种两难的选择。最具代表性的解决方案是dropout,它只训练随机选择的一些节点,而不是整个神经网络。
dropout随机选择一些节点,并将它们的输出设置为零,即这些节点不起任何作用,实质上是降低了神经网络的复杂程度。dropout能够有效地防止过度拟合,因为它不断地改变训练过程中的节点和权值。一般来说,对于隐藏层和输入层,dropout的适用比例分别约为50%和25%。
用于防止过度拟合的另一种流行方法是将正则化项添加到代价函数中,其中正则化项提供权值的幅度大小。正则化尽可能简化神经网络的结构,从而减少过拟合的发生。正则化的简化实质也是丢弃网络节点,不过正则化是按照某种规则丢弃(或者是弱化某些节点的影响),而dropout是随机丢弃。
此外,需要注意的是,深度神经网络的充分训练离不开大数据,这样可以减少由于特定数据引起的潜在偏差。
计算量Computationalload
最后一个挑战是完成深度网络训练所需的时间问题,权值的数量随着隐藏层数量的增加而呈现几何增长,因此需要更多的训练数据,最终就需要进行更多的计算。神经网络的计算量越大,训练时间就越长。如果计算能力不足,训练一个神经网络需要1个月的时间,那么1年最多只能进行12次训练测试,这是大多数的研究不可接受的。通过采用GPU和批处理归一化等快速算法,已经在很大程度上缓解了这一难题。
机器学习的三个主要研究领域通常为图像识别、语音识别和自然语言处理。从目前来看,深度学习优于这三个领域中使用的所有技术,这也是深度学习受到高度重视的重要原因。
由于ReLU函数对初始权值比较敏感,因此当初始权值不合适时,使用ReLU作为激活函数可能会导致神经网络训练失败。
更多精彩文章请关注微信号: