目标函数:
对于多元线性回归来说,拟合函数为:
由于目标函数是由m个样本累加得到的,因此可以求一个平均得到损失函数:
1)对损失函数求偏导数,批量梯度下降:
容易得到最优解,但是每次考虑所有样本,执行速度很慢。
2)每次只用一个样本,随机梯度下降:
去除累加操作,每次抽样一个样本来计算,速度快,结果不准。
3)每次更新选择一部分数据,小批量梯度下降法:
(1)为什么要使用梯度下降
当得到一个目标函数时,通常是不能直接求解的,线性回归能求出结果在机器学习中是一个特例。
机器学习常规套路:交给机器一堆数据,然后告诉它使用什么样的学习方式(目标函数),然后它朝着这个方向去学习。
算法优化:一步步完成迭代,每次优化一点点,积累起来就能获得大成功。
(2)梯度概念在一元函数中叫做求导,在多元函数中就叫做求梯度。梯度下降是一个最优化算法,通俗的来讲也就是沿着梯度下降的方向来求出一个函数的极小值。比如一元函数中,加速度减少的方向,总会找到一个点使速度达到最小。
通常情况下,数据不可能完全符合我们的要求,所以很难用矩阵去求解,所以机器学习就应该用学习的方法,因此我们采用梯度下降,不断迭代,沿着梯度下降的方向来移动,求出极小值。
梯度下降法包括批量梯度下降法和随机梯度下降法(SGD)以及二者的结合mini批量下降法(通常与SGD认为是同一种,常用于深度学习中)。
(3)梯度下降法实验对于梯度下降,我们可以形象地理解为一个人下山的过程。假设现在有一个人在山上,现在他想要走下山,但是他不知道山底在哪个方向,怎么办呢?显然我们可以想到的是,一定要沿着山高度下降的地方走,不然就不是下山而是上山了。山高度下降的方向有很多,选哪个方向呢?这个人比较有冒险精神,他选择最陡峭的方向,即山高度下降最快的方向。现在确定了方向,就要开始下山了。
又有一个问题来了,在下山的过程中,最开始选定的方向并不总是高度下降最快的地方。这个人比较聪明,他每次都选定一段距离,每走一段距离之后,就重新确定当前所在位置的高度下降最快的地方。这样,这个人每次下山的方向都可以近似看作是每个距离段内高度下降最快的地方。
现在我们将这个思想引入线性回归,在线性回归中,我们要找到参数矩阵
使得损失函数 最小。如果把损失函数 看作是这座山,山底不就是损失函数最小的地方吗,那我们求解参数矩阵 的过程,就是人走到山底的过程。