用Python+Numpy模块实现神经网络(三)

用Python+Numpy模块实现神经网络(二) 续集

5. 导数的知识

    hi,换用大家继续阅读我的博文。首先,我们不得不提及一下导数的知识点(别被吓趴下了????),先不要问为什么,也先不管在神经网络中哪里会用到导数,首先,我们先提及一下导数的定义:

   假如在一个非线性函数(图像不是直线,而是曲线)的图像上有两个点:

用Python+Numpy模块实现神经网络(三)

他们一个叫A,一个叫B,他们的坐标分别是(xa,ya),(xb,yb)

用Python+Numpy模块实现神经网络(三)

在图中又出现了一条用红色画出的穿过点A,B的实线,叫它线段AB,假如我想求他的斜率,该如何求呢?

用Python+Numpy模块实现神经网络(三)

很简单,就用上图中线段用Python+Numpy模块实现神经网络(三)除以线段用Python+Numpy模块实现神经网络(三)就可以了,但这两个线段又分别是怎么求出的呢,最后,我们可以推出数学公式如下(斜率我们暂时记为d:

用Python+Numpy模块实现神经网络(三)

好,接下来我们再做一个假设,假设点a无限靠近点b,那我们可以称点b的x坐标为a,这个函数(就是这个曲线的函数)叫做f(x),还有一个delta a(下图中的"三角形+a")为无穷小:

用Python+Numpy模块实现神经网络(三)

别看图中delta a看着挺“宽敞”,其实他是一个无限小的出现,也就是0.0000000......,不会小于零,我们把他记作用Python+Numpy模块实现神经网络(三),所以我们可以推出点a的切线的斜率的公式(斜率记作d):

 用Python+Numpy模块实现神经网络(三)

hey!我们做到了!其实这就是导数的公式,只要我们有一个函数,与一个a,就可以求出点a切线的斜率,我们来试一下(f(x)的导数记作用Python+Numpy模块实现神经网络(三)):

假如我们要求函数用Python+Numpy模块实现神经网络(三)再求在x点的导数,求法如下:

用Python+Numpy模块实现神经网络(三)

首先,还是有几点我需要解释, delta x因为无限接近于0,于是就把他当作0了,所以2x+delta x就等于2x。