无约束问题的最小化
无约束问题的最小化
最近在看"Machine Learning A Probability Perspective"的逻辑回归,因为算法比较多,一起看书的伙伴们就决定把"Convex Optimization"讲优化算法的内容看一下。
在阅读以下内容之前,要记住问题的出发点,即给定无约束的凸问题该用什么方法求得最优解(这里假设问题是求最小值)?各种方法之间有什么性质。
也许最先想到的方法就是对变量求梯度,让它等于
强凸及其性质
函数强凸是说在凸集
其中
得到
当固定
带入得到
因为
因此可以得知当
可以看到,当某一点的梯度较小时,作为其下界
将
带入可得
因为
即通过
一般而言
使用相同的方法,可以得到:
定义
根据泰勒展开
集合
而
对于
再利用
可见
当
可以看到此时的下子集
下降方法(Descent methods)求解框架
下降方法是一种迭代算法,给定上一部的
对于凸集合
Descent methods的一般流程如下:
- 给定初始点
- 重复下列过程
- 决定搜索方向
- 决定步长
(Line search) - 对
进行更新
- 检查是否收敛,如果收敛则停止迭代
有两个Line Search方法,一个是exact line search另外一个是不精确的backtracting line search。
-
exact line search 即是说,在给定搜索方向
后,选择使得 最小的步长 ,在上式求解较为简单时该方法可以应用。 -
backtracking line search 相对于exact line search来说应用更为普遍。其算法流程如下
- 选择
,以及搜索方向 (对于 为什么要小于0.5请看下一节) - 当
时,令
当
足够小的时候, ,因此上述的过程肯定是收敛的。上图是书中关于
和 的解释:在确定 后, 即为关于 的函数, 即为斜率, 越小,则直线越平缓。在确定 和 后,从图中可以看出在 点, 与 相交,因此可能的 取值为1或者 ,从而 。 - 选择
梯度下降方法
对于下降方法中的搜索方向
-
exact line search搜索的收敛速度
将
带入到 式子中,得到通过对
求最小值,得到通过
式可以得到, ,在上式的两边同时减去 得到通过上式可以看到其为线性收敛,当
越接近1时,收敛速度越快。而通过 的几何解释, 与 下子集的形状有关,如果其各方向上差异性较小则越接近1,这也是为什么在优化前先对数据进行归一化处理的原因。 -
backtracting line search
首先对上一节中
的取值进行说明。在 时,下式成立将
带入得到因此搜索步长
取值为1或 。采取跟exact line search一样的分析步骤,在上式两边同时减去 得到 -
例子
下面结合书上的一个例子应用exact line search来进行阐述,设一个二次的目标函数为
式中
,定义域为 ,目标函数 的Hessian矩阵为常量,其Hessian矩阵的特征根为 和 ,因此condition number为,选定初始点
,其负梯度方向为 ,通过计算可以得到下降幅度 ,得到 ,通过归纳可以得到 ,从而
Steepest descent method
不同于[gradient descent](# 梯度下降方法)中使用负梯度作为下降方向,Steepest descent中使用
当使用二范数时,Steepest descent的方向为负梯度方向,与gradient descent的方向一致。
-
Steepest descent for quadratic norm
quadratic norm定义为
,其中 ,通过解下述不等式得到
根据
的定义,可以看出其几何意义如下,图中阴影的椭圆表示除了上述的集合解释外,还可以通过坐标变换得到
。令
, ,通过这样的变换就将quadratic norm 变换成了二范数了。
。此时 , 。根据上述变换
,对 进行求Hessian矩阵,得到 ,当 时,变换后的函数有更好的condition number。也就是说,如果 如果与sublevel set形状相似的话,descent method在变换后的变量下会取得很好的效果。 -
Steepest descent for
norm在
norm下, ,可以得到 ,其中 为其绝对值最大的分量。这样,每次下降的方向只涉及一个分量,该算法有时被称为coordinate descent algorithm。可以根据下图对Steepest descent在
norm的情况下进行理解 -
Converge Analysis
由于任何范数都可以被二范数定界,故假设
,使得同样根据强凸,得到
在
时右式取得最小值,带入得到发现
时满足backtracking line search的条件。因此采用backtracking line search的时候,步长 ,因此由此可见收敛性。
Newton's method
-
Newton's step
定义
为newton's step,正定的Hessian矩阵意味着 ,因此 。对函数
的二阶泰勒展开求最小值,可以发现 时取得。可以理解为在
进行二次逼近时,逼近函数在 点取到最小值。根据[Steepest descent](# Steepest descent method),如果quadratic norm中的
,可以得到对函数
得到函数进行一阶泰勒展开根据极值条件,在最优点其导函数值为
,此时 。牛顿方法可以理解为对一阶近似的导函数求极值,得到极值点,并在该点再次进行上述过程。
Newton's step具有仿射不变性,对原变量
左乘非奇异阵 进行变换,令 ,在 中Newton's step为经过变换的函数
在 的Newton's step为 在 点的newton's step再左乘 。定义
为newton decrement。可以看到
为newton step在 的quadratic norm,再结合Steepest descent中的 , 与其 中的单位化部分相一致。 -
Newton's method
Newton's method 有damped和pure之分,其区别为步长的不同,pure newton method的步长
固定为 ,而damped newton method的步长$t为利用Line search确定,其算法流程如下:- 确定初始点
和收敛条件 - 计算
并与 进行比较,如果未满足收敛条件则仅需进行 - 计算
,并根据backtracking line search or exact line search 计算步长 - 对
进行更新,
Newton's method的收敛性分析比较繁琐,这里不再进行分析。后续会补上quasi-Newton methods。
- 确定初始点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异