**引言:**上一节的线性回归中,当得到了一个目标函数后,需要求解 θ \theta θ,但是 θ \theta θ并不一定可解,这时就引出了梯度下降的方法。
机器学习的套路是交给机器一堆数据,然后告诉它什么样的学习方式是正确的(目标函数),然后让它朝着这个方向去做。
目标函数定义为此公式,其中m代表样本个数,前面的系数不影响结果。
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1} ^ {m}(h_\theta (x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
**目标:**梯度下降的目的是寻找山谷的最低点,也就是目标函数的终点(什么样的参数能使得目标函数达到极值点)。
下山共分为三步,不断迭代更新参数,最终达到目标函数的极值点。
- 找到当前最合适的方向(偏导)
- 沿着方向走一小步
- 按照方向与步伐更新参数
梯度下降根据选取样本数量的不同,分为批量梯度下降、随机梯度下降与小批量梯度下降。
1、批量梯度下降
Batch Gradient Descent(BGD),是梯度下降的最原始形式,在更新每一个参数使都是用所有的样本进行计算,也就是说上面公式中的m即为所有样本的个数。
∂
J
(
θ
)
∂
θ
j
=
−
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
x
j
i
\frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{m}\sum_{i=1}^{m}(y^i-h_{\theta}(x^i))x_{j}^i
∂θj∂J(θ)=−m1i=1∑m(yi−hθ(xi))xji
θ j ′ = θ j + 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x i j {\theta_j}'=\theta_j+\frac{1}{m}\sum_{i=1}^{m}(y^i-h_{\theta}(x^i))x_i^j θj′=θj+m1i=1∑m(yi−hθ(xi))xij
**优点:**容易得到最优解
**缺点:**当样本数目很多时,训练过程会很慢
2、随机梯度下降
Stochastic Gradient Descent(SGD),在更新每一个参数时都是用一个样本进行更新,也就是说m等于1。
θ
j
′
=
θ
j
+
(
y
i
−
h
θ
(
x
i
)
)
x
i
j
{\theta_j}'=\theta_j+(y^i-h_{\theta}(x^i))x_i^j
θj′=θj+(yi−hθ(xi))xij
**优点:**迭代速度快
**缺点:**噪音多,不一定每次都朝着收敛的方向
3、小批量梯度下降
Mini-batch Gradient Descent(MBGD),更新每一参数时都是用一部分样本来进行更新,克服上面两种方法的缺点,同时又兼顾两种方法的缺点。
θ j ′ = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x ( k ) ) − y ( k ) ) x i ( k ) {\theta_j}'=\theta_j-\alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_{\theta}(x^{(k)})-y^{(k)})x_i^{(k)} θj′=θj−α101k=i∑i+9(hθ(x(k))−y(k))xi(k)
若样本量较小,采用批量梯度下降算法;若样本量较大,或者在线算法,使用随机梯度下降算法;实际的一般情况,采用小批量梯度下降算法。