【数值优化基础 (自动驾驶)】—— 知识点(方便回顾)

笔记:机器人学中的数值优化基础
数值优化简介

1.优化问题

min f(x)

s.t.g(x)<=0 h(x)=0

假设:(1)目标函数有下界(2)下水平集不能无界

2.凸包问题:给定点集,求构成凸包的点

3.常见的凸集:超平面、半平面、球的表面、球、多项式、半正定锥

4.保持凸性的运算:

(1)两个凸集的交集

(2)两个凸集的和

(3)两个凸集的叉乘

5.hessian矩阵在函数光滑时是对称矩阵

6.梯度:使每一点下降最快的方向

7.区分Hessian矩阵与Jacobian矩阵,Hessian矩阵对应的函数是向量映射到标量,矩阵元素是二阶信息,而Jacobian矩阵对应的函数是向量映射到向量,矩阵元素是一阶信息

8.凸函数最重要的性质就是琴生不等式,能取到等号则是一般凸函数,不取等号则是强凸函数

9.凸函数<=>上方图是凸集

10.凸函数的下水平集是凸集

11.关心凸函数的原因

(1)凸性容易保持

(2)任何的局部最优解都是全局最优解

(3)解集是凸的

(4)凸函数在很多运算中能够被保留(求和、仿射变换、逐点max)

12.一阶条件 => 仅凸函数的最优性

13.二阶条件:满足 ∇ 2 f ( x ) ⪰ 0 \nabla^{2} f(x) \succeq 0 ∇2f(x)⪰0,一个光滑的函数是凸的。Hessian函数是光滑函数的一个很好的局部模型

13.强凸意味着hessian矩阵严格正定。有利于提高算法的收敛速率

14.次梯度的反方向不一定是下降方向

15.梯度单调性:任何凸函数的(次)梯度都是单调的

16.最速下降法就是以负梯度方向为迭代方向,当函数非光滑时,迭代点不存在梯度时,以次梯度集合内的取最小模长的负方向为迭代方向

17.迭代方向的步长选择:

(1)恒定步长:导致不停的震荡,始终无法收敛

(2)不断衰减的步长:可以保证收敛,但是随着步长越来越短,收敛越来越慢

(3)精确线搜索:求解时间损耗

(4)非精确线搜索:不再求解子优化问题,希望每次得到一个接近最优解的步长

18.条件数很大将导致最速下降法每次迭代震荡很厉害,因此当条件数很大时,不适用最速下降法

19.修正阻尼牛顿法:最小化二次逼近,如果函数是二次函数,那么牛顿法只需一步就能达到最优。

20.当函数是二次型时,近似没有起到效果,迭代的过程就是求解原函数最优解的过程,因此当然一次迭代就能得到最优解

21.将牛顿法与最速下降法相比,牛顿法需要的迭代次数很少就能直达最优解,但是由于需要求解hessian矩阵的逆,导致,每一步的迭代时间有所增加

22.评价数值优化方法的三个方面:(1)收敛速度(2)适用于不同功能的稳定性(3)每次迭代的计算量

23.牛顿法的适用条件是hessian矩阵正定,否则会出现上述两种情况,若半正定可能找不到最优解,若负定,将使迭代方向变成上升方向,因此我们必须保证迭代方向与负梯度方向成锐角

24.工程上的方法:构造一个足够接近hessian的正定矩阵M、通过因式分解而不是求逆来求解线性系统、线搜索不需要grad和Hessian

25.自动驾驶规划目标:算出一条满足约束的最优轨迹

最优:平滑、舒适、尽可能短(耗时少)

约束:轨迹连续性、无碰撞、交规、车辆动力学

26.一般求复杂函数在复杂约束下的最小值问题都采用迭代法:牛顿、最速下降、高斯牛顿

27.凸优化:求凸函数在凸空间的最小值问题

28.静态+动态避障约束空间都不是凸的

29.求解非凸问题的主要思路是找非凸问题中的凸结构

30.对于非凸函数和非凸空间:连续空间离散化后,离散约束空间的最优解,不断迭代得到最优解

31.采样点越少,容易收敛到局部最优。采样越多,容易发生维数灾难

32.为什么引入二次规划?

多项式求极值是二维空间的问题,而运动规划的优化问题是高维的。高维空间的优化问题是十分复杂的,我们如果将其建立为一个类似于我们熟悉的多项式求极值问题,我们当然希望选择对优化来说最理想的二次。如果问题的维度也高,次数也高,就很难求解了。

33.维度是指变量的个数,而次数是指多项式的阶次

