最优化方法总结:公式解、数值优化、求解思想

2023-05-16

机器学习的目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的评价函数(目标函数),求解目标函数的极大值或者极小值,以确定模型的参数,从而得到我们想要的模型。

在这三个关键步骤(定义模型,目标函数,求解极值)中,前两个是机器学习要研究的问题,建立数学模型。第三个问题是纯数学问题,即最优化方法。

机器学习要求解的数学模型

1.有监督学习:目标函数的极值

对于有监督学习,我们要找到一个最佳的映射函数f(x),使得对训练样本的损失函数最小化。

N为训练样本数,L是对单个样本的损失函数,w是要求解的模型参数,是映射函数的参数, [公式] 为样本的特征向量, [公式] 为样本的标签值。

2.有监督学习:最大似然估计

或是找到一个最优的概率密度函数p(x),使得对训练样本的对数似然函数极大化(最大似然估计):

 [公式] 是要求解的模型参数,是概率密度函数的参数。

3.无监督学习

以聚类算法为例,算法求解每个类的样本离类中心的距离之和最小化:

在这里k为类型数,x为样本向量, [公式] 为类中心向量, [公式] 为第i个类的样本集合。

4.强化学习

找到一个最优的策略,即状态s到动作a的映射函数(确定性策略,对于非确定性策略,是执行每个动作的概率):

使得任意给定一个状态,执行这个策略函数所确定的动作a之后,得到的累计回报最大化:

这里使用的是状态价值函数。

最优化算法的分类

好的优化算法需要满足:能正确的找到各种情况下的极值点,并且速度快。优化算法分成两种类型:公式解,数值优化。前者给出一个最优化问题精确的公式解,也称为解析解,一般是理论结果。后者是在要给出极值点的精确计算公式非常困难的情况下,用数值计算方法近似求解得到最优点。

下图给出了这些算法的分类与它们之间的关系:

公式解算法

费马定理

对于一个可导函数,寻找其极值的统一做法是寻找导数为0的点,即费马定理。

对于多元函数,则是梯度为0:

导数为0只是函数取得极值的必要条件而不是充分条件,它只是疑似极值点。是不是极值,是极大值还是极小值,还需要看更高阶导数。

对于一元函数,假设x是驻点:

1.如果 [公式] (x)>0,则在该点处去极小值

2.如果 [公式] (x)<0,则在该点处去极大值

3.如果 [公式] (x)=0,还要看更高阶导数

对于多元函数,假设x是驻点:

1.如果Hessian矩阵所有特征值均大于0,矩阵正定,函数在该点有极小值

2.如果Hessian矩阵所有特征值均小于0,矩阵负定,函数在该点有极大值

3.如果Hessian矩阵所有特征值均等于0,矩阵不定,则不是极值点

注意:

1.鞍点:在导数为0的点,函数可能不取极值

2.局部极值:一个驻点是极值点,但不是全局极值

如果我们对最优化问题加以限定,可以有效的避免这两种问题。典型的是凸优化,它要求优化变量的可行域是凸集,目标函数是凸函数。

拉格朗日乘数法

对于带等式约束的极值问题,经典的解决方案是拉格朗日乘数法。

构造拉格朗日乘子函数:

在最优点处对x和乘子变量 [公式] 的导数都必须为0:

机器学习中用到拉格朗日乘数法的地方有:主成分分析、线性判别分析、流形学习中的拉普拉斯特征映射、隐马尔可夫模型。

KKT条件

KKT条件是拉格朗日乘数法的推广,用于求解既带有等式约束,又带有不等式约束的函数极值。对于如下优化问题:

KKT条件构如下乘子函数:

[公式][公式] 称为KKT乘子。在最优解处 [公式] 应该满足如下条件:

等式约束 [公式] ( [公式] )=0和不等式约束 [公式] ( [公式] ) [公式] 0是本身应该满足的约束, [公式]L( [公式] )=0和之前的拉格朗日乘数法一样。唯一多了关于 [公式] (x)的条件:

在机器学习中用到KKT条件的地方有:支持向量机(SVM)。

 

数值优化算法:一阶优化算法

对绝大多数函数来说,梯度等于0的方程组是没法直接解出来的,如方程里面含有指数函数、对数函数之类的超越函数,我们只能求解近似解。如果采用目标函数的一阶导数,则称为一阶优化算法。如果使用了目标函数的二阶导数,则称为二阶优化算法。

