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

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

        梯度下降法定义

        (维基百科)梯度下降法,基于这样的观察:如果实值函数 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的增加下降的,则它在下降的某一点的切线的数值一定是负数。梯度是方向导数在某一点的最大值,所以其值必然是正数。如果沿着梯度方向走,经验损失函数的值是增加的……所以,我们要下坡,就必须沿着梯度方向的反方向了。

梯度上升法几何解释:

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

                                   

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

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

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

 

### TDOA 算法梯度下降法的应用 时间差定位(Time Difference of Arrival, TDOA)是一种基于信号传播时间差异来估计目标位置的技术。在实际应用中,为了提高定位精度并解决非线性优化问题,通常会引入梯度下降法作为求解工具。 #### 1. 梯度下降法基本原理 梯度下降法是一种迭代优化方,用于寻找函数的最小值或最大值。其核心思想是沿着负梯度方向逐步更新参数,从而逼近最优解。对于 TDOA 定位中的非线性方程组,可以通过构建误差平方和的目标函数 \( J(\mathbf{x}) \),利用梯度下降法对其进行优化[^2]: \[ J(\mathbf{x}) = \sum_{i=1}^{N} (t_i - t_0 - d_i/c)^2, \] 其中: - \( t_i \) 表示第 \( i \) 个接收器接收到信号的时间; - \( t_0 \) 是发射时刻; - \( d_i \) 是目标与第 \( i \) 个接收器之间的距离; - \( c \) 是信号传播速度。 通过计算该目标函数关于未知变量的位置坐标 \( \mathbf{x} \) 的偏导数,并按照以下公式更新位置估计值: ```python def gradient_descent(x_initial, learning_rate, max_iterations): x_current = np.array(x_initial) for _ in range(max_iterations): gradient = compute_gradient(J, x_current) # 计算梯度 x_next = x_current - learning_rate * gradient # 更新规则 if np.linalg.norm(gradient) < tolerance: # 收敛条件 break x_current = x_next return x_current ``` 上述代码展示了如何使用梯度下降法调整初始猜测位置 \( \mathbf{x}_{initial} \)[^3]。 #### 2. 结合 TDOA 的具体实现 在 TDOA 中,假设已知多个传感器节点的位置以及它们检测到的信号到达时间,则可以建立一组约束关系表示为目标函数的形式。由于这些约束是非线性的,因此采用梯度下降法能够有效处理复杂的几何场景下的多维空间搜索问题[^4]。 需要注意的是,在某些情况下可能遇到病态矩阵或者局部极小值等问题,这会影响最终的结果质量。为此可以在算法设计阶段加入则化项或者其他改进措施以增强鲁棒性和稳定性。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值