34.二次规划在自动驾驶中有两个比较经典的应用:

(1)百度Apollo EM planner用QP求解局部最优解

(2)MPC控制器将有约束的MPC问题转化为QP问题

35.运动规划的是在凸空间么?

显然特别不凸,因为中间有车挡着,相当于有洞。任何中空的或具有凹痕都不是凸集。如果能实现路径规划与速度规划解耦,可以通过动态规划算法在 l ( s ) l(s) l(s)空间内寻找几个凸集,在每个凸集内部,可以实现QP算法

36.梯度下降法工程上实现通常采用负梯度方向为优化方向,结合Armijo条件计算步长
x k + 1 = x k − τ ∇ f ( x k ) x^{k+1}=x^{k}-\tau \nabla f\left(x^{k}\right) xk+1=xk−τ∇f(xk)

Armijo Condition:
f ( x k ) − f ( x k + α d ) ≥ − c ⋅ α d T ∇ f ( x k ) f\left(x^{k}\right)-f\left(x^{k}+\alpha d\right) \geq-c \cdot \alpha d^{T} \nabla f\left(x^{k}\right) f(xk)−f(xk+αd)≥−c⋅αdT∇f(xk)

37.牛顿法: x k + 1 = x k − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) x^{k+1}=x^{k}-\left[\nabla^{2} f\left(x^{k}\right)\right]^{-1} \nabla f\left(x^{k}\right) xk+1=xk−[∇2f(xk)]−1∇f(xk),牛顿法要求Hessian矩阵非奇异且正定,另外Hessian矩阵的获取和求逆计算可能会非常耗时

38.实际应用中Hessian矩阵正定通常难以保证,工程上当Hessian是半正定时,需要加入一个很小的单位阵就可以将Hessian矩阵改造为正定矩阵: M = ∇ 2 f ( x ) + ϵ I , ϵ = min ⁡ ( 1 , ∥ ∇ f ( x ) ∥ ∞ ) / 10 M=\nabla^{2} f(x)+\epsilon I, \epsilon=\min \left(1,\|\nabla f(x)\|_{\infty}\right) / 10 M=∇2f(x)+ϵI,ϵ=min(1,∥∇f(x)∥∞)/10当梯度接近0,M也会逐渐接近真实的Hessian矩阵,另外,由于改造过后的Hessian矩阵是正定的,可以采用Cholesky分解的方式,来求解牛顿方向: M d = − ∇ f ( x ) , M = L L T M d=-\nabla f(x), \quad M=L L^{T} Md=−∇f(x),M=LLT,从而避免耗时的求逆操作。

当Hessian矩阵是不定的时候,可以采用Bunch-Kaufman分解,即 M = L B L T = ∇ 2 f ( x ) M=L B L^{T}=\nabla^{2} f(x) M=LBLT=∇2f(x),其中B矩阵是一个块对角矩阵,都是由1X1和2X2的小块矩阵构成的,可以很容易地去修改这些小块矩阵的特征值,把他们改成正数。

39.拟牛顿方法:尽可能采用一阶信息还原出二阶信息,从而实现超出一阶方法的收敛速度,同时避免求解目标函数的二阶导数

相关推荐
地平线开发者6 小时前
ReID/OSNet 算法模型量化转换实践
算法·自动驾驶
地平线开发者6 小时前
开发者说|EmbodiedGen:为具身智能打造可交互3D世界生成引擎
算法·自动驾驶
Coovally AI模型快速验证13 小时前
YOLO、DarkNet和深度学习如何让自动驾驶看得清?
深度学习·算法·yolo·cnn·自动驾驶·transformer·无人机
Swaggy T20 小时前
自动驾驶轨迹规划算法——Apollo EM Planner
人工智能·算法·自动驾驶
Monkey PilotX21 小时前
机器人“ChatGPT 时刻”倒计时
人工智能·机器学习·计算机视觉·自动驾驶
luoganttcc21 小时前
L4 级别自动驾驶 硬件架构设计
人工智能·自动驾驶·硬件架构
星创易联2 天前
车载网关助力无人配送车联网解决方案
车载系统·自动驾驶·车载以太网
地平线开发者3 天前
征程 6 | 自定义查表算子实现量化部署
算法·自动驾驶
NewCarRen4 天前
自动驾驶中安全相关机器学习功能的可靠性定义方法
安全·机器学习·自动驾驶
Monkey PilotX4 天前
把 7B 模型塞进车规级芯片:LoRA 在自动驾驶中的极限调参指南
人工智能·机器学习·自动驾驶