无约束优化问题在数学和工程中很常见。它寻找函数的最小值或最大值。函数有多个变量。变量没有限制。许多实际问题可以转化为无约束优化问题。比如机器学习中的参数训练。经济学中的效用最大化。工程设计中的最优形状。研究无约束优化问题的解法很有意义。
无约束优化问题的数学形式很简单。设函数f(x)。x是n维向量。目标是找到x。使得f(x)最小。有时也求最大值。但求最大值可以转化为求最小值。只需要考虑-f(x)即可。所以主要讨论最小化问题。
解决无约束优化问题需要方法。方法分为两类。一类需要导数信息。一类不需要导数信息。导数包括梯度和Hessian矩阵。梯度是函数的一阶导数。Hessian矩阵是函数的二阶导数。导数信息能提供函数的变化趋势。利用导数信息的方法通常收敛更快。但导数有时难以计算。或者根本不存在。这时需要用无导数方法。
最经典的方法是梯度下降法。梯度下降法的思想很直观。函数沿着梯度方向下降最快。所以每一步都沿着负梯度方向走。步长需要选择。步长太小收敛慢。步长太大可能不收敛。甚至发散。梯度下降法实现简单。适用于大规模问题。但收敛速度可能是线性的。有时比较慢。特别是在病态条件下。
牛顿法利用了二阶导数。牛顿法不仅考虑梯度。还考虑曲率信息。曲率由Hessian矩阵描述。牛顿法迭代公式有Hessian矩阵的逆。牛顿法收敛速度很快。通常是二次收敛。但牛顿法有问题。Hessian矩阵可能不正定。导致迭代失败。计算Hessian矩阵和求逆计算量大。对于高维问题不实用。
拟牛顿法改进了牛顿法。拟牛顿法不用计算Hessian矩阵。它用近似矩阵代替Hessian矩阵。近似矩阵逐步更新。满足一定的条件。比如拟牛顿条件。常见的拟牛顿法有DFP方法。BFGS方法。BFGS方法尤其受欢迎。它数值稳定性好。拟牛顿法收敛速度超线性。计算量比牛顿法小。很多软件库使用拟牛顿法。
共轭梯度法是另一类重要方法。共轭梯度法最初解线性方程组。后来用于非线性优化。它不存储矩阵信息。只保存向量。适合大规模问题。共轭梯度法每一步搜索方向是共轭的。这能保证有限步收敛。对于二次函数有效。对于非二次函数需要重启策略。共轭梯度法介于梯度下降法和牛顿法之间。
无导数方法也很重要。函数可能不可导。或者导数很难算。无导数方法只依赖函数值。单纯形法是一种无导数方法。它构造单纯形。通过反射、扩张、收缩等操作寻找更优点。单纯形法容易理解。但收敛速度慢。适用于低维问题。
直接搜索法包括坐标轮换法。坐标轮换法依次沿着坐标轴搜索。它简单直观。但效率不高。对于高维问题不适用。Powell方法是一种改进。它生成共轭方向。提高搜索效率。
现代优化方法包括随机算法。模拟退火算法模仿物理过程。它接受差解以跳出局部最优。遗传算法模仿生物进化。它通过选择、交叉、变异操作种群。粒子群优化模仿鸟群行为。粒子根据个体和群体经验移动。这些方法适合全局优化。传统方法容易陷入局部最优。随机算法能探索更大空间。但计算代价通常较高。
信赖域方法是另一思路。它在当前点附近构造模型。模型通常是二次函数。信赖域限制步长范围。在区域内模型可信。每一步求解子问题。得到试探步。根据实际下降和预测下降的比值调整信赖域半径。信赖域方法稳定性好。收敛性理论完善。
线搜索是许多方法的一部分。线搜索确定步长。精确线搜索找到沿方向的最优点。但计算量大。通常用非精确线搜索。满足Wolfe条件或Armijo条件即可。这样平衡计算成本和收敛速度。
实际应用需要考虑许多因素。问题规模很重要。小规模问题可以用牛顿法。大规模问题用梯度法或共轭梯度法。函数性质也很关键。函数是否光滑。是否凸。凸函数有全局最优。非凸函数有很多局部最优。需要全局优化方法。
导数可用性决定方法选择。有导数时用梯度类方法。无导数时用直接搜索或随机算法。计算资源也是限制。内存有限时避免存储大矩阵。计算时间有限时选择简单方法。
数值稳定性必须注意。迭代中的舍入误差可能累积。条件数大的问题很难解。需要预处理技术。预处理改善问题条件。加速收敛。
软件实现方便用户。MATLAB有优化工具箱。Python有SciPy库。这些库提供了多种算法。用户无需自己编写代码。只需定义目标函数和约束。但理解算法原理有助于选择合适方法。
无约束优化是约束优化的基础。许多约束优化问题可以转化为无约束问题。例如惩罚函数法。障碍函数法。拉格朗日乘子法。所以无约束优化方法很重要。
未来研究仍在继续。大规模机器学习推动优化发展。随机梯度下降广泛应用。深度学习需要非凸优化。分布式优化处理海量数据。并行算法利用多核计算机。GPU加速计算。这些方向都很活跃。
理论分析提供保证。收敛性证明确保算法有效。收敛速度衡量算法效率。复杂度分析估计计算代价。这些理论指导算法设计。
实际案例说明方法应用。线性回归用最小二乘法。逻辑回归用梯度下降。神经网络用反向传播。支持向量机用序列最小优化。这些案例都是无约束优化问题。
算法比较需要标准。测试问题集评估性能。比如CUTEr测试集。数值结果表格展示。迭代次数。函数调用次数。CPU时间。这些指标比较算法优劣。
参数调优影响效果。步长参数。容忍度。最大迭代次数。这些参数需要调整。不同问题需要不同设置。自适应参数调整是研究方向。
无约束优化问题解法丰富多样。选择合适的方法解决实际问题。这是研究的目的。