BP神经网络
是误差反向传播算法
误差反向传播算法是根据权重,反推各神经元的误差:
具体步骤为:当最终根据神经网络得到各个输出神经元的输出值后,分别根据输出值和真实值的差计算出每个输出神经元的误差,得到每个输出神经元的输出误差之后,根据每个输出神经元和前一层神经元连接的权值分别计算出上一个神经元的误差,依次类推,然后用梯度下降法修正相对应的权值。这就是误差反向传播算法。
BP神经网络 = 多层感知机+误差反向传播(Back Propagation)学习算法
即模型训练或者说连接权重的调整采用反向传播算法
感知机与二分类问题:
二分类问题中训练的就是未知数的权重和偏置值。训练的本质就是不断调整权重和偏置值,知道取得的结果比较好为止。
BP神经网络的学习过程也是如此。
- 学习过程:神将网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。
- 学习的本质:对各连接权值的动态调整
- 学习规则(算法):权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。
BP神经网络的学习算法类型:采用有监督学习
BP神经网络学习算法核心思想:将输出误差以某种形式通过隐藏层想输入层逐层反传,将误差分摊给各层的所有神经元,修正各神经元权值。
BP神将网络学习过程:信号正向传播—>误差反向传播
BP神经网络学习算法步骤:
- 正向传播:输入样本—>输入层—>各个隐藏层—>输出层
- 判断是否转入反向传播阶段:若输出层的实际输出与期望的输出不符,也就是拿输出与标签比较时不相等。
- 误差反传:误差以某种形式在各层表示—>修正各层单元的权值
- 终止条件:网络输出的误差减少到可接受的程度进行到预先设定的学习次数为止。
BP神经网络是一种迭代的训练方法,设置迭代的次数,每次去调整权重的过程。
BP神将网络有三层结构:分别为输入层、隐含层、输出层
设输入层有n个输入信号,隐含层有p个神经元,输出层有q个神经元,变量定义如下所示:
误差反向传播学习算法的步骤:
-
网络初始化
- 给各连接层的权值分别赋一个区间(-1,1)内的随机数,设定误差函数为e,给定计算精度值和最大学习次数M
-
随机选取第K个输入样本及对应期望输出
-
计算隐含层各神经元的输入和输出
隐含层输出:
输出层输出:
输出:加权,求和,减去偏置
-
误差函数:用最小二乘法求得,并且用梯度下降法来调整相应的权重
一个样本的误差公式:
但是学习的目标是最小误差,即:
根据上面定义的变量,可以算出满足上式的各层神经元的连接权重(共np+pq个)与阈值共(p+q个),所以,三层BP神经网络待确定的参数数量为(n+q+1)*p+q个.
但是如何使得这个条件最小化,也就是用哪种方法使得误差最小化?
先求取权重的偏导数,然后利用权重的梯度去调整权重
-
利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数δo(k)
所以,误差对输出层权重可以表示为:
-
利用隐含层到输出层的连接权值、输出层的δo(k)和隐含层的输出计算误差函数对隐含层各神经元的偏导数δh(k)
所以,误差对隐含层各神经元的偏导数可表示为:
-
利用输出层个神经元的δo(k)和隐含层个神经元的输出来修正连接权值Who(k)
其中α表示步长(学习率),用梯度下降法就可以算出其迭代的修正公式:
-
利用隐含层各神经元的δh(k)和输入层个神经元的输入修正连接权值
-
计算全局误差:
直到误差满足条件为止,否则就一直迭代。
-
判断网络误差是否满足要求,当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第4步,进入下一轮学习。
BP神经网络反向传播过程流程图: