将梯度下降算法和代价函数结合,将其应用于具体的拟合直线的线性回归算法里。
梯度下降算法(Gradient descent algorithm) | 线性回归模型(Linear Regression Model) |
---|---|
repeat until convergence{ θ j : = θ j − α ∂ ∂ θ j J ( θ ) {\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left(\theta \right) θj:=θj−α∂θj∂J(θ) (for j=1 and j=0) } |
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta \left( x \right)=\theta_{0}+\theta_{1}x
hθ(x)=θ0+θ1x J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2 |
对我们之前的线性回归问题运用梯度下降算法,关键在于求出代价函数的导数:
∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \frac{\partial }{\partial {{\theta }{j}}}J({{\theta_0}},{{\theta_1}})=\frac{\partial }{\partial {{\theta }{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}} ∂θj∂J(θ0,θ1)=∂θj∂2m1i=1∑m(hθ(x(i))−y(i))2
j = 0 j=0 j=0 时: ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{\partial }{\partial {{\theta_0}}}J({{\theta_0}},{{\theta_1}})=\frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}} ∂θ0∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))
j = 1 j=1 j=1 时: ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) ) \frac{\partial }{\partial {{\theta_1}}}J({{\theta_0}},{{\theta_1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)} ∂θ1∂J(θ0,θ1)=m1i=1∑m((hθ(x(i))−y(i))⋅x(i))
则应用于线性回归的的梯度下降算法改写成:
repeat until convergence{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
{\theta_{0}}:={\theta_{0}}-\alpha \frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}}
θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))
θ
1
:
=
θ
1
−
α
1
m
∑
i
=
1
m
(
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
(
i
)
)
{\theta_{1}}:={\theta_{1}}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}
θ1:=θ1−αm1i=1∑m((hθ(x(i))−y(i))⋅x(i))
}
通俗地讲,对于线性回归模型,有一个线性函数,并且有一个代价函数,这个代价函数用来判断这个线性函数的预测值与实际值之间的误差,误差越小,则这个线性函数就越好。那么怎么使这个代价函数最小呢?即选取怎样的参数令这个代价函数最小。这时候就通过梯度下降算法来找出这个参数!梯度下降算法就是用来求解出使得代价函数取得最小值的参数值的。
批量梯度下降算法(Batch梯度下降法)
我们刚刚使用的算法,有时也称为批量梯度下降。
”批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有
m
m
m个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。