我的位置:

金准数据 神经网络与深度学习研究报告(下)

发布人:行业研究

五、改进神经网络学习方法

理想地,期望我们的神经网络能从自己的错误中快速地进行学习。

神经元通过改变权重和偏差的来进行学习的学习速度由成本函数的偏导数(和)决定,所以学习速度慢的根本原因是:偏导数太小。

1、交叉熵成本函数

交叉熵成本函数定义如下:

对权重w的求导结果为(n为训练样本数):

根据上面的求导公式,则避免了在二次成本函数中由导致的学习速度慢问题。





2、 推广交叉成本函数

把交叉成本函数推广到具有多个神经元的多层网络中,则交叉成本函数变为:

与二次成本函数相比,唯一不同的是的计算方法,其它计算方法完全相同。


3、交叉熵的含义

粗略地说,交叉熵是“不确定性”的一种度量。特别地,我们的神经元想要计算函数x-> y = y(x)。但是,它用函数x->a = a(x) 进行了替换。假设我们将a 想象成我们神经元估计为y = 1 的概率,而1-a 则是y = 0 的概率。那么交叉熵衡量我们学习到y的正确值的平均起来的不确定性。如果输出我们期望的结果,不确定性就会小一些;反之,不确定性就大一些。


4、Softmax(柔性最大值)

Softmax+log-likelihood(对数似然)成本函数:在现代图像分类网络中最常用。

Softmax为神经网络定义了一个新的输出层,即它的激活函数不再是Sigmoid,而是Softmax函数。

Softmax的每个神经元的输出都为正,且它们的和为1。所以Softmax层的输出可以看作一个概率分布。

与Softmax相比,Sigmoid层的输出不能形成一个概率分布,且没有一个直观、简单的解释。


Softmax如何解决学习速度慢的问题?

从以上梯度公式中可知,对于解决学习速度慢的问题:【Softmax输出层+对数似然成本函数】与【Sigmoid输出层+交叉熵成本函数】效果相当。

在二者间如何做出选择呢?

当你需要把输出当做概率解释时,则需要使用【Softmax输出层+对数似然成本函数】。


六、 过拟合和规范化

1、 过拟合(Overfitting)

在神经网络中,过拟合(Overfitting)是一个主要问题。此问题在现代网络中特别突出,因为现代网络有大量的权重和偏差。为了进行有效的训练,我们需要一个检测是否过拟合的方法,以防止过度训练(Overtraining),并且我们还需要可以减少过拟合效果的技术。

最直接的检测过拟合的方法是:跟踪测试数据在训练过的网络中的准确性。如测试数据分类的准确性不再改善,我们应当停止训练;或测试数据分类的准确性和训练数据分类的准确性都不再改善,我们应当停止训练。

如果对训练样本过拟合,则其推广能力就差,导致对新的数据的预测或分类的准确性变差。


2、 规范化(Regularization)-减少过拟合

增加训练数据是减少过拟合的方法之一。

规范化(Regularization)也是减少过拟合的方法之一。有时候被称为权重衰减(weight decay)或者L2 规范化。L2 规范化的思想是增加一个额外的项到成本函数中,这个项叫做规范化项。规范化的交叉熵如下:

C0是原来常规的成本函数。 如果较小,我们期望最小化原始成本函数;如果较大,我们期望最小化权重。

则可得:

可进一步得到:


3、 为什么规范化可以减少过拟合

权重越小,复杂度就越低;可以为数据提供更简洁更有力的解释。

当有异常输入时,小的权重意味着网络输出变化不大,即不易学习到数据中的局部噪声。总而言之,规范化网络基于训练数据的主要规律,从而创建一个相对简单的模型,并且拒绝学习训练数据中的噪声(异常数据)。这样强制网络学习数据的本质规律,并把学到的规律进行更好地推广。



七、 权重初始化

可加快学习速度。

假设输入层有1000个神经元,且已经使用归一化的高斯分布初始化了连接第个隐层的权重。如下图所示:

为了简化,设输入层一半神经元值为1,另一半为0。让我们考虑隐层神经元输入的带权和z:

其中500项消去了,因为对应的输xj 为0。所以z 是包含501个归一化的高斯随机变量的和,包含500个权重项和1个偏差项。因此z本身是一个均值为0、标准差为(方差为501)的高斯分布。它是一个非常宽的高斯分布,根本不是非常尖的形状:

注:若随机变量X服从一个数学期望为μ、方差为σ^2的高斯分布,记为N(μ,σ^2)。

正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。

标准正态分布服从N(0,1)

两个都服从正太分布的变量,例如X服从N(a,b),Y服从N(c,d),且X和Y相互独立,则有:

· X+Y服从N(a+c,b+d)

· X-Y服从N(a-c,b+d)

即两变量相加减时,期望相应加减,方差始终是相加。

从上图上可以看出|z|会变得很大,即z>>1或z<<-1。如果这样,隐层神经元的输出就会接近1或者0,即隐层神经元进入饱和状态了。即隐层神经元的输出将非常接近于0或1。在这种情况下,权重的修改对隐层神经元的输出激活值影响很小,从而对下一层的隐层神经元、直到对输出层的神经元的输出都很小,从而导致学习速度慢的问题。

