5.1_链式法则

5.1 链式法则

理解反向传播的关键是链式法则(连锁律)。链(chain)可以理解为链条、锁链等,在这里表示多个函数连接在一起使用。链式法则意为连接起来的多个函数(复合函数)的导数可以分解为各组成函数的导数的乘积。

下面看一个链式法则的具体例子。假设有一个函数 y=F(x)y = F(x) ,这个函数 FF 由3个函数组成: a=A(x),b=B(a)a = A(x), b = B(a)y=C(b)y = C(b) 。该函数的计算图如图5-1所示。


图5-1 复合函数的例子

这时, yyxx 的导数可以用式子5.1表示。

dydx=dydbdbdadadx(5.1)\frac {\mathrm {d} y}{\mathrm {d} x} = \frac {\mathrm {d} y}{\mathrm {d} b} \frac {\mathrm {d} b}{\mathrm {d} a} \frac {\mathrm {d} a}{\mathrm {d} x} \tag {5.1}

如式子5.1所示, yyxx 的导数可以表示为各函数的导数的乘积。换言之,复合函数的导数可以分解为各组成函数导数的乘积。这就是链式法则。式子5.1所表示的链式法则也可以像下面这样写成包含 dydy\frac{\mathrm{dy}}{\mathrm{dy}} 的形式。

dydx=dydydydbdbdadadx(5.2)\frac {\mathrm {d} y}{\mathrm {d} x} = \frac {\mathrm {d} y}{\mathrm {d} y} \frac {\mathrm {d} y}{\mathrm {d} b} \frac {\mathrm {d} b}{\mathrm {d} a} \frac {\mathrm {d} a}{\mathrm {d} x} \tag {5.2}

dydy\frac{\mathrm{dy}}{\mathrm{dy}} 是对自身求导,导数值永远为1。计算时通常省略 dydy\frac{\mathrm{dy}}{\mathrm{dy}} 这种针对自身的导数,但考虑到反向传播的实现,这里特意加上了这一项。

dydy\frac{\mathrm{dy}}{\mathrm{dy}}yyyy 的导数。即使 yy 变化的幅度很小, yy 自身也会变化同样大小的值。因此,不管对于什么函数,变化率总是 1。