工程上实现时通常采用的是迭代法,它从一个初始点 [公式] 开始,反复使用某种规则从 [公式] 移动到下一个点 [公式] ,构造这样一个数列,直到收敛到梯度为0的点处。即有下面的极限成立:

利用一阶导数信息即梯度,或者二阶导数信息即Hessian矩阵。这样迭代法的核心是得到这样的由上一个点确定下一个点的迭代公式:

梯度下降法(又称为最速下降法)

梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。利用了函数的一阶导数信息:

学习率 [公式] 设置为一个非常小的正数,保证迭代之后的 [公式] 位于迭代之前的值 [公式] 的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。

缺点:梯度下降法的收敛取决于设置的学习率的大小,太小则收敛慢,太大则不收敛。

梯度下降法及其变种的应用:深度学习。

动量项

优点:加快梯度下降法的收敛速度,减少震荡。

动量项累积了之前迭代时的梯度值,迭代时沿着之前的惯性方向向前走,加上此项之后的参数更新公式为:

其中 [公式] 是动量项,它取代了之前的梯度项。动量项的计算公式为:

其中 [公式] 是学习率, [公式] 是动量项系数,t时刻的动量项与t+1时刻的梯度值的加权平均值。按照时间t进行展开,则第t次迭代时使用了从1到t次迭代时的所有梯度值, [公式] 系数呈指数级衰减:

AdaGrad算法

AdaGrad算法是梯度下降法最直接的改进。

AdaGrad算法根据前几轮迭代时的历史梯度值动态调整学习率,且优化变量向量x的每一个分量 [公式] 都有自己的学习率。参数更新公式为:

[公式] 是学习率, [公式] 是第t次迭代时参数的梯度向量, [公式] 是一个很小的正数,为了避免除0操作,下标i表示向量的分量。

和标准梯度下降法唯一不同的是多了分母中的这一项,它累积了到本次迭代为止梯度的历史值信息用于生成梯度下降的系数值。历史导数值的绝对值越大,分量学习率越小。

优点:自动变更学习率,(学习率)与(以往参数模和的开方)成反比

缺点:需要人工指定的全局学习率 [公式],长期累积梯度值,分母会越来越大,导致学习率趋向于0,参数无法有效更新。

RMSProp算法

RMSProp算法是对AdaGrad的改进。

由梯度值构造一个向量RMS,初始化为0,按照衰减系数累积了历史的梯度平方值。更新公式为:

AdaGrad直接累加所有历史梯度的平方和,而这里将历史梯度平方值按照 [公式] 衰减之后再累加。参数更新公式为:

其中 [公式] 是人工设定的参数,与AdaGrad一样,这里也需要人工指定的全局学习率 [公式]

优点:缓解学习率下降较快(AdaGrad)

缺点:需要人工指定的全局学习率 [公式]

AdaDelta算法

AdaDelta算法也是对AdaGrad的改进,避免了长期累积梯度值所导致的学习率趋向于0的问题,另外,还去掉了对人工设置的全局学习率的依赖。

假设要优化的参数为x,梯度下降法第t次迭代时计算出来的参数梯度值为 [公式] 。算法首先初始化如下两个向量为0向量:

其中E[ [公式] ]是梯度平方(对每个分量分别平分)的累计值,更新公式为:

[公式] 是向量每个元素分别计算平方,后面所有的计算公式都是对向量的每个分量进行。接下来计算如下RMS量:

计算参数的更新值:

RMS [公式] 的计算公式和这个类似。这个更新值同样通过梯度来构造,只不过学习率是通过梯度的历史值确定的。更新公式为:

参数更新的迭代公式为:

优点:避免了长期累积梯度值所导致的学习率趋向于0的问题,去掉了人工设置的全局学习率的依赖。

Adam算法

Adam算法整合了自适应学习率v(累积了梯度的平方和)与动量项m。它们的初始值为0,更新公式为:

其中 [公式][公式] 是人工指定的参数,i为向量的分量下标。依靠这两个值构造参数的更新值,参数的更新公式为:

优点:利用一阶矩估计和二阶矩估计来动态调整每个参数的学习率,偏置校正后,学习率的迭代有范围,较为平稳。

随机梯度下降法、批量梯度下降

基于梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

为了降低计算成本,批量随机梯度下降法在每次迭代中使用随机逼近值,即只使用M个随机选择的样本来近似计算损失函数。在每次迭代时要优化的目标函数为:

