本文涉及到数学公式,基本都是大学课本或者高中课本里的,有兴趣的一起来回忆下。
传说一个公式能少一个粉丝,但是那也没有办法,神经网络离不开数学,有兴趣的请坚持看下去,虽然有点无聊,但是也许你能了解些新的知识。
导数
定义
导数(Derivative),也叫导函数值。又名微商,是微积分中的重要基础概念。当函数y=f(x)的自变量x在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f'(x0)或df(x0)/dx。[图片上传失败...(image-105698-1614514943203)]
手动求导数
导数公式
求下面的导数:
根据导数公式,很容易求的导数是:
顺便说一下: 一个多变量的函数的偏导数,就是它关于其中一个变量的导数而保持其他变量恒定(相对于全导数,在其中所有变量都允许变化)
lnx的导数
lnx的导数是1/x,这个是众所周知的,但是它是怎么证明的,这里就用到了导数的定义,下面是详细的证明过程:复合函数求导
复合函数求导公式:设u=g(x),对f(u)求导得:f'(x)=f'(u)g'(x),设u=g(x),a=p(u),对f(a)求导得:f'(x)=f'(a)p'(u)*g'(x)。
计算机求导
计算机求导基于的是导数的定义。如果要计算x=3, y=4时关于x的f(x,y)的偏导数, 则可以计算f(3+ε,4) - f(3, 4)并将结果除以ε(使用极限的ε值)。这种类型的导数值称为极限差分近似。
def f(x, y): return x ** 2 * y + y + 2def derivative(f, x, y, x_eps, y_eps): return (f(x + x_eps, y + y_eps) - f(x, y)) / (x_eps + y_eps)df_dx = derivative(f, 3, 4, 0.000001, 0)df_dy = derivative(f, 3, 4, 0, 0.000001)print(df_dx)print(df_dy)
最终的结果: 24.000004003710274 9.99999999606871
按照手动求偏导的结果很接近了。 公式求偏导的结果是24和10。这个可以用来做检验。
参考
https://www.cnblogs.com/peghoty/p/3857839.html https://www.jianshu.com/p/e74eb43960a1 https://baike.baidu.com/item/%E5%AF%BC%E6%95%B0/579188?fr=aladdin https://zhidao.baidu.com/question/524121644.html
写在最后
导数还是很重要的,在优化算法时候的梯度下降法中的梯度本质上就是导数。
更多内容,欢迎关注我的微信公众号: 无情剑客。