机器学习西瓜书笔记:神经网络:BP算法公式推导

  • Post author:
  • Post category:其他




1、变量符号含义


在这里插入图片描述

1、训练集



D

=

{

(

x

1

,

y

1

)

,

(

x

2

,

y

2

)

,

.

.

.

,

(

x

m

,

y

m

)

}

D = \{(\vec{x}_1, \vec{y}_1), (\vec{x}_2, \vec{y}_2),…, (\vec{x}_m, \vec{y}_m)\}






D




=








{



(











x

























1


















,













y


































1


















)


,




(











x

























2


















,













y


































2


















)


,




.


.


.


,




(











x

























m


















,













y


































m


















)


}





,共m个样例

2、



x

i

R

d

,

y

i

R

d

\vec{x}_i \in \mathbb{R}^d, \vec{y}_i \in \mathbb{R}^d















x

























i































R











d









,













y


































i































R











d












:输入样本由



d

d






d





个属性描述,输出



l

l






l





维(



l

l






l





个属性描述)实值向量



y

i

\vec{y}_i















y


































i




















3、对应图中的神经网络

  • d个输入神经元:输入特征向量由d个属性描述
  • l个输出神经元:输出特征向量由y个属性描述
  • q个隐层神经元:拟合数据集线性不可分时的模型

4、连接权都如图所示


5、激活函数:sigmoid


在这里插入图片描述


6、阈值:每个神经元都有自己的阈值

  • 输出层第



    j

    j






    j





    个神经元



    y

    i

    y_i







    y










    i





















    的阈值:



    θ

    i

    \theta_i







    θ










    i




















  • 隐层第



    h

    h






    h





    个神经元



    b

    h

    b_h







    b










    h





















    的阈值:



    γ

    h

    \gamma_h







    γ










    h




















7、第x个神经元的输入:FNN都是全连接,因此要求和

  • 输出层第j个神经元的输入:



    β

    j

    \beta_j







    β










    j




















  • 隐层第h个神经元的输入:



    α

    h

    \alpha_h







    α










    h























2、损失函数:均方误差推导


1、训练样例



(

x

k

,

y

k

)

(\vec{x}_k, \vec{y}_k)






(











x

























k


















,













y


































k


















)




2、其经过神经网络的



l

l






l





个输出记为



y

^

k

=

(

y

1

^

k

,

y

2

^

k

,

.

.

.

,

y

l

^

k

)

\hat{\vec{y}}_k = (\hat{y_1}^k,\hat{y_2}^k, …,\hat{y_l}^k )























y































^
























k




















=








(












y










1























^
























k









,














y










2























^
























k









,




.


.


.


,














y










l























^
























k









)





,其中每个输出:

在这里插入图片描述

3、则对于这一个训练样例



(

x

k

,

y

k

)

(\vec{x}_k, \vec{y}_k)






(











x

























k


















,













y


































k


















)





,网络的均方误差为:

在这里插入图片描述




3、算法:求参数w和θ,BP算法,基于

随机

梯度下降




3.1 随机梯度下降的理解



参考


在这里插入图片描述

梯度是有方向的:曲面上方向导数的最大值的方向就代表了梯度的方向

因此每次规定的步长



η

\eta






η





固定,我们的

参数

就要朝着该参数对应函数梯度的方向(变化最快,如山最陡峭的方向)变化,才能让

损失函数值

最快地往极小值收敛。

理解:假设你初始在山顶,步长5m,朝着梯度最大(最陡峭的)方向,走5m(也就是当前点的梯度值*步长),能垂直距离下降4m,非最陡峭方向一次则垂直距离下降更少。



批量梯度下降:

  1. 对于权值



    θ

    \vec{\theta}














    θ




















    中的每个分量



    θ

    j

    \theta_j







    θ










    j





















    (个数对应样本属性个数),每次


    所有m个样本

    的第j个属性值

    都要参与更新



    Δ

    \Delta值






    Δ








  2. 更新完所有分量,算作一次批量梯度下降结束。一般我们会重复梯度下降多次

在这里插入图片描述

如图代码就是使用批量梯度下降,重复了iters次数,每一次所有样本参与对权值



θ

\vec{\theta}














θ




















中的每个分量



θ

j

\theta_j







θ










j





















进行更新。那个np.sum

在这里插入图片描述



随机梯度下降:

用样本中的一个随机选取的样本



x

i

\vec{x}_i















x

























i





















来近似我所有的样本,来调整θ

  1. 对于权值



    θ

    \vec{\theta}














    θ




















    中的每个分量



    θ

    j

    \theta_j







    θ










    j





















    (个数对应样本属性个数),每次


    只有样本



    x

    i

    \vec{x}_i















    x

























    i






















    的第j个属性值

    参与更新



    Δ

    \Delta值






    Δ








  2. 更新完所有属性分量,算作一次随机梯度下降结束。一般我们会重复梯度下降多次

在这里插入图片描述




3.2 公式推导


求偏导什么时候结果要求和:看连线

在这里插入图片描述

  • 单独一条隐含层到输出层的连接权w只影响一个y,因此对其求偏导,无需求和。

  • 但是输入层到隐含层的连接权v,即使是一条,也会影响所有的y。

  • 看图中的连线即可知道。则其实从隐含层的神经元b开始,之后所有的参数,一个都会影响所有的y。故链式法则求偏导时要加上求和符号。

在这里插入图片描述




3.3 BP算法


在这里插入图片描述



版权声明:本文为weixin_42810939原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。