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

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

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

相关推荐
开MINI的工科男6 小时前
深蓝学院-- 量产自动驾驶中的规划控制算法 小鹏
人工智能·机器学习·自动驾驶
nfgo18 小时前
Apollo自动驾驶项目(二:cyber框架分析)
人工智能·自动驾驶·unix
机械心1 天前
最优化理论与自动驾驶(十一):基于iLQR的自动驾驶轨迹跟踪算法(c++和python版本)
人工智能·机器学习·自动驾驶
酒饮微醉-1 天前
论文阅读--Planning-oriented Autonomous Driving(一)
论文阅读·笔记·学习·自动驾驶
机械心2 天前
最优化理论与自动驾驶(一):概述
人工智能·算法·自动驾驶
stm32发烧友2 天前
基于人工智能的自动驾驶系统项目教学指南
人工智能·机器学习·自动驾驶
机械心2 天前
最优化理论与自动驾驶(十):纯跟踪算法原理、公式及代码演示
人工智能·机器学习·自动驾驶
gikod3 天前
【智路】智路OS airos-edge
物联网·edge·云计算·自动驾驶·边缘计算·交通物流
学步_技术5 天前
自动驾驶系列—掌握速度,驾驭安全,限速信息提醒功能(SLIF)介绍
人工智能·安全·自动驾驶·slif·智能限速功能
不知道是谁25 天前
百度Apollo打通与ROS的通信,扩展自动驾驶系统生态
机器人·自动驾驶·ros·apollo