L(w, [公式] , [公式] )是对单个训练样本( [公式] , [公式] )的损失函数,w是需要学习的参数,r(w)是正则化项, [公式] 是正则化项的权重。

随机梯度下降法在概率意义下收敛。

 

数值优化算法:二阶优化算法

牛顿法

牛顿法利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为:

其中H为Hessian矩阵,g为梯度向量。学习率 [公式] 设置为一个非常小的正数,通常采用直线搜索(line search)技术,保证迭代之后的 [公式] 位于迭代之前的值 [公式] 的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。

在实现时,一般不直接求Hessian矩阵的逆矩阵,而是求解下面的线性方程组:

其解d称为牛顿方向。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。

应用:logistic回归,AdaBoost算法

优点:比梯度下降法有更快的收敛速度,收敛速度快,迭代次数少

缺点:不能保证每次迭代时函数值下降;也不能保证收敛到极小值点;靠近极小值时收敛速度减慢,可能会“之字形”地下降;需要设置学习率(line search);Hessian矩阵很稠密时,每次迭代计算Hessian矩阵的计算量很大,随着数据规模增大,Hessian矩阵也会变大,需要更多的存储空间以及计算量;Hessian矩阵不可逆则该方法失效。

 

拟牛顿法

构造一个近似Hessian矩阵或其逆矩阵的正定对称矩阵,用该矩阵进行牛顿法的迭代。

引入了Hessian矩阵的近似矩阵,避免了每次都计算Hessian矩阵的逆,在拟牛顿法中搜索,用Hessian矩阵的逆矩阵来代替Hessian矩阵,虽然不能像牛顿法那样保证最优化的方向,但其逆矩阵始终是正定的,因此算法始终朝最优化的方向。

优点:构造近似Hessian矩阵逆的矩阵

可信域牛顿法

调整牛顿方向的步长来实现收敛到最优解和序列递减,目前常用的方法有两种:直线搜索和可信区域法。可信域牛顿法是截断牛顿法的一个变种,用于求解带界限约束的最优化问题。在可信域牛顿法的每一步迭代中,有一个迭代序列 [公式] ,一个可信域的大小 [公式] ,以及一个二次目标函数:

这个式子可以通过泰勒展开得到,忽略二次以上的项,这是对函数下降值的近似:

算法寻找一个 [公式] ,在满足约束条件丨丨s丨丨 [公式][公式] 下近似最小化 [公式] (s)。接下来检查比值以更新 [公式][公式]

[公式][公式] 是函数值的实际减少量和二次近似模型预测方向导致的函数减少量的比值。根据之前的计算结果,再动态调整可信域的大小。

应用:logistic回归,线性支持向量的求解(liblinear开源库)。

 

求解思想:分治法

分治法是一种算法设计思想,它将一个大的问题分解成子问题进行求解。根据子问题解构造出整个问题的解。在最优化方法中,具体做法是每次迭代时只调整优化向量x的一部分分量,其他的分量固定住不动。

坐标下降法

坐标下降法的基本思想是每次对一个变量进行优化,这是一种分治法。假设要求解的优化问题为:

坐标下降法求解流程为每次选择一个分量 [公式] 进行优化,将其他分量固定住不动,这样将一个多元函数的极值问题转换为一元函数的极值问题。如果要求解的问题规模很大,这种做法能有效的加快速度。

应用:logistic回归,线性支持向量的求解(liblinear开源库)。

SMO算法

SMO算法也是一种分治法,用于求解支持向量机的对偶问题。加上松弛变量和核函数后的对偶问题为:

SMO算法的核心思想是每次在优化变量中挑出两个分量 [公式][公式] 进行优化,让其他分量固定即当成常数,这样能保证满足等式约束条件。之所以要选择两个变量进行优化而不是选择一个变量,是因为这里有等式约束,如果只调整一个变量的值,将会破坏等式约束。

分阶段优化

分阶段优化的做法是在每次迭代时,先固定住优化变量x一部分分量a不动,对另外一部分变量b进行优化;然后再固定住b不动,对b进行优化。如此反复,直至收敛到最优解处。

AdaBoost算法是这种方法的典型代表。AdaBoost算法在训练时采用了指数损失函数:

由于强分类器是多个弱分类器f的加权和,代入上面的损失函数中,得到算法训练时要优化的目标函数为:

指数损失函数包含已有的强分类器 [公式] 和当前弱分类器f对训练样本的损失函数。把强分类器看作常数,目标函数简化为:

