[机器学习]——梯度下降
梯度下降是一种非常通用的优化算法,能够为大范围问题找到最优解。梯度下降的中心思想就是迭代地调整参数从而使成本函数最小化。
基本思想:
- 确定步长:梯度下降的一个重要参数就是每一步的步长,这取决于超参数的学习率。学习率太低,算法需要经过大量迭代才能收敛;学习率太高,可能无法收敛到最优。
- 局部最优与全局最优
- 特征值缩放:应用梯度下降时,需要保证所有特征值的大小比例都差不多,否则收敛时间会很长。
以下皆以线性模型为例
批量梯度下降
- 线性回归的MSE成本函数:
M S E ( X , h θ ) = 1 m ∑ i = 1 m ( θ T ⋅ X ( i ) − y ( i ) ) 2 MSE(X,h_{\theta})=\frac{1}{m}\sum_{i=1}^{m}(\theta^T\cdot X^{(i)}-y^{(i)})^2 MSE(X,hθ)=m1i=1∑m(θT⋅X(i)−y(i))2 - 成本函数的偏导数:
∂ ∂ θ j = 2 m ∑ i = 1 m ( θ T ⋅ X ( i ) − y ( i ) ) 2 x j ( i ) \frac{\partial }{\partial \theta_j}=\frac{2}{m}\sum_{i=1}^{m}(\theta^T\cdot X^{(i)}-y^{(i)})^2x^{(i)}_{j} ∂θj∂=m2i=1∑m(θT⋅X(i)−y(i))2xj(i) - 成本函数的梯度向量:
∇ θ M S E ( θ ) = ( ∂ ∂ θ 0 M S E ( θ ) ∂ ∂ θ 1 M S E ( θ ) ⋮ ∂ ∂ θ n M S E ( θ ) ) = 2 m X T ⋅ ( X ⋅ θ − y ) \nabla_{\theta}MSE(\theta )=\begin{pmatrix} \frac{\partial }{\partial \theta_0}MSE(\theta) \\ \frac{\partial }{\partial \theta_1}MSE(\theta) \\ \vdots \\ \frac{\partial }{\partial \theta_n}MSE(\theta)\\ \end{pmatrix} =\frac{2}{m}X^T\cdot(X\cdot\theta-y) ∇θMSE(θ)=⎝⎜⎜⎜⎛∂θ0∂MSE(θ)∂θ1∂MSE(θ)⋮∂θn∂MSE(θ)⎠⎟⎟⎟⎞=m2XT⋅(X⋅θ−y) - 梯度下降步长
θ n e x t s t e p = θ − η ∇ θ M S E ( θ ) \theta^{next step}=\theta-\eta\nabla_{\theta}MSE(\theta ) θnextstep=θ−η∇θMSE(θ)
如何设置合适的迭代次数?
在开始设置一个非常大的迭代次数,但是当梯度向量的值变得很微小时中断算法——即当它的范数低于
ε
\varepsilon
ε 时,这时梯度下降几乎已经到达了最小值。
随机梯度下降
梯度下降在训练时需要用整个训练集计算每一步的梯度,所以当训练集很大时算法会很慢。而随机梯度下降每一步在训练集随机选择一个实例,基于该实例计算梯度。
随机梯度下降的特点: 由于算法的随机性,随机梯度下降比梯度下降要不规则的多。成本函数不再是缓缓降低至最小值,而是不断上上下下,但整体而言还是在下降。注意即使是它到达了最小值还是会持续反弹,永远不会停止,所以算法停下来的参数值虽然是足够好的但不是最优的。
当成本函数非常不规则时,随机梯度下降可以帮助跳出局部最小值。
随机性好处使得随机梯度下降可以逃离局部最优,但缺点是永远定位不了最小值。
解决办法:逐步降低学习率
开始步长比较大(有利于快速进展逃离局部最小),然后越来越小,使算法靠近全局最小值。该过程称为模拟退火
。
确定每个迭代学习率的函数叫做学习计划。如果学习率降太快,可能会陷入局部最小,甚至停留在走向最小值的半途中;如果学习率降得太慢,则需要太长时间到达最小值附近,若提早结束,可能只得到一个次优方案。
机器学习算法:SGDRegressor
小批量梯度下降
每一步梯度下降,既不是基于整个训练集(批量梯度下降)、也不是基于单个实例(随机梯度下降),而是基于一小部分随机实例集,即小批量。
小批量梯度下降的主要优势是可以从矩阵运算的硬件优化中获得显著的性能提升,特别是用到图形处理器时。
总结
算法 | m很大 | 是否支持核外 | n很大 | 超参数 | 是否需要缩放 | sklearn |
---|---|---|---|---|---|---|
批量梯度下降 | 慢 | 否 | 快 | 2 | 是 | n/a |
随机梯度下降 | 快 | 是 | 快 | ≥ 2 \ge 2 ≥2 | 是 | SGDRegressor |
小批量梯度下降 | 快 | 是 | 快 | ≥ 2 \ge 2 ≥2 | 是 | n/a |