当得到一个目标函数时,通常是不能直接求解的,线性回归能求出结果在机器学习中是一个特例。
机器学习常规套路:交给机器一堆数据,然后告诉它使用什么样的学习方式(目标函数),然后它朝着这个方向去学习。
算法优化:一步步完成迭代,每次优化一点点,积累起来就能获得大成功。
(2)梯度概念在一元函数中叫做求导,在多元函数中就叫做求梯度。梯度下降是一个最优化算法,通俗的来讲也就是沿着梯度下降的方向来求出一个函数的极小值。比如一元函数中,加速度减少的方向,总会找到一个点使速度达到最小。
通常情况下,数据不可能完全符合我们的要求,所以很难用矩阵去求解,所以机器学习就应该用学习的方法,因此我们采用梯度下降,不断迭代,沿着梯度下降的方向来移动,求出极小值。
梯度下降法包括批量梯度下降法和随机梯度下降法(SGD)以及二者的结合mini批量下降法(通常与SGD认为是同一种,常用于深度学习中)。
(3)梯度下降法实验对于梯度下降,我们可以形象地理解为一个人下山的过程。假设现在有一个人在山上,现在他想要走下山,但是他不知道山底在哪个方向,怎么办呢?显然我们可以想到的是,一定要沿着山高度下降的地方走,不然就不是下山而是上山了。山高度下降的方向有很多,选哪个方向呢?这个人比较有冒险精神,他选择最陡峭的方向,即山高度下降最快的方向。现在确定了方向,就要开始下山了。
又有一个问题来了,在下山的过程中,最开始选定的方向并不总是高度下降最快的地方。这个人比较聪明,他每次都选定一段距离,每走一段距离之后,就重新确定当前所在位置的高度下降最快的地方。这样,这个人每次下山的方向都可以近似看作是每个距离段内高度下降最快的地方。
现在我们将这个思想引入线性回归,在线性回归中,我们要找到参数矩阵 θ 使得损失函数 J(θ) 最小。如果把损失函数 J(θ) 看作是这座山,山底不就是损失函数最小的地方吗,那我们求解参数矩阵 θ 的过程,就是人走到山底的过程。
如图所示,这是一元线性回归(即假设函数 hθ(x)=θ0 θ1x )中的损失函数图像,一开始我们选定一个起始点(通常是 (θ0=0,θ1=0)),然后沿着这个起始点开始,沿着这一点处损失函数下降最快的方向(即该点的梯度负方向)走一小步,走完一步之后,到达第二个点,然后我们又沿着第二个点的梯度负方向走一小步,到达第三个点,以此类推,直到我们到底局部最低点。为什么是局部最低点呢?因为我们到达的这个点的梯度为 0 向量(通常是和 0 向量相差在某一个可接受的范围内),这说明这个点是损失函数的极小值点,并不一定是最小值点。
从梯度下降法的思想,我们可以看到,最后得到的局部最低点与我们选定的起始点有关。通常情况下,如果起始点不同,最后得到的局部最低点也会不一样。
(4)参数更新每次更新参数的操作:
其中α为学习率(步长),对结果会产生巨大的影响,调节学习率这个超参数是建模中的重要内容。
选择方法:从小的开始,不行再小。
批处理数量:32、64、128比较常用,很多时候还要考虑内存和效率。