本文主要对计算机视觉图像配准中搜索空间算法引发讨论,即当图片配准后,讨论下一步怎么办,往哪个方向,多大步长的进行搜索。是一种优化算法
本文将介绍设计到的基本的数学知识、一阶优化算法、针对多阶方程的梯度下降法以及他的改进、牛顿法以及他的改进,神经网络的优化算法等。
本文所有的知识全部来自于B站一位老师的讲解视频以及《优化算法》,现在本人也有许多不理解之处,后续会慢慢修改,接下来的文章我将用最简单的语言解释这复杂的算法
基础数学知识:基础数学知识
1、梯度
导数相信大家都知道了,作用在一元方程中名字通常就叫斜率,作用在二元方程中,针对X,就是对X的偏导;针对Y,就是对Y的偏导。对X的二次导,对Y的二次导数等等。
梯度:就是对X、Y、Z等偏导的数组。他的现实中的意义就是在多维度的平面中,观察他的下降趋势。
类似于登山,对自己坐标做一个XY坐标轴,梯度就是当前X方向、Y方向的倾斜程度,判断山是否倾斜的一个量化
2、黑塞矩阵
黑塞矩阵是什么?简单来说就是在多维的情况下对梯度的导数,我们可以看出,一个N元方程做一次导数,变成了n维的数组,这个时候,对n维的数组再做一次导数,就变成了NXN的矩阵。这就是黑塞矩阵。
3、雅各比矩阵
雅各比矩阵,他的运算并不是对X、Y等求偏导,而是针对n维的向量函数的。
简单理解就是:黑塞矩阵式=雅各比矩阵(一阶偏导数组)
4、泰勒公式
后面我们方式涉及到牛顿法、伪牛顿法等,都是以泰勒公式为核心
泰勒公式简单来说就是,把任意一个方程,都可以写成很多很多项的和
我们可以看到里面由一次导数、二次导数等等,我们是否可以利用它来进行极值点的判断
Tip:他们有什么用?
众所周知:导数,表示一个曲线的变化趋势,二阶导数表示一阶导数的变化趋势问题,简单的求极值问题中,导数为零表示有极大或者极小值,这个情况下,二阶导数的正负表示函数的凹凸性,进一步判断这个点是极大值还是极小值。
推广到多维中,多个方向->梯度数组;两两配合的二阶导数,变成了一个N*N的矩阵->黑塞矩阵
极值点的条件
1、一阶必要条件:
当在内部时:
要求所有的导数全等于0
当在边界时:
同样,在可行方向上,全等于零
2、二阶必要条件
如下面公式
此时:d表示方向向量,H表示黑塞矩阵。右面是证明过程。
3、充分必要条件:
上述并不是充分条件。因为黑塞矩阵可能不是正定的(本征值不一定为正数)
何时?:当一阶导数等于零,H大于零
迭代算法的基础知识
首先,我们需要知道什么是迭代算法,迭代算法类似于我们通过条件求解出的结果,变成了下一步的条件,并且以相同的方式进行求解。也就是一个螺旋向上的过程。
优化算法的要素:
起始点的选择:选用所有的极值点(导数为零的点)、尽可能的接近目标、选择
方向的确定:就是我们说讨论的优化算法:目标函数【分割】、一阶导数【二分法】、二阶导数【牛顿法等】
步长的确定:其表示每一次迭代的距离。
目标是否能够达成:收敛条件、总能量是否足够小【每一次优化后,是否变化的不明显】、步长是否足够的小【结构是否稳定】、导数是否足够小【变化趋势变化不明显】
优化算法:黄金分割法【一维】【一维无方向,确定步长】
本方法的根本思路就是:二维平面,一元函数,对其进行结果的逼近方法。类似于二分法。他的前提条件是:是一个单峰函数
我们自己算一个函数值,这个时候就可以建立一元二次函数:
如图发现,这个数就是黄金分割比例。
优化算法:斐波那契数列【步长】
我们进一步对黄金分割法进行更大的优化:
我们每次压缩的比例ρ是变化的,这个时候迭代的关系:
那么怎么样选取可变的ρ呢?
数学家告诉我们:斐波那契数列(1、2、3、5、8、13等)
0.618-0.5
优化算法:二分法【步长】
需要一个额外的信息:一阶导数的正负,决定他往哪儿去。
这个时候用二分法,压缩比最大
优化算法:牛顿法与割线法【一维】【步长】
注:他是基于二次型目标函数,是找关键点的第一步
步骤:
泰勒展开:
求:
对其求导: