动作定型之反向传播BP
通过查阅各种资料已对反向传播有一定的理解,以下为个人巩固,仅供他人参考。
-
概述:
深度学习神经网络进行调参的重要步骤,降低函数损失,使实际输出越来越接近理想输出。 -
应用原理:
链式法则(简单来讲就是求偏导数) -
工作原理:
#为了描述方便,本文只对W5进行反向传播的权值更新。Step1 : 首先进行前向传播(Forward Propagation)
上图为简单的伸进网络,输入层两个参数I1和I2, 中间隐藏层两个神经单元h1,h2, 输出层两个参数O1,O2,W1-W8为权重参数。I1,I2假设为0.1,0.2
W1-W8初始值设为0.2,0.2,0.1,0.1,0.1,0.2,0.1,0.2(为了便于计算,正常权重值直接random随机初始化)
O1,O2假设我的理想值(也就是目标值、真实值)为target(O1) = 0.4,target(O2) = 0.8
假设所有激活函数均为sigmoid。进行前向传播:
获得h1处神经元的输入值Inp(h1) = W1 × I1 + W2 × I2 =
获得h2处神经元的输入值Inp(h2) = W3 × I1 + W4 × I2 =获得h1处神经元的输出值Out(h1) = sigmoid(Inp(h1))=
获得h1处神经元的输出值Out(h2) = sigmoid(Inp(h2))=获得O1处神经元的输入值Inp(O1) = W5 × Out(h1) + W6 × Out(h2) = 参考公式1
获得O2处神经元的输入值Inp(O1) = W7 × Out(h1) + W8 × Out(h2) =获得O1处神经元的输出值Out(O1) = sigmoid(Inp(O1))= 参考公式2
获得O2处神经元的输出值Out(O2) = sigmoid(Inp(O2))=根据实际求得Out(O1)及Out(O2) 可计算损失函数 L = 1/2 ×(target(O1) - Out(O1))² + 1/2 ×(target(O2) - Out(O2))² = 参考公式3
Step2 : 进行反向传播(Forward Propagation)
进行反向传播的目的在于更新W5的值,使O1更新后更接近目标值0.4。
如何更新呢? 就是通过损失值L对W求导(参考图两个公式)。
#其中α为学习效率,一般设置0-1之间,此处设α = 0.1
将上图公式中三个导数进行求导后进行相乘即可求出损失值L对权重W5的偏导数。