(注:输出层神经元饱和于错误值也会导致学习速度慢的问题,这可以通过选择成本函数

从以上分析可知,如果隐层神经元的权重服从N(0,1)分布,它将导致隐层神经元的激活值接近于0或1,并且导致学习速度下降,如何解决此问题呢?

通过选择更好的初始化权重和偏差可以解决此问题。

答案是:初始化权重服从N(0,1/)分布,偏差服从N(0,1)。其中表示此层神经元输入权重个数(即此隐层神经元的输入神经元个数,如上例中=1000)。权重之后为:,其服从N(0,3/2)。

方差的计算方法:500*1/1000+1=1500/1000=3/2。其图形非尖,如下图所示:

此神经元饱和的可能性很低,从而导致学习速度慢的可能性也很低。


八、 神经网络可以计算任何函数

“神经网络可以计算任何函数”的真正含义:

· 不是说一个网络可以被用来准确地计算任何函数,而是我们可以获得尽可能好的一个近似。通过增加隐层神经元的数量,可以提升近似的精度。

· 可以按照上面的方式近似的函数类其实是连续函数。如果函数不是连续的,也就是会有突然、极陡的跳跃,那么一般来说无法使用一个神经网络进行近似。

总而言之:包含一个隐层的神经网络可以被用来按照任意给定的精度近似任何连续函数。





九、问题剖析

1、为什么训练深度神经网络比较困难?

对于学习算法,前面使用的是苦力般的学习方法(基于反向传播的随机梯度下降)来训练深度网络,这样产生的问题是:深度神经网络并不比浅层网络性能好太多。

其根据原因是:在深度网络中,不同层的学习速度差异很大。尤其是, 在网络后面层的学习速度很好的时候,前面层在训练时停滞不变,基本上学不到东西;或先前的层学习的比较好,但是后面层却停滞不变。其停滞不前的原因是学习速度下降了,学习速度下降与基于梯度的学习方法有关。

实际上,我们发现在深度神经网络中使用基于梯度下降的学习方法本身存在着内在不稳定性。这种不稳定性使得前面或者后面层的学习速度受到抑制。在真正理解了这些难点之后,我们就能够获得有效训练深度网络的更深洞察力。

在某些深度神经网络中,在我们在隐层BP的时候梯度倾向于变小。这意味着在前面的隐层中的神经元学习速度要慢于后面的隐层。在多数的神经网络中都存在着这个现象,这个现象也被称作是:消失的梯度问题(Vanishing Gradient Problem)。

在前面层中的梯度会变得非常大,这叫做:激增的梯度问题(Exploding Gradient Problem),这也没比消失的梯度问题更好处理。更加一般地说,在深度神经网络中的梯度是不稳定的,在前面层中或会消失,或会激增。这种不稳定性才是深度神经网络中基于梯度学习的根本问题。


2、消失的梯度问题的根本原因?

深度神经网络中的梯度不稳定性。由于梯度的值小于1,在随机梯度下降算法中,前面层的梯度由后面层的梯度参与相乘,所以造成前面层的梯度很小,后面层的梯度依次变大。从而造成了梯度的不均衡性。

十、卷积神经网络(CNN)

CNN(Convolutional neural networks):使用了一个特殊架构来进行图像分类。

它的三个基本概念为:局部感受野(Local receptive fields),共享权重(Shared weights),和混合(Pooling)。

1、基本概念

(1) 局部感受野

在之前的全连接网络中,输入被描绘成纵向排列的神经元,但在卷积神经网络中,把输入看作28 x 28的方形神经元排列。第一个隐层中的每个神经元只与输入图像的一个小区域(如5x5)连接,这个输入图像的小区域叫做隐层神经元的局部感受野(Local receptive fields)。如下图所示:

每个连接学习一个权重,且隐层神经元也学习一个总的偏差。即此隐层神经元正在对输入图像的此区域进行学习、了解。一个隐层神经元与一个局部感受野一一对应,即每个隐层神经元有:5x5个权重和1个偏差。 

如上图所示,对于一个28x28的输入图像,如果局部感受野的大小为5x5,则第一个隐层中有24x24个神经元。



(2) 共享权重和偏差

每组24x24个隐层神经元使用相同的权重和偏差。即对于每组中的第(j,k)隐层神经元,其激活值为:

即每组有5x5个权得和1个偏差,其26个需要学习的参数。这表示第一个隐层中的所有神经元在输入图像的不同地方检测相同的特征。(图像具有平移不变性)

· 特征映射:从输入层到隐层的映射。

· 共享权重:定义特征映射的权重。

· 共享偏差:定义特征映射的偏差。

· 卷积核或滤波器:共享权重和偏差。

为了做图像识别,需要多个特征映射,且一个完整的卷积层由多个不同的特征映射组成,如下图包含三个特征映射:

上面20幅图像对应20个不同的特征映射(或滤波器、或卷积核),每个特征映射用5x5方块图表示,对应局部感受野的5x5个权重。白色表示小权重,黑色表示大权重。

共享权重和偏差最大的优点是:大大减少了网络中参数的数量。如全连接网络的参数是卷积网络参数的30倍左右。(卷积网络20个特征:20x26=520, 全连接20个隐层神经元:20x784=15680)


(3)混合层

卷积神经网络除包含卷积层之外,还包含混合层(Pooling Layers),混合层在卷积层之后,它的职责是简化(总结)卷积层输出的信息。

混合层根据卷积层输出的所有特征映射,然后提炼出新的特征映射。


(4) 完整的卷积神经网络

最后一层与前面一层是全连接,其连接数为:3x12x12x10。

卷积神经网络与全连接神经网络的架构不一样,但其目标是一样的, 它们的目标为:使用训练数据训练网络的权重和偏差,然后对输入的图像做出正确的分类。