导言
在用机器学习算法解决问题时,求解模型参数是很经常的事情,也就是在优化损失函数的时候,需要找到最合适的模型参数。那么如何找到最优的参数呢,这个时候就需要我们本文要讲的 梯度下降法 了。
学习前提
微积分
求导
梯度下降法原理简单易懂,但是需要有微积分,以及求导的数学理论基础,其实也就是会微积分的求导。下文也会提到,忘记也无妨。
梯度下降法是什么
在机器学习算法中,很多模型本质就是通过最小化损失函数来间接求解模型参数。我们在最小化损失函数时,可以通过梯度下降法来一步步迭代求解,得到最小参数值,来得到最小化损失函数,从而得到模型参数。
通过场景来理解梯度下降法
相信读者大大们一定很好奇为什么梯度下降法可以求解最优参数。接下来我们先通过一个场景来了解它的原理。
ps:图片来源于网络
假如我们现在在山顶,想到山脚下,但是不知道具体怎么走。那我们只能一步一步走,走一步算一步。我们现在要怎么走到山底,还是有科学依据的。就需要我们每次都选能最快到达山底的方向走,这个也就相当于梯度下降法中梯度的定义, 也就是最陡峭的地方,然后继续走,继续选择最陡峭的方向走(顺便提一下:最陡峭的地方,是不是跟我们函数的斜率很像?),直到走到山脚。
进一步思考
那怎么确定是否是山脚呢,也就是当你的下一步跟上一步相差无几,基本没有变化的时候, 我们就可以说达到局部最低点了。
梯度下降法的数学解释
经过上面的场景解释,相信对梯度下降法的基本思想有一定理解了。那么通过数学是怎么表现的呢,让我们进入本文的重点。
梯度下降法的重点公式,如下图
其中 θ0 就是我们现在的所处的位置,J 就是关于 θ 的函数,∇J(θ)就是该点的斜率,就是我们往下走选择的方向,α 就是我们移动的步长,在机器学习中我们称为学习率。θ1 就是我们在 θ0 往 ∇J(θ) 的方向走了 α*∇J(θ) 后到达的位置。
下面我们对几个概念重点介绍
初始值:上式中的 θ0 就是我们梯度下降法最开始随机选择的一个初始值。
学习率:上式中的 α,也就是我们确定下降的方向后移动的距离。
梯度:
单变量函数中梯度j就是函数的微积分,也就是函数在某点的斜率。
多变量函数中梯度就是向量。
迭代求解梯度
重点来了,解释之前,我们先来演示下怎么迭代求梯度
首先看看一个自变量的梯度下降情况
假设函数:
随机选择一个值作为初始值,假设为:
学习率为:
梯度:
迭代过程
根据公式,我们开始迭代计算梯度:
经过5次迭代运算,基本到了第五步,就到函数的最低点,也就是我们上面下山场景的山底了。
再来看多变量的梯度下降情况
假设函数:
随机选择一个值作为初始值,假设为:
学习率为:
梯度:
根据公式,我们开始迭代计算梯度:
经过50次迭代运算,我们发现基本到函数最低点了。
总结
可以看出梯度下降法的原理:求解每个位置也就是每个点的斜率,并乘以步长。梯度就是斜率,学习率就是梯度下降的步长,构成了移动的要素。进而求解到最小值。
通过下山场景以及迭代演算相信读者大大们对梯度下降法的思想以及过程已经基本了解了。那么本篇的目的就达到了。篇幅所致,下篇我们将继续介绍梯度下降法的分类,优缺点,作用,应用实现,可以更全面了解梯度下降法。
推荐阅读: