一 问题描述
在求解最优化问题时,往往引入正则化的概念,用来防止在数据样本不够时产生过拟合问题。
二 正则化模型
2.1 普通最小二乘问题
本文以最小二乘问题为例,阐述如何求解。普通最小二乘问题如下:
A
∗
x
=
b
x
=
a
r
g
m
i
n
(
∣
∣
b
−
A
∗
x
∣
∣
2
)
A*x=b \\ x = arg \quad min(||b-A*x||^2)
A∗x=bx=argmin(∣∣b−A∗x∣∣2)
2.2 正则化最小二乘问题
因为出现过拟合时,多项时系数的平方和比较大,所以对求解结果x的模本身增加约束。
A
∗
x
=
b
x
=
a
r
g
m
i
n
(
∣
∣
b
−
A
∗
x
∣
∣
2
+
σ
i
2
∗
Σ
x
i
2
)
A*x=b\\ x = arg \quad min(||b-A*x||^2 + \sigma_i^2 *\Sigma x_i^2)
A∗x=bx=argmin(∣∣b−A∗x∣∣2+σi2∗Σxi2)
三 正则化模型求解
3.1 普通最小二乘解
x = ( A T A ) − 1 A T b x= (A^TA)^{-1}A^Tb x=(ATA)−1ATb
3.2 梯度下降法
正则化增加了残差项,可以使用梯度下降法。
∂
f
∂
x
=
2
∗
(
A
T
A
∗
x
−
A
T
b
+
σ
i
2
∗
Σ
x
i
)
\frac{\partial f}{\partial x} = 2*(A^TA*x -A^Tb+\sigma_i^2*\Sigma x_i)
∂x∂f=2∗(ATA∗x−ATb+σi2∗Σxi)
3.3 增加约束方程
同时增加残差项也相当于增加约束方程。数学问题等同如下。
A
∗
x
=
b
σ
i
∗
x
i
=
0
A*x=b \\ \sigma_i*x_i = 0
A∗x=bσi∗xi=0
进一步化简为
A
r
e
g
∗
x
=
b
r
e
g
A_{reg}*x=b_{reg} \\
Areg∗x=breg
其中各表达式如下
Σ
=
d
i
a
g
(
[
σ
1
,
σ
2
,
.
.
.
,
σ
n
]
)
A
r
e
g
=
[
A
Σ
]
b
r
e
g
=
[
b
0
]
\Sigma = diag([\sigma_1, \sigma_2, ... , \sigma_n]) \\ A_{reg} = \begin{bmatrix} A\\ \Sigma \end{bmatrix} \\ b_{reg} = \begin{bmatrix} b\\ 0 \end{bmatrix} \\
Σ=diag([σ1,σ2,...,σn])Areg=[AΣ]breg=[b0]
最小二乘法求解
x
=
(
A
r
e
g
T
∗
A
r
e
g
)
−
1
∗
A
r
e
g
T
∗
b
r
e
g
x = (A_{reg}^T*A_{reg})^{-1}*A_{reg}^T*b_{reg}
x=(AregT∗Areg)−1∗AregT∗breg
四 举一反三
4.1 非线性问题类推
正则化过程的本质是如3.3 所述引入了约束方程,防止多项式系数过大产生过拟合现象。非线性优化问题同样可以引入方程进行同样的正则化。只是求误差解雅克比矩阵也分成两部分,观测量部分也分成两部分。
f
(
x
)
=
b
σ
i
∗
x
i
=
0
f(x)=b \\ \sigma_i*x_i = 0
f(x)=bσi∗xi=0
误差函数也分为两部分
f
1
=
f
(
x
)
−
b
f
2
=
x
i
−
0
=
x
i
f_1 = f(x)-b\\ f_2 = x_i - 0 =x_i
f1=f(x)−bf2=xi−0=xi
求出误差函数的雅克比
J
1
=
∂
f
1
∂
x
=
∂
f
∂
x
J
2
=
∂
f
2
∂
x
=
d
i
a
g
(
[
σ
1
,
σ
2
,
.
.
.
,
σ
n
]
)
J
=
[
J
1
J
2
]
J1 = \frac{\partial f_1}{\partial x} = \frac{\partial f}{\partial x} \\ \\ J2 = \frac{\partial f_2}{\partial x} =diag([\sigma_1, \sigma_2, ... , \sigma_n]) \\ J = \begin{bmatrix} J1\\ J2 \end{bmatrix} \\
J1=∂x∂f1=∂x∂fJ2=∂x∂f2=diag([σ1,σ2,...,σn])J=[J1J2]
初始化状态量x为X0,求出误差量。
d
e
l
t
a
Y
=
[
f
(
X
⃗
0
)
−
b
X
⃗
0
]
deltaY = \begin{bmatrix} f(\vec X_0) - b\\ \vec X_0 \end{bmatrix} \\
deltaY=[f(X0)−bX0]
高斯牛顿法求解
d
e
l
t
a
X
=
(
J
T
∗
J
)
−
1
∗
J
T
∗
d
e
l
t
a
Y
X
=
X
0
−
d
e
l
t
a
X
deltaX = (J^T*J)^{-1}*J^T*deltaY\\ X = X_0-deltaX
deltaX=(JT∗J)−1∗JT∗deltaYX=X0−deltaX
4.2 其它增加误差项的问题类型
非线性优化问题,经常增加各种各样的误差约束项,来求出最优解,导致求解雅克比变得复杂。由4.1 可知,通过增加约束方程,可以分解为各个误差量单独求雅克比,再把雅克比矩阵拼起来,运用高斯牛顿法求解。
第一步 确定所有约束方程,以及各方程权重。
第二步 构造误差向量,确定每一维误差向量表达式。(往往一类误差一个表达式)
第三步 对每一维误差求出雅克比。
第四步 把雅克比拼接起来,得到总雅克比。
第五步 运用高斯牛顿法迭代求解。