神经网络与深度学习笔记:BP神经网络超详细推导

在这里插入图片描述

继上一次讲到adaline神经网络之后,想必大家对于神经元权值的调整过程有了一个基本的认知,没看到的小伙伴可以到这里看看“传送门”,这次我们介绍一种类似于adaline算法的神经网络,它采用三层神经网络,原理上与adaline算法类似,它就是大名鼎鼎的BP神经网络(back propagation),但是又有些许不同,我们来具体了解一下它。
———————————————————————

1基本结构

1.1单个神经元结构

单神经元
单个神经元结构与adaline基本相同:

输入: x 1 , x 2 ⋅ ⋅ ⋅ , x n x_1,x_2\cdot \cdot \cdot ,x_n x1,x2,xn

输出: y y y

输入与输出的关系: y = ( x 1 ∗ w 1 + x 2 ∗ w 2 + ⋅ ⋅ ⋅ + x n ∗ w n ) + b y=\left( x_1*w_1+x_2*w_2+\cdot \cdot \cdot +x_n*w_n \right) +b y=(x1w1+x2w2++xnwn)+b

输入用矩阵表示: X = [ x 1 , x 2 ⋅ ⋅ ⋅ , x n ] T X=\left[ x_1,x_2\cdot \cdot \cdot ,x_n \right] ^T X=[x1,x2,xn]T

权重用矩阵表示: W = [ w 1 , w 2 , ⋅ ⋅ ⋅ , w n ] W=\left[ w_1,w_2,\cdot \cdot \cdot ,w_n \right] W=[w1,w2,,wn]

那么输出可表示为: y = W X + b y=WX+b y=WX+b

更一般的,令阈值信号: w 0 = 1 , x 0 = b w_0=1,x_0=b w0=1,x0=b
那么输入和权重可表示为: X = [ x 0 , x 1 , x 2 ⋅ ⋅ ⋅ , x n ] T , W = [ w 0 , w 1 , w 2 , ⋅ ⋅ ⋅ , w n ] X=\left[ x_0,x_1,x_2\cdot \cdot \cdot ,x_n \right] ^T,W=\left[ w_0,w_1,w_2,\cdot \cdot \cdot ,w_n \right] X=[x0,x1,x2,xn]T,W=[w0,w1,w2,,wn]
那么输出信号: y = W X y=WX y=WX

1.2激活函数

对于上式的加权求和得到的结果,相比于我们最终结果的要求明显是远远不够的,因此引入激活函数赋予结果一些其他特性,以下是激活函数需要满足的条件:

  • 非线性:即导数非常数,映入非线性因素,使得线性不可分问题可分
  • 几乎处处可导,调整权值得梯度下降算法需要计算导数,因此要求该函数可微分
  • 非饱和性:饱和是指当自变量变大时因变量几乎不变,这样会导致系统迭代速度变慢Sigmoid函数是一种饱和性函数,可以利用交叉熵函数作为损失函数弥补这一缺陷
  • 单调性:导数符合不变,这样系统迭代更加稳定,易于收敛
  • 输出范围有限:这样也能提高系统稳定性
    我们这里用到的是Sigmoid函数:
    y = 1 e − x + 1 y=\frac{1}{e^{-x}+1} y=ex+11
    Sigmoid函数图像
    容易得到S函数的导数:
    y ′ = y ( 1 − y ) y'=y\left( 1-y \right) y=y(1y)
    图像:

Sigmoid函数导数图

1.3传播过程

以下是一个三层网络结构,分别为输入层、隐藏层、输出层
实例
正向传播:输入i1,i2,然后一层层传播,直到输出结果
反向传播:根据结果与期望计算损失函数,然后调整w和b,完成一次反向传播
当完成一次正反向传播,也就完成了一次迭代,反复迭代直到误差越来越小,训练完成

2算法推导

2.1初始化参数

输入参数​ i 1 , i 2 i_1,i_2 i1,i2与期望输出 o 1 , o 2 o_1,o_2 o1,o2都是已知训练数据
权重与偏置值 w , b w,b w,b都随机初始化为大于0小于1的数

2.2正向传播

输入层—>隐藏层:

  • 计算 h 1 h_1 h1的输入加权和:
    I N h 1 = w 0 ∗ i 0 + w 1 ∗ i 1 + w 2 ∗ i 2 ( w 0 = 1 , i 0 = b ) IN_{h_1}=w_0*i_0+w_1*i_1+w_2*i_2\left( w_0=1,i_0=b \right) INh1=w0i0+w1i1+w2i2(w0=1,i0=b)
  • 计算 h 1 h_1 h1的输出结果:
    O U T h 1 = 1 e − I N h 1 + 1 OUT_{h_1}=\frac{1}{e^{-IN_{h_1}}+1} OUTh1=eINh1+11
  • 同理计算 h 2 h_2 h2

