1.线性回归
我们都知道,一般线性回归的假设函数为:
hθ=j=1∑nθjxj
即:
hθ(X)=θTX
其中:
θ=(θ1,θ2,...,θn)TX=(x1,x2,...,xn)T
2.MSE均方误差损失函数
设:
x(i)和
y(i)为一个数据对,共有
m个数据对,
hθ(x(i))为线性回归的预测值
使用均方误差损失函数:
Jtrain(θ)=2m1i=1∑m(hθ(x(i))−y(i))2注:此处的1/2是为了之后求导方便
3.梯度公式推导
我们的目的是不断的迭代,使得均方误差(MSE)最小,根据梯度下降法,
θ的更新策略为:
θj:=θj−α∂θj∂J(θ)(1≤j≤n)
我们现在假设之有一个数据
(X1T,y):
(即数据为:
(x1,x2,x3,...,xn,y))
∂θj∂J(θ)====∂θj∂(21(hθ(X)−y)2)(1≤j≤n)(hθ(X)−y)⋅∂θj∂(hθ(X)−y)(hθ(X)−y)⋅∂θj∂(i=1∑nθixi−y)(hθ(X)−y)xj
现在我们考虑m个数据 (只需要将
m个值求平均即可):
∂θj∂J(θ)=−m1i=1∑m(yi−hθ(Xi))xji
其中:
yi、xji和的上标i表示第几个数据,下标j表示哪一个维度,Xi表示第i个数据
4.梯度下降法更新策略
(1).批梯度下降法(MGD
)
在最小化损失函数的过程中,需要不断反复的更新权重
θ使得误差函数减小,更新过程如下:
θj′=θj+αm1i=1∑m(yi−hθ(Xi))xji
(2).随机梯度下降法(SGD
)
由于MGD每更新一个参数时,都要用到所有的样本数,所以训练速度会随着样本数量的增加而变得很慢。而SGD
每更新一个参数,仅会随机取一个样本:
θj′=θj+α(yi−hθ(Xi))xji
(3).小批量梯度下降(MBGD
)
MBGD
小批量梯度下降法,假设每次更新参数时用到的样本数为
k :
θj′=θj+αk1i∑i+k(yi−hθ(Xi))xji(i=1,1+k,1+2k,...)
5.三种算法比较结论
1.BGD
(批梯度下降)
每次更新会使用所有的训练数据来最小化损失函数。 如果只有一个极小值,那么BGD是考虑了所有训练集数据,朝着最小值迭代运动。缺点是如果样本值很大的话,更新速度会很慢。
2.SGD
(随机梯度下降)
在每次更新的时候,由于只考虑了一个样本点,大大加快了训练数据的速度,但是由于训练数据的噪声点较多,那么每一次利用噪声点进行更新,就不一定是朝着极小值方向更新,但是由于更新多次,所以整体方向上还是朝着极小值方向更新。
3.MBGD
(小批量梯度下降)
MBGD为了综合BGD的训练速度慢以及SGD的准确性综合而来。但是这里要注意,不同问题的batch是不一样的。
我们在下一篇博客中,用numpy
实现算法。
https://blog.csdn.net/HaoZiHuang/article/details/104817087