同步在在www.makecradle.com
在机器学习当中经常涉及到对能量方程,或者是目标函数进行优化的过程。可以用公式表示为:
minf(x)
s.t.ci(x)=0,i=1,...,m
ci(x)>=0,i=m,...,n
因为所有的优化问题都可以分为有约束的和无约束的,在无约束的优化问题中上面的公式有
n=0
.同样的优化问题都可以转化为求最小值问题,求max的问题取其相反数即可。
最小二乘问题优化一般是通过模型的函数
fθ(xi)
与输出
yi
的误差
其中最小二乘的意思就是对误差进行取平方所以最小二乘法的数学模型就是:
min∑i=1m(fθ(xi)−yi)2
最小二乘法就是通过计算得到
fθ(xi)
的一个参数模型
θ
使得上述的误差达到最小。
当我们采用的是线性模型的时候,有:
fθ(xi)=∑j=1bθiϕi(x)=θTϕ(xi)
这个是通过把函数转化为向量乘积的形式便于计算,公式中基函数
ϕ(x)
一般可以分为两种情况:
1.幂函数
ϕ(x)=(1,x,x2,x3,...)
幂函数拟合的光滑性比较好,局部效果较好
2.正弦(余弦)函数
ϕ(x)=(1,sinx2,cosx2,sin2x2,cos2x2,...)
光滑性较差,但是全局性较好(特别是针对特殊问题)
那么上面提到的优化问题就转化为
J(θ)=12∥ϕθ−y∥2
那么问题就转化为矩阵的问题(注意上文中
ϕ(xi)
不同于
ϕ
)
其中
y=[y1,y2,...,ym]T
这个是我们的监督学习训练参数输出的n维向量,那么我们对上面的矩阵进行扩展可以得到以下公式
ϕθ=∣∣∣∣∣ϕ(x1)⋮ϕ(xm)∣∣∣∣∣θ=∣∣∣∣∣ϕ(x11)⋮ϕ(xm1)ϕ(x12)ϕ(xm2)⋯⋯ϕ(x1n)ϕ(xmn)∣∣∣∣∣∣∣∣∣∣ϕ(θ1)⋮ϕ(θn)∣∣∣∣∣
在公式:
J(θ)=12∥ϕθ−y∥2
我们可以对该式子进行微分可以得到:
∂J(θ)∂θ=ϕTϕθ−ϕTy
令:
∂J(θ)∂θ=0
就可以得到最有方程的解
即
ϕTϕθ=ϕTy
θ=ϕ+y
其中 ϕ+ 为 ϕ 的伪逆
问题转化为矩阵求伪逆的问题,但是由于矩阵中m很大,所以矩阵求伪逆问题也是一个大问题。
一般有以下几种:
1. 直接求伪逆(适合m不是很大的情况下)
ϕ+=(ϕTϕ)−1ϕT
2. 采用svd的方法求解
2.1
[U,S,V]=svd(ϕ)
,其中(S是对角矩阵,U和V是正交矩阵)
2.2
ϕ+=V∗S−1∗UT
3.采用QR分解
3.1
[Q,R]=qr(ϕ)
其中(Q是正交矩阵,R是非奇异的上三角矩阵)
3.2
ϕ+=(RT∗R)−1∗RT∗QT
4.