分两步求解,首先将弱分类器权重 [公式] 看成常数,得到最优的弱分类器f。得到弱分类器之后,再优化它的权重系数 [公式]

动态规划算法

将一个问题分解成子问题求解,如果整个问题的某个解是最优的,则这个解的任意一部分也是子问题的最优解。这样通过求解子问题,得到最优解,逐步扩展,最后得到整个问题的最优解。

应用:隐马尔可夫模型的解码算法(维特比算法),强化学习中的动态规划算法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最优化方法总结:公式解、数值优化、求解思想 的相关文章

  • 物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

    1 前言 xff1a 在对物联网网关进行压测的时候 xff0c 发现在腾讯云部署网关程序 xff0c 设备接入数量只能达到4000多个长连接 xff0c 之后就再也无法接入终端了 之前在阿里云部署的时候明明可以到达2万左右 xff0c 而且
  • Prometheus从入门到跑路

    1 prometheus框架结构 2 prometheus组件介绍 2 1 Prometheus Server 这是Prometheus的服务端 xff0c 也就是核心 Prometheus本身是一个以进程方式启动 xff0c 之后以多进程
  • ucos-ii学习笔记1 创建任务&&任务调度

    span style font family none font size 12px background color rgb 255 255 255 span span 最近在学习嵌入式系统 xff0c 听说ucos ii是使用最广 xf
  • ucos ii学习笔记2 邮箱&&信息量

    上一篇说了ucos ii的大致运行原理 xff0c 这一篇主要用来说明不同任务之间的数据传递的 有人会说 xff1a 不同任务间的数据传递直接用全局变量不就好了 xff0c 我一开始也有这种疑惑 xff0c 也在简单程序中实验过没什么问题
  • ucos ii学习笔记4 软件定时器

    span span p span style font size 18px span span ucos ii从V2 83版本以后加入了软件定时器 xff0c 软件定时器的最快时钟节拍就等于ucos ii的系统时钟节拍 xff0c 由一个单
  • 时钟源关系初解

    最近发现自己对时钟的各种关系不是很清晰 xff0c 所以在这里初步的顺一下 以STM32F4为例 xff0c 大概都差不多 STM32F4有5个时钟源 xff0c 分别是HSI HSE LSI LSE PLL 从名字上看出HSI和HSE是高
  • up-board

    安装ubuntu16 04 安装board内核 http www eeboard com bbs thread 59222 1 1 html 对管脚的控制 http www eeboard com bbs thread 59257 1 1
  • 【嵌入式软件实习】找实习和电话面试记录与总结

    前言 前一段时间就是非常想找实习 xff0c 这次是接到了一家还算是比较大的公司的面试通知和实习offer 做一下简单的记录给在找实习的大家一个参考吧 主要内容为 xff1a 三连即可提高学习效率0 0 x1f9d1 x1f3fb 作者简介
  • Ubuntu更换apt镜像源

    原文 xff1a Ubuntu更换apt镜像源 在ubuntu中 xff0c 默认使用 ubuntu 的官方源http archive ubuntu com xff0c 但是这个官方源在国内下载的速度太慢 xff0c 甚至只有几十k 于是考
  • JS 闭包 详细说明(教程)

    首先 xff0c 闭包是一个高阶函数 xff0c 高阶函数除了可以接受函数作为参数外 xff0c 还可以把函数作为结果值返回 xff08 不知道高阶函数是啥 xff0c 点击链接 xff09 先通过一个例子来了解一下如何把函数作为结果值返回
  • STVP烧录程序

    STVP介绍 STVD xff1a ST Visual Develop xff0c 可视化开发工具STVP xff1a ST Visual Programmer xff0c 可视化编程工具 xff0c stvp主要打开一些固件 hex s1
  • 传感器标定系列——Kalibr工具

    文章目录 Kalibr介绍安装资源 Kalibr介绍 Kalibr is a toolbox that solves the following calibration problems 多相机标定 Multi Camera Calibra
  • TCP传输图片及多线程

    最终效果图 xff1a 注意 xff1a 图片发送大体流程同 Qt网络编程 TCP IP 一 只是在发送时这里采用 的 数据流QDataStream形式 因为使用摄像进行监控时也是对一帧一帧的图片进 行处理 xff0c 因此掌握了如何用Qt
  • GCC编译过程及基本命令总结

    一 GCC简介 GCC即GNU Compiler Collection xff0c 原本只是针对C语言的编译工具 xff0c 现在已经变成了一个工具集 xff0c 包含了C C 43 43 JAVA等语言的集合体 管理和维护 xff1a 由
  • 第一章 PX4-Pixhawk-程序编译过程解析

    第一章 PX4程序编译过程解析 PX4 是一款软硬件开源的项目 xff0c 目的在于学习和研究 其中也有比较好的编程习惯 xff0c 大家不妨可以学习一下国外牛人的编程习惯 这个项目是苏黎世联邦理工大学的一个实验室搞出来的 该方案是基于 N
  • 第二章 PX4-Pixhawk-RCS启动文件解析

    第二章 PX4 RCS 启动文件解析 RCS 的启动类似于 linux 的 shell 文件 xff0c 如果不知道 shell 文件是什么东西可以理解成是为程序的流程框 xff0c 它是告诉处理器应该怎么样去运行 xff0c 前一章介绍的
  • 第三章 PX4-Pixhawk-SPI底层驱动解析

    第三章 PX4 SPI 底层驱动解析 这一章节我们会对 PX4 的底层驱动进行解析 xff0c 我们这里主要解析的是 SPI 协议 xff0c 因为这个协议是所有传感器的一个协议 xff0c 至于 IIC 和串口就可以类似的读写一下 xff
  • 第四章 PX4-Pixhawk-MPU6000传感器驱动解析

    第四章MPU6000传感器驱动解析 Mpu6000 是一个 3 轴加速度和 3 轴陀螺仪传感器 xff0c 这一章节我们将对 MPU6000 这个传感器进行解析 xff0c 依照这个解析步骤同样可以对 L3GD20 xff08 3 轴陀螺仪
  • 第五章 PX4-Pixhawk-GPS解析

    第五章 PX4 GPS解析 在上一章节我们对传感器MPU6000做了一个解析 xff0c MPU6000所支持的协议是SPI 这一章节我们来解析GPS xff0c GPS使用的是串口通信 这里我们着重讲解UBLOX的解析过程 xff0c 并
  • 第六章 PX4-Pixhawk-Sensors解析

    xfeff xfeff 第六章 PX4 Sensors 解析 这一章节并不难 xff0c 也很容易理解 xff0c 但是这一章节有几个函数需要我们去理解一下 xff0c 所以这里我们这里写一章来说明一下 Sensors 是所有传感器进行数据

