梯度下降的概念和介绍
前言
本文主要介绍机器学习中的优化算法中梯度下降的一些基本概念,主要从概念和基本运算方法上进行简单的记录,便于后续自身的查找复习
一、无约束最优化问题
1.无约束最优化问题
无约束最优化问题(unconstrained optimization problem)指的是从一个问题的所有可能的备选方案中选择出某一个指标来说是最优的解决方案,从数学上说,最优化是研究在一个给定集合S上 J ( θ ) J(\theta) J(θ)的极小化或极大化问题:广义上:最优化包括数学规划、图和网络、组合最优化、库存论、决策论、排队论、最优控制等。狭义上,最优化指的就是数学规划。
二、梯度下降
梯度下降(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体的做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法(都是无约束最优化问题)求解出最优解,所谓的通用就是很多的机器学习算法用的都是梯度下降,甚至深度学习也是用梯度下降来求解最优解,所有的优化算法的目的都是期望以最快的速度将模型参数 θ \theta θ求解出来,梯度下降就是一种经典常用的优化算法。
1.与正规方程的比较
正规方程
θ
=
(
X
T
X
)
−
1
X
T
Y
\theta = (X^T X)^{-1}X^T Y
θ=(XTX)−1XTY求解的限制是特征维度不能过多,也就是说对于X的维度必须保持在一定的限度内。这个原因是矩阵的运算时间复杂度往往在
O
(
n
3
)
O({n^3})
O(n3)换句话说,如果特征数量翻倍,计算时间大值为原来的8倍,这种时间复杂度在实际的最优化求解中效率很低,所以正规方程并不是机器学习或者深度学习常用的计算手段。
正规方程则是令导数等于0,反过来求解最低点是多少
θ
\theta
θ是多少,而梯度下降则是一点点去逼近最优解,随机设定一个值,向某一个方向前进,把Loss函数看成是山谷,如果走过了,就再回饭,完成一个迭代的过程直至求的一个最优解。
2.梯度下降公式
梯度下降公式就是一个式子指导计算机在迭代的过程中如何去调整
θ
\theta
θ,可以通过泰勒公式的一阶展开来进行推导和证明:
θ
n
+
1
=
θ
n
−
α
∗
g
r
a
d
i
e
n
t
\theta ^{n + 1} = \theta^ n - \alpha * gradient
θn+1=θn−α∗gradient
其中
α
\alpha
α表示学习率,gradient代表导数
学习率:在实际的操作中,学习率不能设置过大,否则容易造成不容易收敛。
θ
n
+
1
=
θ
n
−
α
∗
∂
J
(
θ
)
∂
(
θ
)
\theta ^ {n + 1} = \theta ^ n - \alpha * \frac{\partial J(\theta)}{\partial(\theta)}
θn+1=θn−α∗∂(θ)∂J(θ)
gradient也可以用
∂
J
(
θ
)
∂
(
θ
)
\frac {\partial J(\theta)}{\partial (\theta)}
∂(θ)∂J(θ)
3.全局最优化
如图所示:
梯度下降有两个主要的问题:
- 如果随机出实话,算法从左侧起步,则会收敛到一个局部的最小值,而不是全局的最小值
- 如果随机初始化,算法从右侧起步,则需要经过很长时间才会越过函数🤚带(梯度很小,就是斜率很小)如果停下太早,则永远达不到全局最小值
4.梯度下降的过程
- 采用随机的数,生成一组随机数字, θ \theta θ,可以采用正态分布数据进行
- 求梯度g,梯度就是代表曲线某点上的斜率,沿着切线往下就是相当于沿着坡度最陡峭的方向下降
- 如果梯度
g
<
0
则
θ
g < 0 则\theta
g<0则θ变大,如果
g
>
0
则
θ
g >0 则 \theta
g>0则θ变小,公式如下:
θ n + 1 = θ n − α ∗ ∂ J ( θ ) ∂ ( θ ) \theta ^ {n + 1} = \theta ^ n - \alpha * \frac{\partial J(\theta)}{\partial(\theta)} θn+1=θn−α∗∂(θ)∂J(θ) - 判断是都收敛(convergence),如果收敛则跳出迭代,如果没有则回到求梯度再次执行计算
其中收敛的判断标准:随着迭代进行损失函数Loss,变化非常小,甚至不再改变,即可认为达到了收敛。