BP(Back propagation)神经网络

时间:2024-03-23 15:32:12
1、BP(Back propagation)神经网络描述
(1)BP(反向传播(Back Propagation))神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络之一。
(2)该网络的主要特点信号的正向传播误差反向传播
(3)BP神经网络主要分为两个过程
     第一个过程是信号的正向传播(前向传播),从输入层经过隐藏层,最后到达输出层;
     第二个过程是误差的反向传播,从输出层到隐藏层,最后到输入层,依次调节隐藏层到输出层的权重偏置,输入层到隐藏层的权重和偏置。

2、BP神经网络的向前传播

(1)前向传播算法的数学定义(偏置项和权重)(加权求和+**函数

BP(Back propagation)神经网络

BP(Back propagation)神经网络

BP(Back propagation)神经网络

BP(Back propagation)神经网络

(2)偏置项和**函数
偏置项:
    是神经网络中非常常用的一种结构
    与线性方程 y=wx+b 中的 b 的意义是一致的,在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离。
**函数:
    加入非线性因素,实现去线性化,解决线性模型不能解决的问题
常用**函数如下:

BP(Back propagation)神经网络


3、BP神经网络的代价函数(损失函数)
(1)二次代价函数(均方误差函数)
单变量线性回归二次代价函数

BP(Back propagation)神经网络

建模误差的平方和(预测值与真实值

BP(Back propagation)神经网络

多变量线性回归二次代价函数

BP(Back propagation)神经网络

二分类问题和回归问题,一般用二次代价函数(均方误差函数)
    比如:
           对于判断零件是否合格的二分类问题,神经网络的输出层有一个节点。当这个节点越接近0时越有可能不合格,越接近1时越有可能合格。具体分类结果可以选择0.5作为阈值,小于0.5则不合格,大于0.5则合格。
神经网络解决多分类问题
    用n维数组作为输出结果,如果样本属于类别k,那么这个类别所对应的的输出节点的输出值应该为1,其他节点的输出都为0
    例如:[0,0,0,0,0,0,0,1,0,0]
    那么神经网络的输出结果越接近[0,0,0,0,0,0,0,1,0,0]越好
如何判断一个输出向量和期望的向量有多接近呢?
这就用到了交叉熵

(2)交叉熵
交叉熵是刻画两个概率分布之间的距离,也是分类问题中使用比较广泛的一种损失函数
给定两个概率分布pq,通过q来表示p的交叉熵:

BP(Back propagation)神经网络

该公式表示通过概率分布q来表达概率分布p的困难程度(p代表的正确答案q代表的是预测值
概率分布p(X=x)满足:

BP(Back propagation)神经网络

但是神经网络的输出不一定是一个概率分布,所以需要在神经网络的输出层添加一个Softmax层(即Softmax回归)
Softmax模型可以用来给不同的对象分配概率
假设原始的神经网络输出为y1,y2……yn,那么经过Softmax回归处理之后的输出为:


BP(Back propagation)神经网络

Softmax举例

BP(Back propagation)神经网络

交叉熵举例:
交叉熵刻画的是两个概率分布的距离,即交叉熵的值越小,两个概率分布越接近。
假设有一个三分类问题
    某个样例的正确答案是(1,0,0
    某模型经过Softmax回归之后的预测答案是(0.5,0.4,0.1
    则这个预测和正确答案之间的交叉熵为:

BP(Back propagation)神经网络

另外一个模型的预测答案是(0.8,0.1,0.1
    则预测值和真实值之间的交叉熵为:

BP(Back propagation)神经网络


4、BP神经网络的反向传播
(1)梯度下降算法
主要用于优化单个参数的取值

BP(Back propagation)神经网络

举例:
如下图:X轴表示参数θ的取值;Y轴表示损失函数J(θ)的值

BP(Back propagation)神经网络

参数更新公式:

BP(Back propagation)神经网络

例如损失函数为J(X)= ,学习率为0.3

BP(Back propagation)神经网络

(2)反向传播算法
所有的参数上使用梯度下降算法,从而使神经网络模型在训练数据集上的损失函数达到一个较小的值
    反向传播算法是训练神经网络模型的核心算法,它可以根据定义好的损失函数优化神经网络中参数的取值
神经网络中一般选用批量梯度下降算法

BP(Back propagation)神经网络

5、BP神经网络优化过程总结
1定义神经网络的结构,通过前向传播算法计算得到预测值
2定义损失函数,计算预测值真实值两者之间的差距
3选择反向传播优化算法,计算损失函数对每一个参数的梯度
4根据梯度和学习率使用梯度下降算法更新每一个参数
5在训练数据上反复运行反向传播优化算法,训练神经网络
BP神经网络实现MNIST手写数字识别实战:TensorFlow——MNIST手写数字识别

6、BP神经网络的进一步优化
(1)学习率(learning rate)的设置
学习率控制参数更新的速度,决定了每次参数更新的幅度。
如果学习率过大:可能导致参数在极优值的两侧来回移动。
例如:优化J(x)=函数,如果在优化过程中使用学习率为1
那么整个优化过程如下:

BP(Back propagation)神经网络

从结果可以看出:无论进行多少轮迭代,参数将在-55之间摇摆,而不会收敛到一个极小值
如果学习率过小,虽然能保证收敛性,但是会大大降低优化速度。
所以学习率既不能过大,也不能过小
TensorFlow中提供了一种更加灵活的学习率设置方法——指数衰减法
指数衰减法可以先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定)

(2)过拟合问题
增加数据集

正则化方法
    正则化的思想:在损失函数中加入刻画模型复杂程度的指标
    假设用于刻画模型在训练数据上表现的损失函数为J(θ),那么在优化时不是直接优化J(θ),而是优化J(θ)+ λR(w)(其中R(w)刻画的模型的复杂度,而λ表示模型复杂损失在总损失中的比例)
注意这里的θ表示的是一个神经网络中的所有参数,它包括边上的权重w和偏置项b,一般来说模型复杂度只由权重w决定
常用刻画模型复杂度的函数R(w)有两种:
一种是L1正则化,计算公式如下:

BP(Back propagation)神经网络

一种是L2正则化,计算公式如下:

BP(Back propagation)神经网络

两种正则化方式的基本思想:通过限制权重大小,使模型不能任意拟合训练数据中的随机噪音
在实践中也可以将L1正则化和L2正则化同时使用,如下公式:

BP(Back propagation)神经网络

Dropout方法
dropout并不会修改代价函数而是修改深度网络本身
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃

(3)多层网络解决异或运算
异或运算直观来说就是如果两个输入的符号相同时(同时为正或同时为负),则输出为0,否则(一个正一个负)输出为1

BP(Back propagation)神经网络

深层神经网络组合特征提取的功能,这个特性对于解决不易提取特征向量的问题(比如图片识别、语音识别等)有很大帮助。






参考书籍:《TensorFlow实战 Google深度学习框架》
吴恩达机器学习教程
神经网络游乐场:http://playground.tensorflow.org




1、BP(Back propagation)神经网络描述
(1)BP(反向传播(Back Propagation))神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络之一。
(2)该网络的主要特点信号的正向传播误差反向传播
(3)BP神经网络主要分为两个过程
     第一个过程是信号的正向传播(前向传播),从输入层经过隐藏层,最后到达输出层;
     第二个过程是误差的反向传播,从输出层到隐藏层,最后到输入层,依次调节隐藏层到输出层的权重偏置,输入层到隐藏层的权重和偏置。

2、BP神经网络的向前传播

(1)前向传播算法的数学定义(偏置项和权重)(加权求和+**函数

BP(Back propagation)神经网络

BP(Back propagation)神经网络

BP(Back propagation)神经网络

BP(Back propagation)神经网络

(2)偏置项和**函数
偏置项:
    是神经网络中非常常用的一种结构
    与线性方程 y=wx+b 中的 b 的意义是一致的,在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离。
**函数:
    加入非线性因素,实现去线性化,解决线性模型不能解决的问题
常用**函数如下:

BP(Back propagation)神经网络


3、BP神经网络的代价函数(损失函数)
(1)二次代价函数(均方误差函数)
单变量线性回归二次代价函数

BP(Back propagation)神经网络

建模误差的平方和(预测值与真实值

BP(Back propagation)神经网络

多变量线性回归二次代价函数

BP(Back propagation)神经网络

二分类问题和回归问题,一般用二次代价函数(均方误差函数)
    比如:
           对于判断零件是否合格的二分类问题,神经网络的输出层有一个节点。当这个节点越接近0时越有可能不合格,越接近1时越有可能合格。具体分类结果可以选择0.5作为阈值,小于0.5则不合格,大于0.5则合格。
神经网络解决多分类问题
    用n维数组作为输出结果,如果样本属于类别k,那么这个类别所对应的的输出节点的输出值应该为1,其他节点的输出都为0
    例如:[0,0,0,0,0,0,0,1,0,0]
    那么神经网络的输出结果越接近[0,0,0,0,0,0,0,1,0,0]越好
如何判断一个输出向量和期望的向量有多接近呢?
这就用到了交叉熵

(2)交叉熵
交叉熵是刻画两个概率分布之间的距离,也是分类问题中使用比较广泛的一种损失函数
给定两个概率分布pq,通过q来表示p的交叉熵:

BP(Back propagation)神经网络

该公式表示通过概率分布q来表达概率分布p的困难程度(p代表的正确答案q代表的是预测值
概率分布p(X=x)满足:

BP(Back propagation)神经网络

但是神经网络的输出不一定是一个概率分布,所以需要在神经网络的输出层添加一个Softmax层(即Softmax回归)
Softmax模型可以用来给不同的对象分配概率
假设原始的神经网络输出为y1,y2……yn,那么经过Softmax回归处理之后的输出为:


BP(Back propagation)神经网络

Softmax举例

BP(Back propagation)神经网络

交叉熵举例:
交叉熵刻画的是两个概率分布的距离,即交叉熵的值越小,两个概率分布越接近。
假设有一个三分类问题
    某个样例的正确答案是(1,0,0
    某模型经过Softmax回归之后的预测答案是(0.5,0.4,0.1
    则这个预测和正确答案之间的交叉熵为:

BP(Back propagation)神经网络

另外一个模型的预测答案是(0.8,0.1,0.1
    则预测值和真实值之间的交叉熵为:

BP(Back propagation)神经网络


4、BP神经网络的反向传播
(1)梯度下降算法
主要用于优化单个参数的取值

BP(Back propagation)神经网络

举例:
如下图:X轴表示参数θ的取值;Y轴表示损失函数J(θ)的值

BP(Back propagation)神经网络

参数更新公式:

BP(Back propagation)神经网络

例如损失函数为J(X)= ,学习率为0.3

BP(Back propagation)神经网络

(2)反向传播算法
所有的参数上使用梯度下降算法,从而使神经网络模型在训练数据集上的损失函数达到一个较小的值
    反向传播算法是训练神经网络模型的核心算法,它可以根据定义好的损失函数优化神经网络中参数的取值
神经网络中一般选用批量梯度下降算法

BP(Back propagation)神经网络

5、BP神经网络优化过程总结
1定义神经网络的结构,通过前向传播算法计算得到预测值
2定义损失函数,计算预测值真实值两者之间的差距
3选择反向传播优化算法,计算损失函数对每一个参数的梯度
4根据梯度和学习率使用梯度下降算法更新每一个参数
5在训练数据上反复运行反向传播优化算法,训练神经网络
BP神经网络实现MNIST手写数字识别实战:TensorFlow——MNIST手写数字识别

6、BP神经网络的进一步优化
(1)学习率(learning rate)的设置
学习率控制参数更新的速度,决定了每次参数更新的幅度。
如果学习率过大:可能导致参数在极优值的两侧来回移动。
例如:优化J(x)=函数,如果在优化过程中使用学习率为1
那么整个优化过程如下:

BP(Back propagation)神经网络

从结果可以看出:无论进行多少轮迭代,参数将在-55之间摇摆,而不会收敛到一个极小值
如果学习率过小,虽然能保证收敛性,但是会大大降低优化速度。
所以学习率既不能过大,也不能过小
TensorFlow中提供了一种更加灵活的学习率设置方法——指数衰减法
指数衰减法可以先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定)

(2)过拟合问题
增加数据集

正则化方法
    正则化的思想:在损失函数中加入刻画模型复杂程度的指标
    假设用于刻画模型在训练数据上表现的损失函数为J(θ),那么在优化时不是直接优化J(θ),而是优化J(θ)+ λR(w)(其中R(w)刻画的模型的复杂度,而λ表示模型复杂损失在总损失中的比例)
注意这里的θ表示的是一个神经网络中的所有参数,它包括边上的权重w和偏置项b,一般来说模型复杂度只由权重w决定
常用刻画模型复杂度的函数R(w)有两种:
一种是L1正则化,计算公式如下:

BP(Back propagation)神经网络

一种是L2正则化,计算公式如下:

BP(Back propagation)神经网络

两种正则化方式的基本思想:通过限制权重大小,使模型不能任意拟合训练数据中的随机噪音
在实践中也可以将L1正则化和L2正则化同时使用,如下公式:

BP(Back propagation)神经网络

Dropout方法
dropout并不会修改代价函数而是修改深度网络本身
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃

(3)多层网络解决异或运算
异或运算直观来说就是如果两个输入的符号相同时(同时为正或同时为负),则输出为0,否则(一个正一个负)输出为1

BP(Back propagation)神经网络

深层神经网络组合特征提取的功能,这个特性对于解决不易提取特征向量的问题(比如图片识别、语音识别等)有很大帮助。






参考书籍:《TensorFlow实战 Google深度学习框架》
吴恩达机器学习教程
神经网络游乐场:http://playground.tensorflow.org