神经网络-专题教程

【推导】BP神经网络的梯度公式推导(三层结构)

作者 : 老饼 发表日期 : 2022-10-25 15:50:37 更新日期 : 2024-11-12 18:40:44
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



BP神经网络的训练算法基本都涉及到梯度公式,因此它是BP神经网络的一个基础内容

本文讲解三层BP神经网络的梯度公式,以及三层BP神经网络梯度公式的详细推导过程

通过本文,可以具体地了解三层BP神经网络的梯度公式是什么,以及它是如何推导出来的



 👉声明  :本文的推导较为繁杂,建议初学者直接跳过       





   01. BP神经网络梯度公式-推导目标   




本节先梳理BP神经网络的梯度公式的推导目标




    BP神经网络梯度公式推导目标    


BP神经网络梯度推导是个复杂活,在推导之前我们先把BP梯度推导的目标清晰化
BP神经网络的训练算法很多,但各种训练算法一般都要用到各个参数(w,b)在误差函数E中的梯度
因此求出w,b在误差函数中的梯度就成为了必不可少的一环
 求BP神经网络的梯度公式,即求以下误差函数E对各个w,b的偏导:
 
 其中,
    :训练样本个数                
 
   :为输出个数                  
 
  :第k个样本第m个输出的真实值  
    
 :网络对第k个样本第m个输出的预测值 
    本文梯度公式推导目标   
虽然BP神经网络的梯度只是简单地求E对w,b的偏导,
但E中包含BP神经网络的表达式f(x),求偏导就成了极度艰巨晦涩的苦力活
对于多层结构的BP神经网络,梯度推导稍为抽象,
本文不妨以最常用的三层结构作为具体例子入手,求出三层结构的梯度公式
 即:输入层-隐层-输出层 (隐层传递函数为tansig,输出层传递函数为purelin)
 
虽然只是三层的BP神经网络梯度公式推导,
但整个梯度公式的推导过程,仍然不仅是一个体力活,还是一个细致活,且让我们细细一步一步慢慢来







   02. BP神经网络表达式梳理    




本节梳理三层BP神经网络的数学表达式,帮助下文进行梯度公式推导




     梳理三层BP神经网络的表达式    


由于BP神经网络的误差函数E中包含了网络的表达式
在对BP神经网络梯度推导之前,先将网络的表达式梳理清晰,有助于后面的推导

BP神经网络表达式的参考形式

 隐层传递函数为tansig,输出层传递函数为purelin的三层BP神经网络
 它的数学表达式形式如下:
 BP神经网络的表达式
它的矩阵形式为:

 

  
    
 这里的为矩阵,为向量
上标
分别代表输出层(out)和隐层(hide),
 
特别地,需要注意,Wij代表的是:后层的第i个节点与前层的第j个节点连接权重
例如,2输入,4隐节点,2输出的BP神经网络可以图解如下: 
 
BP神经网络数学表达式-矩阵形式 






   03. 三层BP神经网络梯度推导过程  




本节具体推导BP神经网络误差函数对每一个待求参数w,b的梯度




    简化BP神经网络梯度推导目标    


由于误差函数E的表达式较为复杂,
 不妨先将问题转化为"求单样本梯度"来简化BP神经网络梯度推导
 对于任何一个需要求偏导的待求参数w,都有:
 
即误差函数E的梯度,等于单个样本的误差函数的梯度之和的均值(E对b的梯度也如此),
因此,我们可以先推导单个样本的梯度,最后再对单样本梯度求和取均值即可
对于BP神经网络梯度推导,现在问题简化为求





      输出层权重的梯度推导   


输出层权重梯度推导
 输出层的权重为"输出个数*隐节点个数"的矩阵,
现推导任意一个权重wji (即连接第i个隐层与第j个输出的权重)的单样本梯度
如下:

 
事实上,只有第j个输出是关于 的函数,也即对于其它输出 
因此, 
上式即等于
继续求导


 是第j个输出的误差,简记为                         
是第i个隐节点的激活值,简记为(A即Active)

上式即可写为
                       
上述是单样本的梯度,
整体样本的梯度则应记为 

  

 为样本个数、输出个数                                         
是第m个样本第j个输出的误差      
是第m个样本第i个隐节点的激活值    




   输出层阈值的梯度推导   


输出层阈值梯度推导
对于阈值 (第j个输出节点的阈值)的推导与权重梯度的推导是类似的,
只是上述标蓝部分应改为

 
简记为
 
上述是单样本的梯度,
整体样本的梯度则应记为 
 
 为样本个数、输出个数                
是第m个样本第j个输出的误差      




    隐层权重的梯度推导   


隐层的权重为"隐节点个数*输入个数"的矩阵,
现推导任意一个权重
 (即连接第i个输入与第j个隐节点的权重)的单样本梯度
如下:
 


只有第j个tansig是关于 的函数,所以上式可以写成

 
继续求导
 
又由
所以上式为:

简写为
上述是单样本的梯度,对整体样本则有:
 
 为样本个数、输出个数                                              
是第m个样本第k个输出的误差        
是第m个样本第j个隐节点的激活值           
是第m个样本第i个输入                                                  




     隐层阈值的梯度推导   


隐层阈值梯度推导
对于阈值 (第j个隐节点的阈值)的推导与隐层权重梯度的推导是类似的,
只是蓝色部分应改为

又由
所以上式为:

简写为
上述是单样本的梯度,对整体样本则有:
 
 为样本个数、输出个数                                              
是第m个样本第k个输出的误差        
是第m个样本第j个隐节点的激活值         





   

   04. 三层BP神经网络梯度推导-结果总结  




本节整理上述三层BP神经网络梯度推导的结果




    三层BP神经网络梯度公式    


综合上述推导结果,BP神经网络梯度公式如下:
输出层梯度公式
输出层权重梯度:                                         
输出层阈值梯度:                                               
隐层梯度公式
隐层权重梯度:     
隐层阈值梯度:             
✍️符号说明
 为样本个数、输出个数                                               
是第m个样本第k个输出的误差        
是第m个样本第i个隐节点的激活值           
是第m个样本第i个输入                                                  





以上就是三层BP神经网络梯度公式推导的全部过程了~







 End 






联系老饼