隐藏层—>输出层:

  • 计算 o 1 o_1 o1的输入加权和:
    I N o 1 = w 0 ∗ i 0 + w 5 ∗ O U T h 1 + w 6 ∗ O U T h 2 IN_{o_1}=w_0*i_0+w_5*OUT_{h_1}+w_6*OUT_{h_2} INo1=w0i0+w5OUTh1+w6OUTh2

  • 计算 o 1 o_1 o1的输出结果:
    O U T o 1 = 1 e − I N o 1 + 1 OUT_{o_1}=\frac{1}{e^{-IN_{o_1}}+1} OUTo1=eINo1+11

  • 同理计算 o 2 o_2 o2

正向传播结束

2.3反向传播

  • 损失计算
    为了方便计算我们,重点放在理论推导,我们采用最简单的损失计算函数:
    E t o t a l = E O U T o 1 + E O U T o 2 E_{total}=E_{OUT_{o1}}+E_{OUT_{o2}} Etotal=EOUTo1+EOUTo2
    其中
    E O U T o 1 = 1 2 ∗ ( o 1 − O U T o 1 ) 2 E_{OUT_{o1}}=\frac{1}{2}*\left( o_1-OUT_{o_1} \right) ^2 EOUTo1=21(o1OUTo1)2
    E O U T o 1 E_{OUT_{o1}} EOUTo1同理
  • 权重更新
    我们采用链式求导法则计算复合函数的导数
    隐藏层—>输出层
    在这里插入图片描述

∂ E t o t a l ∂ w 5 = ∂ E t o t a l ∂ O U T o 1 ∂ O U T o 1 ∂ I N o 1 ∂ I N o 1 ∂ w 5 \frac{\partial E_{total}}{\partial w_5}=\frac{\partial E_{total}}{\partial OUT_{o_1}}\frac{\partial OUT_{o_1}}{\partial IN_{o_1}}\frac{\partial IN_{o_1}}{\partial w_5} w5Etotal=OUTo1EtotalINo1OUTo1w5INo1
= − ( o 1 − O U T o 1 ) ⋅ O U T o 1 ⋅ ( 1 − O U T o 1 ) ⋅ O U T h 1 =-\left( o_1-OUT_{o_1} \right) \cdot OUT_{o_1}\cdot \left( 1-OUT_{o_1} \right) \cdot OUT_{h_1} =(o1OUTo1)OUTo1(1OUTo1)OUTh1
= σ o 1 ⋅ O U T h 1 =\sigma o_1\cdot OUT_{h_1} =σo1OUTh1
其中
σ o 1 = − ( o 1 − O U T o 1 ) ⋅ O U T o 1 ⋅ ( 1 − O U T o 1 ) \sigma o_1=-\left( o_1-OUT_{o_1} \right) \cdot OUT_{o_1}\cdot \left( 1-OUT_{o_1} \right) σo1=(o1OUTo1)OUTo1(1OUTo1)

设学习率为 α \alpha α
w 5 + = w 5 − α ⋅ ∂ E t o t a l ∂ w 5 w_{5}^{+}=w_5-\alpha \cdot \frac{\partial E_{total}}{\partial w_5} w5+=w5αw5Etotal
同层其他参数同理
输入层—>隐藏层
在这里插入图片描述
∂ E t o t a l ∂ w 1 = ∂ E t o t a l ∂ O U T h 1 ∂ O U T h 1 ∂ I N h 1 ∂ I N h 1 ∂ w 1 \frac{\partial E_{total}}{\partial w_1}=\frac{\partial E_{total}}{\partial OUT_{h_1}}\frac{\partial OUT_{h_1}}{\partial IN_{h_1}}\frac{\partial IN_{h_1}}{\partial w_1} w1Etotal=OUTh1EtotalINh1OUTh1w1INh1
= σ h 1 ⋅ i 1 =\sigma _{h_1}\cdot i_1 =σh1i1
w 1 + = w 1 − α ⋅ ∂ E t o t a l ∂ w 1 w_{1}^{+}=w_1-\alpha \cdot \frac{\partial E_{total}}{\partial w_1} w1+=w1αw1Etotal
同层其他参数同理

2.4总结

至此完成一次完整迭代,下一次笔记将会给出代码实践过程,请持续关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值