从最小二乘到IRLS:一文读懂优化算法在机器学习中的演进与应用
从最小二乘到IRLS:优化算法在机器学习中的演进图谱
当我们在机器学习模型中调整参数时,本质上是在寻找一个最优解——这个解能让预测误差最小化。就像航海家需要精确的罗盘,数据科学家也需要可靠的优化算法。从经典的最小二乘法到迭代重加权最小二乘(IRLS),优化算法的演进史就是一部机器学习的发展简史。
1. 最小二乘:优化算法的基石
1805年,法国数学家勒让德首次提出最小二乘法时,可能没想到它会成为现代机器学习的基石。这个方法的核心思想简单而优美:找到一组参数,使得预测值与真实值之间的平方误差总和最小。
对于线性系统 Ax = b,最小二乘解可以通过正规方程求得:
import numpy as np
# 最小二乘解的矩阵计算
def least_squares(A, b):
return np.linalg.inv(A.T @ A) @ A.T @ b
最小二乘法有三个关键特性:
- 解析解存在性:当A列满秩时,存在闭式解
- 高斯-马尔可夫定理:在满足一定条件时,是最优线性无偏估计
- 对异常值敏感:平方误差会放大较大偏差的影响
在实际应用中,我们常遇到三种情况:
| 矩阵A形态 | 解的性质 | 典型应用场景 |
|---|---|---|
| M = N | 唯一解 | 完美拟合系统 |
| M > N | 最优近似 | 大多数回归问题 |
| M < N | 无穷多解 | 欠定系统,需正则化 |
提示:当特征高度相关时,AᵀA可能接近奇异矩阵,此时应考虑岭回归或SVD分解等数值稳定方法。
2. 从L2到Lp:范数选择的艺术
最小二乘法使用的L2范数并非放之四海而皆准。不同范数会导向完全不同的优化结果:
- L2范数(p=2):连续可导,对大误差惩罚更重
- L1范数(p=1):促进稀疏性,对异常值更鲁棒
- L0.5范数(0<p<1):更强的稀疏诱导能力,但非凸优化
# 不同范数下的误差曲线对比
import matplotlib.pyplot as plt
x = np.linspace(-2, 2, 100)
for p in [0.5, 1, 2]:
plt.plot(x, np.abs(x)**p, label=f'L{p} norm')
plt.legend()
plt.show()
在图像去模糊等应用中,L1范数往往优于L2,因为它能更好地保持边缘锐度。下表展示了不同范数在典型任务中的表现:
| 范数类型 | 稀疏性 | 计算复杂度 | 适用场景 |
|---|---|---|---|
| L2 | 弱 | 低 | 一般回归 |
| L1 | 强 | 中 | 特征选择 |
| Lp(0<p<1) | 极强 | 高 | 压缩感知 |
3. IRLS算法:动态加权的智慧
迭代重加权最小二乘(IRLS)的核心思想很巧妙——将一般Lp范数优化转化为一系列加权L2问题。其算法流程可分为四步:
- 初始化:用普通最小二乘获得初始解x₀
- 计算残差:e = Ax - b
- 更新权重:w = |e|^(p-2)
- 求解加权最小二乘问题
def IRLS(A, b, p, max_iter=10):
x = np.linalg.pinv(A) @ b # 初始L2解
for _ in range(max_iter):
e = A @ x - b
w = np.abs(e) ** ((p-2)/2)
W = np.diag(w / np.sum(w)) # 归一化权重矩阵
WA = W @ A
x = np.linalg.inv(WA.T @ WA) @ WA.T @ W @ b
return x
IRLS的优势在于:
- 灵活性:通过调整p值适应不同需求
- 可解释性:每次迭代都可视为一个加权最小二乘问题
- 收敛性:对于凸问题(p≥1)通常能收敛到全局最优
注意:当p<1时问题变为非凸,算法可能收敛到局部最优,需要谨慎选择初始值。
4. 机器学习中的IRLS实战
在逻辑回归中,IRLS表现为著名的Fisher Scoring算法。考虑二分类问题,对数似然函数为:
L(β) = Σ[yᵢlog(pᵢ) + (1-yᵢ)log(1-pᵢ)]
其中pᵢ = 1/(1+exp(-βᵀxᵢ))。IRLS的每次迭代相当于求解:
β^(new) = (XᵀWX)⁻¹XᵀWz
这里z是"工作响应",W是对角权重矩阵,元素为pᵢ(1-pᵢ)。
在鲁棒回归中,IRLS通过Huber权重函数降低异常值影响:
wᵢ = {1/|eᵢ|, |eᵢ|>k {1/k, |eᵢ|≤k
下表比较了不同优化算法在逻辑回归中的表现:
| 算法 | 迭代次数 | 内存占用 | 适用规模 | 收敛速度 |
|---|---|---|---|---|
| IRLS | 5-10 | 中 | 中小型 | 超线性 |
| 梯度下降 | 100+ | 低 | 大型 | 线性 |
| 牛顿法 | 3-5 | 高 | 小型 | 二次 |
5. 超越IRLS:现代优化算法巡礼
虽然IRLS优雅强大,但并非万能钥匙。现代机器学习发展出更多优化利器:
- 近端梯度法:处理不可微正则项
- ADMM:分布式优化的利器
- 随机优化:大数据场景的标配
选择优化算法时,需考虑以下因素:
- 问题规模(数据量、特征数)
- 稀疏性需求
- 对异常值的敏感度
- 计算资源限制
在TensorFlow等框架中,IRLS可通过自定义训练循环实现:
import tensorflow as tf
class IRLSOptimizer(tf.keras.optimizers.Optimizer):
def __init__(self, p=1, **kwargs):
super().__init__(**kwargs)
self.p = p
def minimize(self, loss, var_list, **kwargs):
# 实现IRLS更新规则
...
优化算法的选择没有银弹。就像一位经验丰富的工程师工具箱中有各种扳手,优秀的数据科学家也应该掌握多种优化方法,根据具体问题灵活选择。IRLS以其独特的加权机制和清晰的迭代逻辑,在处理特定类型问题时仍然是不可替代的利器。
更多推荐
所有评论(0)