深度学习最底层的理论,竟有些生疏了。
反向传播算法
首先是bp反向传播,其核心idea就是,从后向前,一层层的梯度传递。
高数中求偏导的时候就有个链式法则,对所有路径的偏导乘积求和,就是该参数的偏导
bp算法就是通过自后向前的偏导计算,避免了重复的计算。每一个节点的偏导值,都可以在前一级的偏导计算中用到
下面举个简单反向传播的直链例子:
ω \omega ω、 b b b是参数, h h h是隐含层神经元激活后的值, f f f是激活函数。
g i g_i gi我把它叫做梯度参数,每次更新和缓存的也是这个。
且很容易推得 g i = g i + 1 ⋅ ω i + 1 ⋅ f ′ ( ω i h i + b i ) g_i=g_{i+1}\cdot\omega_{i+1}\cdot f^\prime(\omega_ih_i+b_i) gi=