
维克托儿
2023/04/24阅读:21主题:自定义主题1
5分钟足矣——梯度,下山的最快路径!
说到梯度,我们首先想到梯田。

思考一个问题,假设你站在梯田的顶端,不考虑是否危险的前提下,找一条最快可以下山的路,怎么找?
有点数学思维的人,解决这个问题并不难,在每一个点环顾四周,找最陡峭的方向,迈出一步,然后再环顾四周.......重复这个过程,直到山脚下为止。
放在三维坐标系上,可能是下面这个轨迹。

那么,在数学上,怎么计算这个问题呢?要解决的核心问题是怎么找到最陡峭的方向,陡峭,也就是倾斜度,数学上叫斜率,这不就是导数干的事么!
问题简单了,在二维空间下,就是在每个点求得这个点的导数,沿着负导数的方向迈出一步,其实就是离底部更进一步。在多维空间下,一个点在各个方向上有不同的导数,也就是偏导数,那就比较各个方向哪个导数最大,就是最陡峭的方向,就沿着这个方向走,一定就是最快的下山路。
这个方法就是梯度下降法,就是沿着更让梯度下降的方向走,一定能走下山。
进一步转换为数学问题,其实梯度下降法,是一种用递归的方式求函数最小值的方法。
说了半天,梯度跟AI有什么关系呢?
损失最小
之前说过,机器学习的基本思路,就是找到一个模型,给它输入一堆训练数据,输出预测值,然后拿这个预测值跟真实的标签值做比较,两个值越接近,说明这个模型预测的越准确。
那么这个思路怎么转换为数学模型呢?
机智如你,很快想到了,用函数表示预测值和标签值的差别,然后求这个函数的最小值不就完了。没错,这就是机器学习的基本思路,而且这个函数还有个专用名词,叫损失函数,或者目标函数。机器学习的核心,就是找到一个使得损失函数最小的模型。
好像还有点问题,在数学上,给定一个函数的最小值,是很容易的,但这个最小值求出来,怎么确定那个最优的模型呢?其实,问题出在前面那个“给定”上。事实上,系统一开始并没有给定一个函数,而只是猜测一个函数,参数都是变量,然后通过不断调整参数,找到这个函数的最小值。这个过程,恰好可以利用梯度下降法。
也就是说,我们先利用经验,假设一个损失函数,并且随便找一个初始值做参数 ,然后剩下的事情交给算法,利用梯度下降的思路,不断寻找让函数值变小的参数,直到无论如何改变参数,函数值都不再继续变小了。我们就认为这个参数就是要找的模型,因为用这套参数,可以损失函数最小,或者说让上面说的预测值和标签值的差异最小,那不就是最优的模型么!
幸运的是,这个思路对计算机来说是最好实现的。试想一下,如果扔给计算机任意一个函数让它求最小值,它会无从下手。但告诉它一个优化算法,它只要按照这个算法不断递归,早晚能找到最优解,它会很爽!
总结
梯度下降法是AI领域比较常用的求最小损失的方法,当然还有其他方案,比如最小二乘法、极大似然估计等,是用在不同场景下的不同方法,但对于计算机最友好的方法,很显然是梯度下降法。
当然,现实世界中,问题往往不是这么简单,梯度下降法还有步长大小、局部最小等问题,但只要知道基本的原理,剩下的细节其实就容易理解了。
作者介绍
