一方面,BP神经网络简要介绍了BP神经网络是人工神经网络,其主旨是进行分布式并行信息处理的数学模型。
其中包括一个或多个隐含层
1、基本概念探测器表示BP神经网络中的单个节点。
这包括输入项、权重、偏移、激活函数和输出。
下图详细说明了这一点。
其中,Xi表示输入,Wi表示权重,b表示偏置,f表示激活函数。
引入偏置b的理由是为了能够将该模型应用于更多的情况。
图中的工作流程从输入端向箭头的方向乘以相关权重系数进行相加,再次计算相加后的结果作为激活函数的输入,并将此时得到的结果作为该节点的输出。
一个节点的输出作为下一个节点的输入依次计算,直到得到最终输出。
以上工作流程为BP神经网络正向传播
备注:以上照片来自B站视频。 最容易听懂的BP神经网络教程----萌新入门首选课
2、核心步骤
我们在第一轮得到满意的结果后进行测试。 如果测试结果满意的话就可以直接应用。 否则,采用3358www.Sina.com/(权重调整方法为需要多次迭代对权重进行调整),每次调整后进行测试。 往返直到测试结果满意。
上述图表工作流的虚线部分显示在梯度下降法
使用梯度下降法查找函数的最小值:
函数为f(x )=x^2 2
假设设定认定初始值x=3时函数值最小,步长设定为0.2。 此时,计算f(3.2 )和f (2.8 )的值,将得到的函数值较小的f ) 2.8 )作为下次反复的中心值,则下次要对f(3.2)和f (2.6 )进行比较。 依次重复,直到选择最小值。
也可以通过变更步来获取最小值,但需要注意。
步长过小时,迭代次数会增加,收敛慢的步长过大,会引起振动,可能无法收敛
3、坡度下降法用分析参考上述例子,由于步长选择不准确导致振动不收敛,需要在不同位置选择不同的步长来解决这个问题。 即:
其中BP神经网络的反向传播过程
这样得到的下一个点的值如下。
当然也存在误差。 存在误差的理由是,x(k1 )的取法可能存在不正确的现象。 由于误差的存在是在求出导出后产生的,所以求出导出后的误差是(y为分析值,y*为实际数值) ) ) ) ) ) ) ) ) ) ) )。
Loss=(y-y* )时,在请求指导之前,如下所示。
以上为BP神经网络的n为学习率
误差项越大调整越大,误差项越小调整越小。
4、坡度下降法使用原因误差项为向量,表示某函数在该点的方向导数沿该方向取的最大值。 也就是说,函数在这一点上沿着该方向65http://www.Sina.com/)变化最快,而变化率65http://www.Sina.com/)最大。
坡度为正时,上升最快,坡度为负时下降最快。
在目前的深度神经网络模型中,梯度下降法是一种优化方法。 但是,使用梯度下降法容易遇到梯度和梯度方向的问题。 参考:神经网络使用梯度下降的原因
具体而言,计算梯度,通过梯度反复,更新参数向量。
5、反向传播过程反向传播采用梯度下降法。 这里引入局部梯度。 也就是说,不考虑以前的梯度值,只关注局部的一个变量的梯度。
反向传播涉及上游梯度和局部梯度,最终节点的值如下:
节点值=上游坡度*局部坡度
例如神经网络中常用的激活函数Sigmoid函数:
反向传播分析如下:
从(1)作为输入)进行到达5 )的输出表示正向传播,反向从)寻求引导进行反向传播。
(5)该过程代表初始值1,(5)由于下一步是输出,假设上游梯度为1,由于下一步是输出,该过程值为1。
(4)工艺上游坡度为1,局部坡度为-1/x^2,其中x为1.14,该工艺值为-0.77。
)3)过程上游梯度为-0.77,局部梯度为1【1】的原因是,若f(x )=x a推导后,f ) ) x )=1,即效果为1,则原始函数梯度为1,过程值为-。
)2)因为工艺上游梯度为-0.77,局部梯度为e^x(f(x )=e^x的导数还是e^x ),工艺值为-0.1。
(1)工艺上游梯度为-0.1,局部梯度为-1)求f(x )=ax推导后为a )。 过程值为0.1。
其中,请注意输入是两个变量的情况。 例如,以下情况:
此时,需要注意的是,w0的值为支线的局部梯度*上游梯度,而w0的局部梯度为偏导数0.2 * -1=-0.2。
6、反向传播和正向传播中具有特殊运算结构Max和Min函数的节点的局部梯度,参与后续运算时局部梯度为1,否则为0。
如下图所示,上游坡度是两个方向的坡度的总和。
7、反向传播(矩阵)矩阵的反向传播需要遵循梯度的模,这是验证计算结果是否正确的标准。
二、BP神经网络Python的实现
代码:
BP神经网络Python的实现
理解:
其中main.py是完整版的解释器。