BP神经网络全名反向传播网络 Back PropagationNeural Network
以下是我的学习总结,如有错误,还望指正
一、前向传播
BP网络结构如下,这个结构较为简单用来理解比较方便
其中 x1 x2为输入层两个样本输入, z1 z2为隐含层节点,y为神经网络输出值,w1 w2 w3 w4 w5 w6为六项权重,b1 b2 b3是偏置项图中结构未画出将其理解为一个常数即可(用来使激活函数可以左右移动),σ是激活函数,这里使用的最常见的激活函数sigmoid激活函数,激活函数用来拟合非线性,公式如图
这样我们就可以得到z1 z2 y的值了
二、损失函数
损失函数/代价函数(loss)
损失函数的值越小,说明模型的预测值越接近真实值。
最常见的损失函数是均方差损失函数(二次损失函数):
其中δ是均方差,N是样本数,T是真实值,y是我们前文神经网络输出值,用平方是因为误差有正有负,平方后就都变成正了,1/2是为了后面求导时简单还可以降低梯度爆炸的可能性,i是第i个数据
算出y后我们往往发现它与真实值T存在一定差距,因此计算其损失,为下面更新权重做准备
损失函数参考
三、更新权重
以下我们以w5为例,其他权重更新过程都如下图
更新权重我们使用梯度下降法,公式如图
其中α是学习率可以自由设置,w5为原始权重。w5'为更新后的权重,具体计算过程如图
学习率(Learning rate),也称为步长,学习率越大,输出误差对参数的影响就越大,参数更新的就越快,但同时受到异常数据的影响也就越大,很容易发散。
至此,我们就得到了一批新的权重w1 w2 w3 w4 w5 w6
四、更新偏置值
参考
至此,我们就可以得到新的参数,再通过神经网络向前传播得到新的输出y,不断循环直至算法收敛
其他参考https://www.bilibili.com/video/BV1QV4y1E7eA/?spm_id_from=333.880.my_history.page.clickhttps://www.bilibili.com/video/BV1QV4y1E7eA/?spm_id_from=333.880.my_history.page.clickhttps://blog.csdn.net/weixin_42080490/article/details/108867609?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-108867609-blog-104735507.pc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3https://blog.csdn.net/weixin_42080490/article/details/108867609?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-108867609-blog-104735507.pc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3