1.基本概念
BP(Back Propogation)算法是一种最有效的学习方法,主要特点是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的。前向过程中通过与正确标签计算损失,反向传递损失,更新参数,优化至最后的参数。
一个两层的神经网络。其中
x
x
x是网络的输入,
y
y
y是网络的输出,
w
w
w是网络学习到的参数。"
“在这里,
w
w
w的值就是我们需要更新的目标,但是我们只有一些
x
x
x与跟它对应的真实
y
=
f
(
x
)
y=f(x)
y=f(x)的值,所以呢?我们需要使用这两个值来计算
w
w
w的值了,整个问题就转变成了下面的优化问题了,也就是我们需要求函数的最小值。
在实际中,这类问题有一个经典的方法叫做梯度下降法。意思是我们先使用一个随机生成的
w
w
w,然后使用下面的公式不断更新
w
w
w的值,最终逼近真实效果。
这里
w
w
w 是一个随机初始化的权重,
∂
E
∂
w
\frac{\partial E}{\partial w}
∂w∂E是表示当前误差对权重
w
w
w的梯度。
η
\eta
η是表示的学习率,通常不会很大,都是0.01以下的值,用来控制更新的步长。
- BP基础之链式求导若 y = g ( x ) y=g(x) y=g(x),那么 z = h ( x ) z=h(x) z=h(x),其中 。其中 d y d x = g ′ ( x ) , d z d y = f ′ ( y ) \frac{d y}{d x}=g^{\prime}(x), \frac{d z}{d y}=f^{\prime}(y) dxdy=g′(x),dydz=f′(y)。
当我们需要求
z
z
z对
x
x
x的导数
d
z
d
x
\frac{d z}{d x}
dxdz就需要使用链式求导了。根据我们之前学过的知识:
h
′
(
x
)
=
d
z
d
x
=
d
z
d
y
⋅
d
y
d
x
h^{\prime}(x) =\frac{dz}{dx} =\frac{dz}{dy}· \frac{dy}{dx}
h′(x)=dxdz=dydz⋅dxdy
这里说的都还是以单变量作为例子,实际中,多维变量就是变成了求偏导数了。