大家好,欢迎来到IT知识分享网。
内容导读:切线、导数、偏导数、梯度、梯度下降算法,从中学、大学数学到人工智能,这些概念是一脉相承的。本文将这些知识进行大串联。
如果你是个中学生,读完本篇文章,你将会了解到,中学里学习的数学将来会在人工智能的哪些方面应用。如果你正在从事人工智能的学习研究,本文将有助于你系统地重温人工智能算法及其预备知识的前世今生。
(1)中学数学里的相切、切线、导数等概念。
曲线上某点A的切线是这样定义的:B是曲线上邻近A的点,以A为定点,当B点沿着曲线无限地接近A点时,割线AB的极限位置就是曲线在点A的切线,A点叫做切点。下面的GIF动画动态演示了这一过程。
我们可以绘制任意光滑曲线上的点的切线。下面几幅动图展示了圆、抛物线、正弦曲线、复合函数曲线上的切线。
有了切线和切点,我们还可以求出经过切点的法线,它与切线垂直。正弦曲线上任何一点的切线及其法线如下面的动图所示。
曲线上某点的切线的斜率,我们称之为曲线在该点的导数。当然,导数有其严格的定义,函数y=f(x)在x0处的导数定义为:函数y=f(x)在x0处的函数值的增量Δy与自变量的增量Δx之比在Δx→0时的极限,如下图所示:
当然,这个导数值与x0处的切线斜率是相等的。
导数或者切线斜率有什么意义?它反映了当自变量变化时,因变量变化的快慢程度。如下图所示,图中给出了抛物线上两点A,B的切线,显然B点的切线更陡峭,则在两点处,当自变量x有相同的变化量Δx时,B点的因变量Δy更大。明白这一点很重要。
在中学里学习的导数,仅限于单个自变量的函数。事实上,许多函数有2个或者更多自变量。那么此时导数该怎么定义呢?这就要用到偏导数。
(2)大学里的偏导数概念。
为了简化问题,数学家们想了一个巧妙的方法。例如对2元函数f(x,y),把y看作常数,则f(x,y)变成了一元函数,就可以按照中学里导数的定义求解出f(x,y)在(x0,y0)处对x的导数。同理,将x看作常数,可以求出f(x,y)在(x0,y0)处对y的导数。这个导数叫作对x或y方向的偏导数,如下图所示。
偏导数用下面的公式来表示。
偏导数反映了在(x0,y0)处,f(x,y)在某个方向上随该自变量变化而发生变化的快慢程度。
很容易将偏导数的概念推广到多元函数。
如果给偏导数添加方向,可以将偏导数变换为矢量形式。其变换方法为将各个方向的偏导数乘以该方向的单位方向向量,如下图所示:
则该矢量的和称为梯度,如上面的图所示。反过来,梯度矢量在各个坐标轴的投影的大小即为在各个方向的偏导数。
那么梯度有什么意义呢?根据前面的介绍,方向导数反映了函数值在各个方向上的最大变化率,梯度是各个方向梯度分量(偏导数乘以单位方向向量)的合成,则梯度自然反映了函数的最大变化率及其方向。
理解了这一点非常重要。它有什么用呢?
在人工智能的机器学习中,训练各种机器学习模型时,常常构造一个误差函数。为了避免正负误差抵消,常取模型输出与目标输出的误差平方和构造一个误差函数,也称为损失函数,如下图所示。
而这个误差函数中,有一些变量,譬如权重,是模型训练要优化的对象。
机器学习模型的训练,是一个反复迭代更新误差函数中的权重等变量,使误差下降的过程。自然,误差下降的越快,则模型训练用时越少。
联想到函数沿梯度方向的变化量最大,自然而然的想到,每次迭代都沿梯度方向降低误差,会使误差快速下降。看下图,假定它是一个2元变量的误差函数。误差函数存在极小值,则显然沿路径ABCDE误差下降到达最小值的速度最快。
简单的讲,梯度下降算法基本思想是:在当前位置,各个自变量沿各自的梯度方向变化,得到下一个位置。下图是该算法的描述,分别给出了误差函数和参数更新公式。
图中,a是学习步长,用来控制参数更新的快慢。
下图展示了一个1元误差函数梯度下降算法的过程。
总结:切线、导数、偏导数、梯度、梯度下降算法,从中学、大学数学到人工智能,这些概念层层递进,一脉相承。反过来看,人工智能的算法并不复杂,它的基本思想就蕴含在中学、大学学习的数学知识中。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/83785.html