伟大的大数学家泰勒
泰勒公式,是一个用函数在某点的信息描述其附近取值的公式。如果函数满足一定的条件,泰勒公式可以用函数在某一点的各阶导数值做系数构建一个多项式来近似表达这个函数。
它最重要的贡献就是将复杂问题简单化,将非线性问题转换为线性问题,这样我们对于线性问题的多种求解方式便可以大显身手,这是一种将未知问题转换为已知问题又不丢失太大精度的思想!
超定方程的求解
当问题的已知条件/约束/等式量达不到代求解问题维数的时候,自然无法求解,只有两把钥匙却要打开多把锁?
现在我们来把锁全部打开
首先,我们将问题记为Ax=b,其中x和b都是多维(n维)的,我们约束只有极少维度(m,m<n)
这个世界上有千千万万把钥匙,现在我们拿来多把可能会打开对应锁的钥匙x1
这个时候开锁的程度记为r,r=b-Ax1,我们只要找到最可能打开的几把钥匙就好了(极为相似的钥匙也可以打开同一把锁——配钥匙就是找近似解)
配钥匙的方法就是最小二乘,即r²的导数为0,此时构建了f(x)=(Ax1-b)²的问题,求导得A(Ax-b)=0,可得即可解得
更优解、更精确解的方式
牛顿法
首先泰勒展开,忽略二阶以上的项
然后令导数等于0
其中多维一阶导为称为雅克比矩阵记为J,多维二阶导记为H,得到
高斯牛顿法
优化问题
增量最优
一阶泰勒近似
导数为零
解得
记则有
伟大的拉格朗日
引入一个新的参数 λ (即拉格朗日乘子),将约束条件函数与原函数联系到一起
将约束条件乘以λ加入原函数中,在约束条件不满足的情况下是不可能达到最优的,这种扰动可以使求解问题更快收敛。
题外话:另外对于有k个约束问题的最优化求解,拉格朗日乘子的加入可以增加方程数量以减少不定数量使方程更易求解,是一种过拟合更快求最优的思想
最常用的求精确解方式方法Levenberg-Marquardt
带约束的求解问题
构建拉格朗日乘子方程
同样的一阶近似然后对待求量x求导,令其为零
最终得到
图解一阶牛顿法
拟牛顿法是用Hessian矩阵的逆矩阵来代替Hessian矩阵
一阶牛顿法(一维实根f(x)=0):
以上的图为实根大多数还是非实根的,上述是最简单最简单的牛顿法原理,方便理解,各参数量对应的图形用色彩标记过了,正方向也标记了
一阶泰勒展开近似
求导令其为零即可得到
二阶导记为H 海塞(Hessian)矩阵
最后一个问题拟牛顿法
通过对一阶泰勒近似的求导
得到,我们不要将其等于0
然后有
学术上我们将这个式子叫做拟牛顿条件
要保证Gk为正定矩阵,这是因为只有正定才能保证牛顿法的搜索方向是向下搜索的
然后我们将H矩阵替代为Gk就好了,这个替代的过程是大名鼎鼎的各种算法的由来
记号的改写
这里我们记
其中 就是一阶导
另外我们将所有的替代海塞矩阵的G记为B
DFP算法
它是Davidon、Fletcher、Powell三位牛人名字的首字母缩写
DFP替代
BFGS算法(目前认为最好的替代算法,也是最常用的)
BFGS替代