1.1、无约束最优化
无约束最优化问题(unconstrained optimizationproblem)指的是从一个问题的所有可能的备选方案中,选择出依某种指标来说是最优的解决方案。从数学上说,最优化是研究在一个给定的集合S上泛函$J(\theta)$的极小化或极大化问题:广义上,最优化包括数学规划、图和网络、组合最优化、库存论、决策论、排队论、最优控制等。狭义上,最优化仅指数学规划。
1.2、梯度下降
梯度下降法(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法(都是无约束最优化问题)求解出最优解, 所谓的通用就是很多机器学习算法都是用梯度下降,甚至深度学习也是用它来求解最优解。所有优化算法的目的都是期望以最快的速度把模型参数θ求解出来,梯度下降法就是一种经典常用的优化算法。
之前利用正规方程求解的 θ 是最优解的原因是 MSE 这个损失函数是凸函数。但是,机器学习的损失函数并非都是凸函数,设置导数为 0 会得到很多个极值,不能确定唯一解。
使用正规方程 $\theta = (X^TX)^{-1}X^Ty$ 求解的另一个限制是特征维度($X_1、X_2……、X_n$)不能太多,矩阵逆运算的时间复杂度通常为 $O(n^3)$ 。换句话说,就是如果特征数量翻倍,你的计算时间大致为原来的 $2^3$ 倍,也就是之前时间的8倍。举个例子,2 个特征 1 秒,4 个特征就是 8 秒,8 个特征就是 64 秒,16 个特征就是 512 秒,当特征更多的时候呢?运行时间会非常漫长~
所以正规方程求出最优解并不是机器学习甚至深度学习常用的手段。
之前我们令导数为 0,反过来求解最低点 θ 是多少,而梯度下降法是一点点去逼近最优解!
其实这就跟生活中的情形很像,比如你问一个朋友的工资是多少,他说你猜?那就很难了,他说你猜完我告诉你是猜高了还是猜低了,这样你就可以奔着对的方向一直猜下去,最后总会猜对!梯度下降法就是这样的,多次尝试。并且,在试的过程中还得想办法知道是不是在猜对的路上,说白了就是得到正确的反馈再调整然后继续猜才有意义~
这个就好比道士下山,我们把 Loss (或者称为Cost,即损失)曲线看成是山谷,如果走过了,就再往回返,所以是一个迭代的过程。