这事儿刚开始是比较不好理解。
这事儿得从这位大佬开始讲起:
莱布尼茨的发明
我们知道导数是这样定义的:
f^\prime(x) =\lim_{h\to0 }\frac{f(x+h)-f(x)}{h}
但在数学大佬的眼里,这玩意不 美观 啊!!在许多时候,数学家眼里 美=简洁 。但这式子不简洁。
从导数的定义上看它不可避免的问题就是要求 商 ,但无奈又不能把极限分别写进分子和分母里去!于是Leibniz就想出了这么个玩意:
\frac{dy}{dx} ,并解释道:它是" 由 x 的变化而引起的 y 的无穷变化量 "( dy )与「 x 的无穷小变化量 」(dx) 的 商 。那么用这个记法就可以很好地体现出导数定义里 商 的形式了。
上述解释的关键在于: dy 必须是因 x 改变了 dx 而引起的变化,这个记号才有意义
翻译几下就是: dy 不能独立于 x 而变化!
反例其实很好找:
y^\prime(x)\cdot z^\prime(t)=\lim _{h \rightarrow 0} \frac{y(x+h) -y(x)}{h} \lim _{h \rightarrow 0} \frac{z(t+h) -z(t)}{h} =\frac{dy}{dx}\cdot\frac{dz}{dt}
此时 dy 是和 t 无关的, dz 是和 x 无关的。
因此如果写成这样就肯定错了:
\xcancel{\color{red}{\frac{dy}{dx }\cdot\frac{dz}{dt} = \frac{dy}{dt}\cdot\frac{dz}{dx} }}
反过来,如果满足我们上述的条件,那么实际上它是可以作为「商」来处理的
注意:下面所有的推导都必须保证这个「商」所对应的极限必须存在!\frac{dx}{dy} = \frac{1}{\quad\frac{dy}{dx}\quad}
\frac{dy}{dx} = \frac{dy}{du}\;\frac{du}{dx}
注意:链式法则是可以任意增长的(有限次)。比如我们令 x=x(t) ,
\frac{dy}{dt} = \frac{dy}{du}\;\frac{du}{dx}\;\color{red}{\frac{dx}{dt}}
甚至于:
y = f_1\circ f_2\circ \cdots\circ f_n(x)
我们可以这样处理:
\frac{dy}{dx} = \frac{dy}{\color{Red} {df_n} }\frac{\color{Red}{ df_n} }{dx}
\frac{dy}{dx} = \frac{dy}{\color{Red}{ df_{n-1}} }\;\frac{\color{Red}{ df_{n-1}} }{\color{Blue}{ df_{n}} }\;\frac{\color{Blue}{ df_n} }{dx}
\vdots
\frac{dy}{dx} = \frac{dy}{df_1}\;\frac{df_1}{df_2}\cdots\frac{df_n}{dx}
这个过程中,我们就可以看成不断地同时「乘」、「除」 df_k ,因为每一步的添加项都 没有破坏分子是因其自变量改变而产生的无穷小量这一条件 。
目前深度学习的所谓Back propagation其实就是这个法则(当然需要用到偏导数)。\left \{ \begin{align*} x = x(t)\\ y = y(t) \end{align*} \right.
\frac{dy}{dx}={\left ( \frac{dy}{\color{Red}{ dt} } \right ) \Big/ \left ( \frac{dx}{\color{Red}{ dt}} \right ) }
其反函数类似:
\frac{dx}{dy}={\left ( \frac{dx}{\color{Red}{ dt} } \right ) \Big/ \left ( \frac{dy}{\color{Red}{ dt}} \right ) }
这里与复合函数链式法则完全相同, 由于 dx,dy 都是由 t 的变化而产生的无穷小量 ,因此仍然可以同时「乘」、「除」 dt 。
鸣谢:
莱布尼茨发明的部分叙述参考了:Is dy/dx not a ratio?特别感谢@爱拼才会赢 帮我多次指正打叉部分的错误!
感谢 @不想打辅助 帮忙找出链式法则里一处笔误。
关于莱布尼茨记号的历史实在是太长了,有很多数学家的工作在里面,包括Bernoulli兄弟在内的大数学家在后来都对此进行了完善。有兴趣的同学可以去看【古今数学思想】第二册82-92页。