本文主要用直观的思维去介绍梯度,为神经网络学习打下坚实的数学基础
机器学习
中,经常会出现一个概念: 梯度下降
,几乎所有的教程都会有这个概念,很多的学习的公式的推导都是以梯度为基准,很多人可能想:卧槽,数学早忘光了!所以,这里,主要就是做一个简单的概念普及,为后续的机器学习做一个最基础的预热
。
梯度
关于梯度,百度百科的解释是这样的:
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
要是你还记得大学(还是高中)的概念的话,那么这个理解起来其实并不难,难的只是这拗口的定义
。
通俗的讲:
梯度是指某个点,某个函数在某个方向最大的导数
这个主要是在多个维度中的定义,一般来讲,我们定义以函数的时候,可能是这么定义:
这里的例子我们可以看到这是一个三维函数,Y
由X1
、X2
、X3
共同决定。
那么,上面说的方向其实就是指的是X1
、X2
、X3
组成的组合方向。
回到最低的一维空间:
这里Y
只和X
相关,因此,某个点的梯度方向其实就是X轴的一个方向。
如果到了三维空间(X/Y/Z)中呢? 如果Z
是中间的那根主轴,那么其实梯度就是X
、Y
组成的某个方向(不是X/Y/Z组成的方向)
这么一看其实就很好理解了(脑补一下)。
而方向的话则就是函数值上升最快的那个方向,也就是导数最大的方向:
举个例子
上述的代码是一个一元二次方程,那么当
X > 0
的时候,其实导数都是大于0的,一次梯度的方向就是x轴正方向,当X<0
的时候,就是负方向了。