梯度下降法(上升法)的几何解释

             梯度下降法是机器学习和神经网络学科中我们最早接触的算法之一。但是对于初学者,我们对于这个算法是如何迭代运行的从而达到目的有些迷惑。在这里给出我对这个算法的几何理解,有不对的地方请批评指正!

        梯度下降法定义

        (维基百科)梯度下降法,基于这样的观察:如果实值函数 F(\mathbf{x}) 在点 \mathbf{a} 处可微且有定义,那么函数 F(\mathbf{x})在 \mathbf{a} 点沿着梯度相反的方向 -\nabla F(\mathbf{a}) 下降最快。

        因而,如果

                        \mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

        对于 \gamma>0 为一个够小数值时成立,那么 F(\mathbf{a})\geq F(\mathbf{b})

        考虑到这一点,我们可以从函数 F 的局部极小值的初始估计 \mathbf{x}_0 出发,并考虑如下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得

                       \mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

        因此可得到

  F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

       如果顺利的话序列 (\mathbf{x}_n) 收敛到期望的极值。注意每次迭代步长 \gamma 可以改变。

        下面图片示例了这一过程,这里假设 F 定义在平面上,并且函数图像是一个形。蓝色的曲线是等高线(水平集),即函数 F 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 F 值最小的点。

梯度下降法几何解释:

       由于我们的任务是求得经验损失函数的最小值,所以上图的过程实际上是一个“下坡”的过程。在每一个点上,我们希望往下走一步(假设一步为固定值0.5米),使得下降的高度最大,那么我们就要选择坡度变化率最大的方向往下走,这个方向就是经验损失函数在这一点梯度的反方向。每走一步,我们都要重新计算函数在当前点的梯度,然后选择梯度的反方向作为走下去的方向。随着每一步迭代,梯度不断地减小,到最后减小为零。这就是为什么叫“梯度下降法”。

       那么,为什么梯度的方向刚好是我们下坡的反方向呢?为什么我们不是沿着梯度的方向下坡呢?这是因为,只有沿着梯度的反方向,我们才能下坡,否则就是上坡了……举个例子,在y=f(x)的二维平面上,规定好x轴和y轴的方向后,如果曲线f(x)的值是随着x的增加上升的,那么它在某一点的切线的数值一定是正的。反之,若曲线f(x)的值是随着x的增加下降的,则它在下降的某一点的切线的数值一定是负数。梯度是方向导数在某一点的最大值,所以其值必然是正数。如果沿着梯度方向走,经验损失函数的值是增加的……所以,我们要下坡,就必须沿着梯度方向的反方向了。

梯度上升法几何解释:

       相对于梯度下降法,还有梯度上升法。(注意减号变成加号了)

                                   

       其基本原理与下降法一致,区别在于:梯度上升法是求函数的局部最大值。因此,对比梯度下降法,其几何意义和很好理解,那就是:算法的迭代过程是一个“上坡”的过程,每一步选择坡度变化率最大的方向往上走,这个方向就是函数在这一点梯度方向(注意不是反方向了)。最后随着迭代的进行,梯度还是不断减小,最后趋近与零。

       有一点我是这样认为的:所谓的梯度“上升”和“下降”,一方面指的是你要计算的结果是函数的极大值还是极小值。计算极小值,就用梯度下降,计算极大值,就是梯度上升;另一方面,运用上升法的时候参数是不断增加的,下降法是参数是不断减小的。但是,在这个过程中,“梯度”本身都是下降的。

       注:这里的梯度减小指的是梯度的数值大小,不包含方向的正负号。

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
图像配准是将两幅或多幅图像进行对齐的过程,使它们在几何上或像素级别上重合。基于FFD形变与梯度下降的图像配准算可以实现非刚性配准,即配准图像的形状可以有较大的变化。 算流程如下: 1. 对图像A和图像B进行灰度化处理; 2. 随机生成一组控制点,这些控制点用于描述图像A与图像B之间的对应关系; 3. 利用FFD形变模型对图像A进行变形,使得变形后的图像A与图像B尽可能重合; 4. 如果重合度满足要求,则输出变形后的图像A与图像B之间的对应关系,否则返回没有找到。 数学推导过程如下: 1. 对图像A和图像B进行灰度化处理,将其转化为灰度图像$I_A(x,y)$和$I_B(x,y)$; 2. 定义FFD形变模型,假设图像A中的控制点为$(x_i,y_i)$,变形后的控制点为$(x_i',y_i')$,则可以将图像A中的任意点$(x,y)$变形为: $$(x',y')=\sum_{i=1}^n\phi_i(x,y)(x_i',y_i')$$ 其中$\phi_i(x,y)$是关于$(x,y)$的控制点权重函数,通常选择三次B样条函数作为权重函数,$n$是总共的控制点数。 3. 定义形变误差函数$E$,用于描述变形后的图像A与图像B之间的差异: $$E=\sum_{x=1}^W\sum_{y=1}^H(I_A(x,y)-I_B(x',y'))^2$$ 其中$W$和$H$分别是图像A的宽度和高度。 4. 利用梯度下降求解最小化形变误差函数$E$的控制点坐标$(x_i',y_i')$,具体步骤如下: - 初始化控制点坐标$(x_i',y_i')$; - 计算形变误差函数$E$的梯度$\nabla E$; - 根据梯度方向和步长更新控制点坐标$(x_i',y_i')$; - 重复2-3步直到形变误差函数收敛或达到最大迭代次数。 5. 如果形变误差小于预设阈值,则输出变形后的图像A与图像B之间的对应关系$(x',y')$,否则返回没有找到。 最后,需要注意的是,该算的时间复杂度比较高,因此需要考虑优化方,例如使用多尺度策略和金字塔模型等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值