独家连载 | BP网络介绍和代价函数介绍

4.1 BP神经网络介绍及发展背景

BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,他们在《Parallel Distributed Processing》一书中对BP神经网络进行了详细的分析。BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,它是20世纪末期神经网络算法的核心,也是如今深度学习算法的基础。

感知器对人工神经网络的发展发挥了极大的作用,但是它的结构只有输入层和输出层,不能解决非线性问题的求解。Minsky和Papert在颇具影响力的《Perceptron》一书中指出,简单的感知器只能求解线性问题,能够求解非线性问题的网络应该具有隐藏层,但是对隐藏层神经元的学习规则还没有合理的理论依据。从前面介绍的感知器学习规则来看,其权值的调整取决于期望输出与实际输出之差:

但是对于各个隐藏层的节点来说,不存在已知的期望输出,因而该学习规则不能用于隐藏层的权值调整。

BP算法的基本思想是,学习过程由信号的正向传播和误差的反向传播两个过程组成。

正向传播时,把样本的特征从输入层进行输入,信号经过各个隐藏层逐层处理后,最后从输出层传出。对于网络的实际输出与期望输出之间的误差,把误差信号从最后一层逐层反传,从而获得各个层的误差信号,再根据误差信号来修正各个层神经元的权值。

这种信号正向传播与误差反向传播,然后各个层调整权值的过程是周而复始地进行的。权值不断调整的过程,也就是网络学习训练的过程。进行此过程直到网络输出误差减小到预先设置的阈值以下,或者是训练了一定的次数之后为止。

4.2 代价函数

代价函数也称为损失函数,英文称为loss function或cost function,有些地方我们会看到使用loss表示代价函数的值,有些地方我们会看到用cost表示代价函数的值。为了统一规范,本书中我们统一使用代价函数这个名字,英文使用loss。

代价函数并没有准确的定义,一般我们可以理解为是一个人为定义的函数,我们可以利用这个函数来优化模型的参数。最简单常见的一个代价函数是均方差(mean-square error, MSE) 代价函数:

矩阵可以用大写字母来表示,这里的T表示真实标签,Y表示网络输出。

T-Y可以到每个训练样本与真实标签的误差。误差的值有正有负,我们可以求平方,把所有的误差值都变成正的,然后除以2N。这里2没有特别的含义,主要是我们对均方差代价函数求导的时候,公式中的2次方的2可以跟分母中的2约掉,使得公式推导看起来更加整齐简洁。N表示训练样本的个数(注意这里的N是一个大于0的整数,不是矩阵),除以N表示求每个样本误差平均的平均值。

公式可以用矩阵形式来表达,也可以拆分为用∑来累加各个训练样本的真实标签与网络输出的误差的平方。

4.3梯度下降法

4.3.1 梯度下降法(Gradient Descent)介绍

在求解机器学习算法的模型参数时,梯度下降法是最常用的方法之一。在讲解梯度下降法之前我们先来了解一下导数(derivative)偏导数(partial derivative)、**方向导数(directional derivative)梯度(****gradient)**的概念。

导数 —— 导数的概念就如图4.1所示:
图4.1 导数

导数的定义如下:


表示函数f在x0处的导数

△x 表示x的变化量

表示函数的增量


表示△x 趋近于0

dx表示x的变化量△x趋近于0

dy表示

总的来说

反映的是函数 y = f(x) 在x轴上某一点处沿x轴正方向的变化率/变化趋势。也就是在x轴上的某一点初,如果f '(x)>0,说明f(x)的函数值在x点沿x轴正方向是趋向于增加的;如果f '(x)<0,说明f(x)的函数值在x点沿x轴正方向是趋向于减小的。

偏导数 —— 偏导数的定义如下:

可以看到,导数与偏导数本质是一致的,都是当自变量的变化量趋近于0时,函数值的变化量与自变量变化量比值的极限。直观地说,偏导数也就是函数在某一点上沿坐标轴正方向的的变化率。

区别在于:  
导数,指的是一元函数中,函数y = f(x)在某一点处沿x轴正方向的变化率;  
偏导数,指的是多元函数中,函数
在某一点处沿某一坐标轴
正方向的变化率。

方向导数 —— 方向导数的定义如下:

其中

l 表示某个方向

在前面导数和偏导数的定义中,均是沿坐标轴正方向讨论函数的变化率。那么当我们讨论函数沿任意方向的变化率时,也就引出了方向导数的定义,即:某一点在某一趋近方向上的导数值。

通俗的解释是:  
我们不仅要知道函数在坐标轴正方向上的变化率(即偏导数),而且还要设法求得函数在其他特定方向上的变化率。而方向导数就是函数在其他特定方向上的变化率。

梯度 —— 梯度的定义如下:

对于

上的某一点来说存在很多个方向导数,梯度的方向是函数在某一点增长最快的方向,梯度的模则是该点上方向导数的最大值,梯度的模等于:

这里注意三点:

  1. 梯度是一个向量,即有方向有大小

  2. 梯度的方向是最大方向导数的方向

  3. 梯度的值是最大方向导数的值

梯度下降法—— 既然在变量空间的某一点处,函数沿梯度方向具有最大的变化率,那么在优化代价函数的时候,就可以沿着负梯度方向去减小代价函数的值。计算过程可以描述如下:

Repeat表示不断重复


表示参数调整,η表示学习率

作者介绍

猜你喜欢

转载自blog.csdn.net/t5131828/article/details/85687151