随机推荐

  • 第七章 PX4-Pixhawk-Mavlink解析

    xfeff xfeff 第七章 PX4 Mavlink 解析 首先我们是还是来说一说 mavlink 吧 Mavlink 协议是无人机的一种开源通信协议 可以理解就是按照一定的格式来发送数据 这一章节涉及到了消息的打包发送和接收解析 首先我
  • STM8S 低功耗模式

    功耗控制的概念调整 功耗控制之硬件调整 在硬件体系中可以有以下优化手段 xff1a 优化电路设计优化电源供电效率 xff08 减少用于发热的能源 xff09 调节单片机时钟频率 xff08 频率越高功耗越高 xff09 选择单片机或者外围的
  • 第八章 PX4-Pixhawk-SDlog解析

    xfeff xfeff 第八章 PX4 SDlog 解析 这一章节我们对 SD 存储卡来进行解析 SD 卡涉及到 log 日志 xff0c 在很多飞行中 log 文件非常重要的 xff0c 尤其是新手在炸机过程中有了这些数据我们基本上就能分
  • 第九章 PX4-pixhawk-姿态估计解析

    第九章 PX4 pixhawk 姿态估计解析 这一章节我们对姿态估计进行解析 xff0c 这一章节涉及到算法 xff0c 主要涉及到的还是DCM 方向余弦 算法 首先我们还从启动文件开始进行讲解 我们找到rc mc apps中 xff0c
  • 第十章 PX4-Pixhawk-姿态控制

    第十章 PX4 Pixhawk 姿态控制 这一章节我们对姿态控制进行解析 xff0c 姿态解算我们还是从启动文件开始 xff0c 找到姿态解算的启动文件rc mc app 这里面找到姿态解算的启动项为mc att control start
  • 第十一章 PX4-Pixhawk-LPE位置估计

    xfeff xfeff 位置估计的解析我们还是遵循源代码的规则 xff0c 至于组合惯导和扩展卡尔曼我们以后慢慢分析 xff0c 这里主要还是对源代码来进行解析 在前一章节我们找到SYS MC EST GROUP参数设置的是1 xff0c
  • Prometheus + Grafana 接入实践

    文章目录 Prometheus 系统监控数据模型jobs安装 Grafana 可视化应用监控接入exporter 接入应用中集成 prometheus client 告警 Alertmanager参考 Prometheus 系统监控 Pro
  • docker 使用实践

    文章目录 准备环境安装运行配置环境使用镜像加速器修改 docker 目录翻墙设置代理限制容器 log 大小 操作命令基本命令容器网络网络模式容器连接外部外部连接容器容器互联 数据管理数据卷数据卷容器 挂载本机目录 镜像构建使用 docker
  • FreeRTOS 软定时器实现

    64 嵌入式 简述使用定时器 配置定时器服务任务创建 启动 停止定时器修改定时器获取定时器状态 定时器实现 数据结构 定时器控制块定时器管理链表命令队列 定时器服务任务 回调定时器处理节拍计数器溢出命令处理 参考 FreeRtos 简述 考
  • FreeRTOS 消息队列

    64 嵌入式 简述Queue 使用 创建一个消息队列发送消息 接受消息 Queue 实现 数据结构队列创建发送消息 任务中调用发送函数中断中调用发送函数 接收消息 参考 FreeRtos 简述 FreeRTOS 任务间通信方式有 消息通知
  • shell 当前工作目录的绝对路径

    64 Linux 命令脚本 编写脚本中 xff0c 需要获取执行脚本的绝对路径 xff0c 今天写脚本的时候不小心踩了个坑 xff0c 记录下 那个坑的脚本大概是这样的 xff1a span class hljs shebang bin b
  • 基于opentracing + jaeger 实现全链路追踪

    文章目录 链路追踪OpenTracingTrace 和 sapn Inject 和 Extract 操作 Sampling 采样 OpenTracing 多语言支持 链路追踪 当代互联网服务 xff0c 通常都是用复杂 xff0c 大规模分
  • STM32G030F6P6 CubeMX和keil5开发环境的搭建

    规格了解 封装 xff1a TSSOP 20内核 xff1a Arm 32 位 Cortex M0 43 CPU工作电源电压 xff1a 2 V to 3 6 VCPU频率 xff1a 64 MHzFlash存储器 xff1a 32KBRA
  • 卡尔曼滤波(KF)与扩展卡尔曼滤波(EKF)的一种理解思路及相应推导(1)

    前言 xff1a 从上个世纪卡尔曼滤波理论被提出 xff0c 卡尔曼滤波在控制论与信息论的连接上做出了卓越的贡献 为了得出准确的下一时刻状态真值 xff0c 我们常常使用卡尔曼滤波 扩展卡尔曼滤波 无迹卡尔曼滤波 粒子滤波等等方法 xff0
  • STM32工程文件组成结构

    STM32工程文件目录结构 以LED流水灯程序为例 1 CMSIS 内核驱动程序 包含c文件 xff0c ST公司官方提供的 xff0c 对arm内核和mcu系统的基础文件 xff0c 一般不做修改 2 LIB 内部功能的基本函数库 包含c
  • nvidia jetson xavier nx与agx xavier和tx2对比

    1 性能比AGX xavier低 xff0c 但体积更小 xff08 nx为70 x 45 mm xff0c AGX xavier为100 x 87 mm xff09 2 性能是TX2和jetson Nano的10倍 3 安装ubuntu系
  • 总结:单独标定IMU的工具包(kalibr_allan,imu_tk,imu_utils)

    目录 一 常用开源IMU标定工具包汇总 kalibr allan imu tk imu utils imu tk与imu utils的区别 二 使用kalibr allan计算imu误差 参考 xff1a 下载 xff1a 安装 xff1a
  • git使用总结

    Git使用总结 1 本地更新代码前忘记拉取 pull 最新代码 本地对代码进行了修改 xff0c 但是忘记拉取最新版本的代码 这时想要拉最新的代码时 xff0c git pull origin branch name xff0c 会提示你
  • matlab中im2bw函数的用法

    matlab中DIP工具箱函数im2bw使用阈值 xff08 threshold xff09 变换法把灰度图像 xff08 grayscale image xff09 转换成二值图像 所谓二值图像 xff0c 一般意义上是指只有纯黑 xff
  • 最优化方法总结:公式解、数值优化、求解思想

    机器学习的目标是给出一个模型 xff08 一般是映射函数 xff09 xff0c 然后定义对这个模型好坏的评价函数 xff08 目标函数 xff09 xff0c 求解目标函数的极大值或者极小值 xff0c 以确定模型的参数 xff0c 从而