您的位置:首页 > 其它

感知机3 -- 梯度下降与随机梯度下降的对比

2016-02-16 10:34 302 查看
声明:

1,本篇为个人对《2012.李航.统计学习方法.pdf》的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。

2,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面。

3,如果有内容错误或不准确欢迎大家指正。

4,如果能帮到你,那真是太好了。

时间复杂度

1, 这两个均为线性回归问题,于是,线性方程如下:

hθ = θ0 + θ1x1 + θ2x2 + … + θnxn

为了方便,上式写成:

h(x) = θixi = θTx

即:求出θT就求出了h(x)

2, 在看完“随机梯度下降算法”和“感知机模型”的总结后我们知道:

为了评估h(x)函数(即:分离超平面)的好坏,我们会使用损失函数来 判断,而损失函数如下:(下面的n代表秩)



于是,我们需要求出min J(θ)来获取一个最好的函数h(x)

3, 对于梯度下降算法:

θj = θj – α(a/aθj)J(θ)

即:下一个更靠近分离超平面的函数 = 上个函数 – 学习速率() * 导数(梯度方向)

为了算出上式,我们先算(a/aθj)J(θ)

(a/aθj)J(θ) = (a/aθj)(hθ(x)- y)2

∵ 对于f(x) = x2,x = g(x) 的导数为 f`(x)g`(x)

∴ 上式继续等于:

= 2 * (1/2)(hθ(x)- y)(a/aθj)(hθ(x)- y)

= (hθ(x)- y)(a/aθj)(θixi - y)

= (hθ(x)- y)xj

所以:

θj =θj – α(hθ(x)- y)xj

于是当样本数量为m时:



可见,对于n维的向量,其标准梯度下降算法时间复杂度为 O(mn)

4,随机梯度下降算法

还是上面的推导过程,然后在利用之前的总结我们知道:

对于随机梯度下降算法,每次仅处理一个数据,算法如下所示:

Loop {

for i = 1 to m {

θj =θj – α(hθ(x(i))- y(i))xj(i)

}

}

即:每读取一次样本,就迭代对θT进行更新,然后判断其是否收敛,若未收敛,则继续读取样本进行处理,若样本读取完毕,则从头再次循环读取样本进行处理。

所以,其时间复杂度为O(n).

其他对比

1,由上面的时间复杂度可知:随机梯度下降算法趋近最小值的速度更快,不过,它有可能永远收敛不到最小值,即:在最小值周围震荡(当然在实践中大部分无此问题,效果还不错 ---- 将已知点代入感知机模型后,总会有一些点的值 > 0,一些 < 0 )

2,在标准梯度下降算法中,权值更新的每一步需对多个样例求和,需进行更多的计算,而由于其使用真正的梯度,所以其权值的更新进场使用比随机梯度下降算法更大的步长。

在随机梯度下降算法中,若标准误差曲面中有多个局部最小值,那它有可能会陷入这些局部最小值中。

总结

标准(批量)梯度下降算法:最小化所有训练样本的损失函数,使得最终求得的解为全局最优解。

即:求解的参数为使风险函数最小。

随机梯度下降算法:最小化每条样本的损失函数,虽然不是每次迭代的方向均向着全局最优方向,但大的整体方向是全局最优解的方向,最终结果往往在全局最优解附近(所以结果可能有多个 ---- Ps:线性支持向量机可解决上例有多个解的问题)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: