梯度下降
百度百科:梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
梯度下降 类似于寻找下山的路,不断往下走直到来到山底。
选取不同的点得到的路径不一致,不过都能得到局部最优解。
梯度下降算法:
theta0和theta1需要同时更新。
alpha(a)表示学习速率,通俗说就是下山的步子,起止越大表示走的得越快,但并并不是越大越好。下面会举个栗子。
梯度下降算法 为了方便令theta0=0,如果选的点在最优解的右边,则求解的
为正数,
越来越小,最终会到达最小点得到最优解,反之在左边,
为负数,
越来越大,到达最小点。刚才提到,如果alpha(a)选的太大。
可能会偏离最小点,进而越来越偏离最小点。
如果已经处在最小点呢?
梯度下降算法如你所愿,并不会做出错误地选择。
此时的斜率
等于0,那么
0 ,仍是最小点。
在找到一个点后,一般情况下,斜率会不断调整,离最小点远的话其值就会大,走大步,离最小点越近其值也就越小。
梯度下降算法用于线性回归
上面的计算涉及到高等数学和线性代数方面的一些知识。
求偏导可验证上面的结果是否一致,下面以 j=0 为例。
通过公式的计算,将假设函数和代价函数组合起来,便可以编写梯度下降算法。
线性回归的代价函数总是呈现一个弓状函数,术语叫做凸函数(convex function),无局部最优解,只有全局最优解这又是一个很重要的领域。
刚才使用的梯度下降算法又可以叫做batch梯度下降,即每一步都是用整个训练样本。另外在高等代数中,可以正规方程组算法,而不必像梯度下降那样一步一步求解。相比来说,梯度下降适用于更大的数据集。
最后通过梯度下降求得代价函数所对应的假设函数最优解,拟合度最好。