本节主要讨论运用链式法则计算函数梯度。
链式法则是指,复杂函数f可以提取出中间函数q,则f对x的偏导数等于f对q的偏导数 乘以 q对x的偏导数。
实践中是求出偏导数的具体值,而非表达式。
计算函数值时,是从输入值逐级计算出中间函数值,称为正向。
计算偏导数时,是从函数值倒过来计算出函数对中间函数的偏导数,最终计算出对输入值的偏导数,称为反向。
实际上在正向传播过程中,每一步都可以计算出输出值和偏导数,所以在反向传播时只需要将每步的偏导数值相乘即可得到整体的偏导数值。
用电路图来模拟计算过程,f = q z = ( x + y ) z,下图中绿色是输入/输出值,红色是偏导数值。
以Sigmoid为例
卷积+sigmoid激活函数的表达式:
w是权重向量,x是输入向量,e的指数部分即卷积结果。sigmoid的作用是将卷积结果压缩成[0, 1]区间的数。
转换成电路表示:
sigmoid函数的导数具有一个非常简单的形式:( 1 - f ) * f,所以往往作为一个整体处理。
计算任意函数的梯度,可以通过将函数分解为容易求导的函数,再用链式法则做乘法即可。
