优化问题:就是求最值。涉及两类函数
- min 或 max,意思就是求它后面那个函数的值
- argmin 或 argmax,意思就是求 “使得它后面东西最大” 时自变量的值
- 符号下面写的东西:自变量 + 自变量范围
- 对于一个方程组 Ax=b,定义它的最小二乘解为 argmin ∥Ax−b∥2
- 基本求法:令对自变量的偏导为零
# 偏导结论
约定:
- x 为 n 维列向量
- y 为 m 维列向量
则
# 问题描述与记号规定
想象一个黑箱系统,它里头有 n 个未知量,我们打包成列向量 θ,称为 “参数”。我的目标是估计这个参数。
现在让这个系统动起来。它会吞进去一堆东西,我们打包成列向量 u,称为 “输入”;吐出来一堆东西,我们打包成列向量 y,称为 “输出”。我们在 0 时刻、1 时刻、……、N 时刻,观测这个系统,记录这些时刻的输入,我们记为 u(0),u(1),⋯,u(N−1);以及这些输入在下一时刻所产生的输出,我们记为 y(1),y(2),⋯,y(N)
使用线性模型来拟合这个系统,也就是说,假定系统的输出关于那 n 个未知参数是线性的,也即对于 t 时刻的输出,存在一个系数矩阵(aka 测量向量)ϕ(k) 使得 ϕT(k)⋅θ 能够拟合 y(k+1),于是 θ 也就是方程组 y(k+1)=ϕT(t)⋅θ 的数值解。(注意,ϕ 中可以含有过去时刻的 y 和 u,因为对于现在时刻,过去时刻是已知的。)
显然,观测的数据越多,拟合效果越好。本章后面所讲的所有方法,就是要解决:怎么利用这么多输入输出数据,具体求出这个数值解。
# 梯度下降法
思路:迭代之,每次利用一个新数据,更新已有的估计值
先验误差与后验误差
- 先验误差,即在更新参数之前,用当前的参数看看与真实情况差多少,再更新参数:
εo(k+1)=y(k+1)−ϕT(k)⋅θ^(k)
- 后验误差,即先更新参数,再用更新后的参数看看这一轮迭代的效果如何:
ε(k+1)=y(k+1)−ϕT(k)⋅θ^(k+1)
[!success] 曰(梯度下降法)
基于先验误差的迭代:
θ^(k+1)=θ^(k)+Fϕ(k)εo(k+1)
基于后验误差的迭代:
θ^(k+1)=θ^(k)+1+ϕT(k)Fϕ(k)Fϕ(k)εo(k+1)
其中 F 相当于学习率,可以取任意正定矩阵,一般用单位矩阵。后验误差稳定性比先验误差好一些。
推导:
(1) 先验误差情形。误差函数定为 21∥εo(k+1)∥2。令更新沿着梯度反方向
Δθ=−F2 ∂θ(k)∂∥εo(k+1)∥2=−F2 ∂θ(k)∂∥y(k+1)−ϕT(k)θ(k)∥2=Fϕ(k)(y(k+1)−ϕT(k)θ(k))=Fϕ(k)εo(k+1)
(2) 后验误差情形。这意味着误差函数要改为 21∥ε(k+1)∥2,取 k+1 时刻的梯度。
令 Δθ 沿误差函数梯度反方向。误差函数的梯度和之前类似:2 ∂θ(k+1)∂∥ε(k+1)∥2=−ϕ(k)ε(k+1),但是不能只用 Δθ=Fϕ(k)ε(k+1) 来计算,因为 ε(k+1) 依赖 θ(k+1),相当于互为因果了。所以要把 ε(k+1) 从 θ(k+1) 中剥离开:
ε(k+1)ε(k+1)=y(k+1)−ϕT(k)(θ(k)+Δθ)=y(k+1)−ϕT(k)θ(k)−ϕT(k)Δθ=εo(k+1)−ϕT(k)Δθ=εo(k+1)−ϕT(k)Fϕ(k)ε(k+1)=1+ϕT(k)Fϕ(k)εo(k+1)
这样就分开了,于是就可以说 Δθ=Fϕ(k)ε(k+1)=1+ϕT(k)Fϕ(k)Fϕ(k)εo(k+1)
# 最小二乘法
刚才是逐个考虑,而这个方法则是同时把所有数据都考虑进来。将这些数据同时列出并写成矩阵表达式:
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧y(1)y(2)y(N)=ϕT(0)⋅θ=ϕT(1)⋅θ⋯=ϕT(N−1)⋅θ ⇒ ⎣⎢⎢⎢⎢⎡y(1)y(2)⋮y(N)⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡ϕT(0)ϕT(1)⋮ϕT(N−1)⎦⎥⎥⎥⎥⎤⋅θ
记这个表达式为
yN=ΦN⋅θ
因此 θ 就是这个方程组的数值解。这块就不用迭代了,直接最小二乘法
[!success] 曰(最小二乘法)
θ^LS=(ΦNTΦN)−1ΦNTyN
# 各种改进的最小二乘法
算那么大一个 Φ 矩阵毕竟很麻烦,且只用一条公式去推导的时候稳定性也很差,因此做出改良。赌他不考推导,死记
# 递归最小二乘
递归形式具有如下形式:Δθ= 增益 × 测量向量 × 误差
F(k+1)θ^(k+1)=F(k)−1+ϕ(k)TF(k)ϕ(k)F(k)ϕ(k)ϕT(k)F(k)=θ^(k)+F(k+1)ϕ(k)εo(k+1)
# 加权最小二乘
使用一个正定对称矩阵 WN,规定误差函数中每个参数各自误差的权重,也即优化 J=εT⋅WN⋅ε
非递归:
θ^WLS=(ΦNTWNΦN)−1ΦNTWNyN
递归:
FW(k+1)FW(k+1)θ^(k+1)=FW(k+1)ϕ(k)w(k)=w(k)1+ϕT(k)FW(k)ϕ(k)FW(k)ϕ(k)=(I−FW(k+1)ϕT(k))FW(k)=θ^(k)+FW(k+1)εo(k+1)
# 带遗忘因子的递归最小二乘
按顺序迭代
FW(k+1)FW(k+1)θ^(k+1)=λ+ϕT(k)FW(k)ϕ(k)FW(k)ϕ(k)=(I−FW(k+1)ϕT(k))FW(k)λ1=θ^(k)+FW(k+1)εo(k+1)
# 带正则化的最小二乘
对于 J=∥yN−ΦNθ∥2,引入正则项以稳定
L2 正则化:即最小化 J+λ∥θ∥2,结论:θ^=(ΦNTΦN+λI)−1ΦNTyN
Tikhonov 正则化(吉洪诺夫):即最小化 J+γθTKθ,其中后面那项记为 Ω(θ),K 一般是对称的。结论:θ^=(ΦNTΦN+γK)−1ΦNTyN
# 带约束的最小二乘
等式约束:例如约束 θ∈col(U),做法:θ=Ub,这样 b 就是一个不受约束的变量,只要对 b 做无约束的最小二乘,然后 θ^LS=Ub^LS
不等式约束:递推最小二乘。如果递推过程中某一项 θ 违反了这个约束,则映射到另一个空间上:ρ=F(k)−1/2θ,在这个另外的空间上投影(沿着法向量)到约束边界上,然后再反向映射回原来的那个空间
![]()
![]()
![]()
![]()