欢迎光临散文网 会员登陆 & 注册

神经网路之导数

2021-02-28 20:20 作者:无情剑客Burning  | 我要投稿

在神经网络中,有一个常用的激活函数sigmoid函数,这个函数在高等数学中应该是有的,只是当时没有理会。函数图像如下,本文主要主要梳理下相应的数学知识,具体的应用在后续的文章中会涉及。

本文涉及到数学公式,基本都是大学课本或者高中课本里的,有兴趣的一起来回忆下。

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

导数

定义

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

手动求导数

导数公式

求下面的导数:

$$ y = x^2 + 2x $$ 根据导数公式,很容易求的导数是: $$ \dot{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

写在最后

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

公众号

更多内容,欢迎关注我的微信公众号: 无情剑客。


神经网路之导数的评论 (共 条)

分享到微博请遵守国家法律