声明:
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:线性支持向量机可解决上例有多个解的问题)。