文中所示公式以Andrew Ng CS229课程的讲义为主
定义:求解无约束最优化问题的一种常用方法,用负梯度方向为搜索方向的,梯度下降法越接近目标值,步长越小,前进越慢
算法实现:属于迭代算法,每一步都需要求解目标函数的梯度向量
1.参数方程
假设特征有X1,X2, , 则方程有:
一般而言,我们为了简化公式,可以假设 X0 = 1 , 此时方程可以写作:
(
此处n表示的是特征个数)
注:
θ 为学习算法的参数,学习算法即利用训练集合的选择或者学习得到合适的参数值。 (
θ ∈R ,
θ 包含(
θ1,
θ2, θ3...))
2.代价函数(cost fuction):
(1)定义:求解最优解的目的函数
(2)常用形式:平方误差代价函数(符合人的正常思维,即差值越小,误差越小,并且平方保证了符号方便为以后做处理),保证预测函数和实际值的平方差尽可能的小
(3)方程:
(这里的1/2是为了以后求导方便所以加上的)
注:我们为了使误差尽可能的小,所以需要找到最符合的θ。
3.使用梯度下降法求解θ
(1)
算法思想:
(1)初始化θ(可以让θ =0 ---> (θ 0=0 ,θ 1=0 ,θ 2=0 .....);
(2)改变θ的值,使得J(θ)不断的减小
(3)找到θ使J(θ)极小值,或者无限逼近不再改变
(2)图示:(关于J(θ)和θ1,θ2的关系)
(一)我们的J(θ)现在初始化在图中红色的位置
(二)调整θ的值,使J(θ)往更低的方向走,算法的结束便是无法再下降(偏导为0:没有方向)为止
当然,在求解过程中,因为每次都选择的是局部最优,最终可能并非全局最优
(3)公式推导:
我们这里定义:θj指的是第j个参数的更新;α指的是步长;“:=”的意思是赋值,将右边的式计算后更新给左边
数学意义:(a)偏导数反应的是函数在坐标轴的变化率,线性上又叫做斜率
(b)梯度下降就应该沿着梯度变化最快的负方向,故求偏导后确定大小后相减
化简:
(
注:再次注意这里更新的j是第j个参数,而这个公式针对的是样例只有一组的情况)
代入上式可得:
(此处是将hθ和y换了位置,所以变成了加号)
对于M组测试数据有:(
由公式可知批量梯度下降法求得的是全局最优解)
(我们的目的是求出所有的θ分量,然后将这些θ分量代入J(θ)中,在有限的step中或者收敛中得到极小cost function)
(4)如上式所计算,如果m非常大的情况下,复杂度就非常高。所以可以考虑随机梯度下降法,即将求解每次的θ每次只针对一个样例
(5)批量梯度下降法和随机梯度下降法的优缺点:
批量梯度下降:
优点:获取全局最优解,但是有时候也会陷入局部最优的情况;(凸函数的情况找到全局最优)
优点:获取全局最优解,但是有时候也会陷入局部最优的情况;(凸函数的情况找到全局最优)
使用条件:在样本数m不是很多的时候
缺点:当样本数目很多时,训练过程会很慢,每次迭代需要耗费大量的时间。
随机梯度下降:
优点:训练速度快,每次迭代计算量不大
缺点:当样本数目很多时,训练过程会很慢,每次迭代需要耗费大量的时间。
随机梯度下降:
优点:训练速度快,每次迭代计算量不大
使用条件:再样本很大的时候
缺点:准确度下降,每次获取局部最优解, 最后但是有时候也能刚好下降到最优。
缺点:准确度下降,每次获取局部最优解, 最后但是有时候也能刚好下降到最优。
通病:遇到坑容易走不出去,所以需要设置有限的迭代次数
==============================================分割线==============================================
各种梯度下降变种: http://sebastianruder.com/optimizing-gradient-descent/