神经网络学习之导数

在神经网络中,有一个常用的激活函数sigmoid函数,这个函数在高等数学中应该是有的,只是当时没有理会。函数图像如下,本文主要主要梳理下相应的数学知识,具体的应用在后续的文章中会涉及。
神经网络学习之导数
本文涉及到数学公式,基本都是大学课本或者高中课本里的,有兴趣的一起来回忆下。

传说一个公式能少一个粉丝,但是那也没有办法,神经网络离不开数学,有兴趣的请坚持看下去,虽然有点无聊,但是也许你能了解些新的知识。

导数

定义

导数(Derivative),也叫导函数值。又名微商,是微积分中的重要基础概念。当函数y=f(x)的自变量x在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f’(x0)或df(x0)/dx。
神经网络学习之导数

手动求导数

导数公式

神经网络学习之导数求下面的导数:

y = x 2 + 2 x y = x^2 + 2x y=x2+2x
根据导数公式,很容易求的导数是:
y ˙ = 2 x + 2 \dot{y} = 2x+2 y˙​=2x+2

顺便说一下: 一个多变量的函数的偏导数,就是它关于其中一个变量的导数而保持其他变量恒定(相对于全导数,在其中所有变量都允许变化)

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)。

神经网络学习之导数对sigmoid函数求导涉及到的重要公式:
神经网络学习之导数下面通过计算求出公式2.1中的第二个式子,其他的同理。
神经网络学习之导数

计算机求导

计算机求导基于的是导数的定义。如果要计算x=3, y=4时关于x的f(x,y)的偏导数, 则可以计算f(3+ε,4) - f(3, 4)并将结果除以ε(使用极限的ε值)。这种类型的导数值称为极限差分近似。

def f(x, y):
    return x ** 2 * y + y + 2


def 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

写在最后

导数还是很重要的,在优化算法时候的梯度下降法中的梯度本质上就是导数。

公众号

更多内容,欢迎关注我的微信公众号: 无情剑客。
神经网络学习之导数

上一篇:EPS绘图常用快捷键及复杂台阶的画法


下一篇:数组连续区间均值最大值问题