文章目录
插值方法
线性插值
原理
已知数据(x0,y0)与(x1,y1),计算[x0,x1]区间内某一位置x在直线上的y值,公式如下:
本质:用x和x0,x1的距离作为一个权重,用于y0和y1的加权。
计算
例子已知原图像及图像尺寸(srcWidth,srcHeight),求放大为(dstWidth,dstHeight)大小的图像。首先,计算放大后图像位置(dstX,dstY)对应原图像的位置。
然后根据对应位置获取相应的像素值,对于最近邻插值,(dstX,dstY)点对应的像素值为原图像中(srcX,srcY)点处的像素值。
双线性插值
原理
双线性插值是两个变量的插值函数的线性插值扩展,其核心思想是在x,y两个方向上分别进行一次线性插值。
已知函数 f 在 Q11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四个点的值。对于图像,f就是一个像素点的像素值。首先在 x 方向进行线性插值,得到
然后在 y 方向进行线性插值,得到
综合起来就是双线性插值最后的结果:
计算
对于图像处理,先根据
srcX=dstX* (srcWidth/dstWidth),
srcY = dstY * (srcHeight/dstHeight)
来计算目标像素在源图像中的位置,这里计算的srcX和srcY一般都是浮点数,比如f(1.2, 3.4)这个像素点是虚拟存在的,先找到与它临近的四个实际存在的像素点
(1,3) (2,3)
(1,4) (2,4)
写成f(i+u,j+v)的形式,则u=0.2,v=0.4, i=1, j=3
在沿着X方向差插值时,f(R1)=u(f(Q21)-f(Q11))+f(Q11)
沿着Y方向同理计算。
或者,直接整理一步计算,
f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)
最优理论与凸优化
最优化问题
最优化问题是求解函数极值的问题,微积分提供的求函数的极值思路是找函数的导数为0的点,因为在极值点处,导数必定为0。在实际应用中遇到的函数基本上都是可导的。在机器学习之类的应用中,一般将最优化问题统一表述为求解函数极小值问题。
优化问题一般可以分为两大类:无约束化问题和约束化问题,约束化问题又可分为含等式约束优化问题和含不等式约束化问题。
针对不同的优化问题有不同的处理策略:
- 无约束的优化问题:可直接对其求导,并使其为0,这样便能得到最终的最优解;
- 含等式约束优化问题:主要通过拉格朗日乘数法将含等式约束的优化问题转换成无约束优化问题求解;
- 含有不等式约束的优化问题:主要通过KKT条件(Karush-Kuhn-Tucker Condition)将其转化成无约束优化问题求解。
拉格朗日乘数法
KKT条件
凸优化
最优化问题在机器学习、数据挖掘等领域应用非常广泛,因为机器学习主要做的就是优化问题,先初始化权重参数,然后利用优化方法来优化这个权重,知道准确率不再上升,迭代停止。
凸优化的一般形式为:
m
i
n
i
m
i
z
e
f
0
(
x
)
使
得
f
i
≤
b
i
,
i
=
1
,
.
.
.
,
m
minimizef_{0}(x) 使得f_{i} \leq b_{i}, i=1,...,m
minimizef0(x)使得fi≤bi,i=1,...,m
第一个为优化的目标,即最小化目标函数
f
(
x
)
f(x)
f(x),而不等式则为约束条件。希望找到一个满足约束条件的
x
∗
x^{*}
x∗,使得对于任意的
z
z
z满足约束条件:
f
1
(
z
)
≤
b
1
,
.
.
.
,
f
m
(
z
)
≤
b
m
f_{1}(z) \leq b_{1},...,f_{m}(z) \leq b_{m}
f1(z)≤b1,...,fm(z)≤bm
有:
f
0
(
z
)
≥
f
0
(
x
∗
)
f_{0}(z) \geq f_{0}(x^{*})
f0(z)≥f0(x∗)
而
x
∗
x^{*}
x∗就是我们所求的最后结果。
满足所有约束条件的点集称为可行域,记为X,又可写为:
m
i
n
f
(
x
)
s
.
t
x
∈
X
minf(x) s.t x \in X
minf(x)s.tx∈X
s
.
t
s.t
s.t表示受限于(subject to)。
在优化问题中,应用最广泛的就是凸优化问题。
若可行域
X
X
X是一个凸集:即对于任意给的
x
,
y
∈
X
x,y \in X
x,y∈X,总有
λ
x
+
(
1
−
λ
)
y
∈
X
,
对
于
任
意
的
λ
∈
(
0
,
1
)
\lambda x+(1-\lambda)y \in X,对于任意的\lambda \in (0,1)
λx+(1−λ)y∈X,对于任意的λ∈(0,1)
并且目标函数是一个凸函数:即
f
(
λ
x
+
(
1
−
λ
)
y
)
≤
λ
f
(
x
)
+
(
1
−
λ
)
f
(
y
)
f(\lambda x + (1 - \lambda)y) \leq \lambda f(x) + (1 - \lambda)f(y)
f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)
称这样的优化问题为凸优化问题。
用图像表示为:
函数上方的点集就是凸集,函数上任意两点的连线,仍然在函数图像上方。
- 全局最优:指的是在满足条件约束的情况下,找到唯一的一个点满足最大值或者最小值。
- 局部最优:指的是在满足条件约束的情况下,有可能找到一个局部最大/小点,但不是全局最大或者最小的点。
最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便的求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。
最小二乘问题是无约束的优化问题,通常可以理解为测量值与真实值之间的误差平方和:
目
标
函
数
=
∑
(
观
测
值
−
理
论
值
)
2
目标函数=\sum (观测值-理论值)^{2}
目标函数=∑(观测值−理论值)2
常见形式为:
m
i
n
i
m
i
z
e
f
0
=
∣
∣
A
x
−
b
∣
∣
2
2
=
∑
i
=
1
k
(
a
i
T
x
−
b
i
)
2
minimize f_{0}=||Ax-b||_{2}^{2}=\sum _{i=1}^{k}(a_{i}^{T}x-b_{i})^{2}
minimizef0=∣∣Ax−b∣∣22=i=1∑k(aiTx−bi)2
其中
A
∈
R
n
X
k
(
n
>
k
,
方
程
的
个
数
大
于
未
知
数
的
个
数
)
A\in R^{nXk}(n>k,方程的个数大于未知数的个数)
A∈RnXk(n>k,方程的个数大于未知数的个数),
a
i
T
a_{i}^{T}
aiT为
A
A
A的第
i
i
i行,向量
x
x
x就是我们的优化目标$。
这个问题没有约束条件,但是这个公式是一定大于等于0的,所以这样的最优化问题,可以转换成线性方程求解:
A
T
A
x
=
A
T
b
A^{T}Ax=A^{T}b
ATAx=ATb
A
T
A^{T}
AT为A的转置,因此根据矩阵的逆:
(
A
T
A
)
−
1
A
T
A
=
1
(A^{T}A)^{-1}A^{T}A=1
(ATA)−1ATA=1
可以把上面的公式表示为:
x
=
(
A
T
A
)
−
1
A
T
b
x=(A^{T}A)^{-1}A^{T}b
x=(ATA)−1ATb
上面的线性求解的方法比较直观,但是通常比较低效。其中一种常见的解法是对A进行QR分解(
A
=
Q
R
A=QR
A=QR),其中Q是nxk正交矩阵,R是kxk上三角矩阵,则有:
m
i
n
∣
∣
A
x
−
b
∣
∣
=
m
i
n
∣
∣
Q
R
x
−
b
∣
∣
=
m
i
n
∣
∣
R
x
−
Q
−
1
b
∣
∣
min||Ax-b||=min||QRx-b||=min||Rx-Q^{-1}b||
min∣∣Ax−b∣∣=min∣∣QRx−b∣∣=min∣∣Rx−Q−1b∣∣
最小二乘的几何意义
最小二乘法中的几何意义是高维空间中的一个向量在低维子空间的投影。
加权最小二乘问题
∑
i
=
1
k
w
i
(
a
i
T
x
−
b
i
)
2
\sum _{i=1}^{k}w_{i}(a_{i}^{T}x-b_{i})^{2}
i=1∑kwi(aiTx−bi)2
权值均为正数,代表每一个
a
i
T
x
−
b
i
a_{i}^{T}x-b_{i}
aiTx−bi对结果的影响程度。
正则化的最小二乘问题
∑
i
=
1
k
w
i
(
a
i
T
x
−
b
i
)
2
+
ρ
∑
i
=
1
n
x
i
2
\sum _{i=1}^{k}w_{i}(a_{i}^{T}x-b_{i})^{2}+\rho \sum _{i=1}^{n}x_{i}^{2}
i=1∑kwi(aiTx−bi)2+ρi=1∑nxi2
ρ
\rho
ρ是人为选择的,用来权衡最小化
∑
i
k
(
a
i
T
x
−
b
i
)
\sum _{i}^{k}(a_{i}^{T}x-b_{i})
∑ik(aiTx−bi)的同时,使得
∑
i
=
1
n
x
i
2
\sum _{i=1}^{n}x_{i}^{2}
∑i=1nxi2不必太大的关系。
线性规划
线性规划的目标函数和约束条件都是线性的:
m
i
n
i
m
i
z
e
c
T
x
minimize c^{T}x
minimizecTx
s
.
t
a
i
T
x
≤
b
i
,
i
=
1
,
.
.
.
,
m
s.t a_{i}^{T}x \leq b_{i},i=1,...,m
s.taiTx≤bi,i=1,...,m
用画图的方法,就是根据条件,画出可行域,然后将目标函数在可行域上移动,直到得到最大值。
Cholesky分解
基础知识
- 如果一个复矩阵 A = A ∗ A=A^{*} A=A∗(共轭转置),则A称为Hermitian矩阵。(矩阵A转置后仍为其本身,A一定是方阵)。
-
M
n
×
n
M_{n \times n}
Mn×n是一个对称的实矩阵,对于任意的(由n个实数组成)的非零列向量x,都有
x
T
M
x
>
0
x^{T}Mx>0
xTMx>0,则称M是正定的。
- M n × n M_{n \times n} Mn×n是一个Hermitian矩阵,对于任意的(由n个复数组成)的非零列向量z,都有 z ∗ M z > 0 z^{*}Mz>0 z∗Mz>0,则称M是正定的。
矩阵的Cholesky分解
如果矩阵A是正定的,那么它可以被唯一的分解为一个下三角矩阵L和其共轭转置L*的乘积,这就是矩阵的Cholesky分解。对实矩阵,即
A
=
L
L
T
A=LL^{T}
A=LLT,其中L是一个下三角矩阵。例如3x3的矩阵Cholesky分解示意:
Cholesky分解值计算,结合矩阵乘法的规则,矩阵L对角线上的元素为:
推广后得到:
对角线以下元素
l
i
k
l_{ik}
lik,其中
i
>
k
i>k
i>k,有下面的计算规律:
推广后得到:
实际应用意义
Cholesky分解的非常重要的应用就是解方程组 A x = B Ax=B Ax=B,其中A是一个正定矩阵。因为A是一个正定矩阵,所以有 A = L L T A=LL^{T} A=LLT,其中L是一个下三角矩阵。原方程组可以写成 L L T x = B LL^{T}x=B LLTx=B。如果令 y = L T x y=L^{T}x y=LTx,则有 L y = B Ly=B Ly=B。注意到其中L是一个下三角矩阵,所以从下向上求解 y y y是非常容易的,求解出 y y y之后,在按照类似的方法求解 y = L T x y=L^{T}x y=LTx中的 x x x,而其中 L T L^{T} LT是一个上三角矩阵,所以最终求出 x x x也就非常容易。
共轭梯度法求解线性方程组
直接求解
迭代求解
偏导数、方向导数、梯度、散度、旋度