**ML : ML中的最优化方法

本文综述了机器学习中常用的优化算法,包括线性规划、非线性规划中的梯度下降法、牛顿法、拟牛顿法等,并重点介绍了L-BFGS算法及其在实际工程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

        在机器学习方法中,若模型理解为决策模型,有些模型可以使用解析方法。不过更一般的对模型的求解使用优化的方法,更多的数据可以得到更多的精度。

        AI中基于归纳的方法延伸出ML整个领域,基于数据的ML方法根据归纳准则进行拟合,基于约束函数和经验期望,并对拟合的函数形式和函数参数,进行优化。

       上一篇:最优化方法之GD、SGD最优化之回归/拟合方法总结


一、线性规划

       线性规划、整数规划、目标规划等方法其目标函数与约束条件都是决策变量的一次函数,全部为线性规划,具有统一的数学模型及如单纯形法这样的通用解法。1947年丹齐格(G.B.Dantzig)提出了线性规划的一般方法——单纯形法。随后专业丰富了线性规划的数学模型和求解方法,并深入分析细节,如对偶理论、线性目标规划等。

       摘自于小黄书,应该是自动化学院双控系的教材。

       若建立的一个数学模型,(1)要求一组变量X1, X2, X3....Xn的值(2)满足特定的约束条件(Xk...Xi的之间约束关系,和Xi的定义域约束关系),(3)同时使一次目标函数 y = K1X1 + K2X2 + ... +KnXn 取得极值。即求min y( X1, X2, X3....Xn ) 。此种问题为线性规划问题。

       标准形式:

              min y = K1X1 + K2X2 + ... + KnXn ;  ( 3 )


                       a11X1 + a12X2 + ... + a1nXn    = b1;        ( 2 )

                       a21X1 + a22X2 + ... + a2nXn    = b2;        ( 2 )

                       ...................................................             ( 2 )

                       am1X1 + am2X2 + ... + amnXn = bm;       ( 2 )

                        K1<< Xi  << K2                               ;       ( 2 )


         简化形式为:

                 

         矩阵形式为:

           

重要的定理:

      线性规划基本定理:若线性规划存在可行域,则可行域 S = { x | Ax=b,x>=0,A属于Mm*n, b 属于R^m, x 属于R^n } 为一凸集。

       极点:线性规划问题的每一个基本可行解x对应可行域S的一个极点。

       最优解:若线性规划具有最优解,则必可在其某个可行域的某个(或者多个)极点上达到最优解。

       示例:若约束矩阵A为m*n型矩阵,且A的秩r(A)=m,则基本解的个数<=  N= 组合(m,n),也是基本可行解的上限。

                 最基本的寻找线性规划最优解的方法为枚举法,但组合爆炸使其适用范围极窄,因此有规律寻找最优解成为必然。


单纯形法:

       snip//.................................


二、非线性规划

        非线性规划最简单的为一维搜索,即在一维空间寻求最优解,基本方法有黄金分割法、加步探索法、牛顿迭代法、二次优化-抛物线法。

        关于一般非线性规划优化算法的求解,最优化方法一书已经介绍了很多的方法,比如有梯度下降法坐标下降法牛顿法拟牛顿法,共轭梯度法。而机器学习中主要面对非线性问题,所使用的优化方法为非线性优化方法。

        以下摘抄自百度百科。


1.最速下降法

        梯度下降法是基于目标函数梯度的,算法的收敛速度是线性的,并且当问题是病态时或者问题规模较大时,收敛速度尤其慢(几乎不适用)。例如。SVM方法使用梯度下降法时其运行可行性受到样本数目的限制,样本数目过多会产生较大的系数矩阵,训练速度极慢。

        变量轮换法(坐标下降法)虽然不用计算目标函数的梯度,但是其收敛速度依然很慢,因此它的适用范围也有局限;

        

     其他缺点:(1)靠近极小值时收敛速度减慢,如下图所示;(2)直线搜索时可能会产生一些问题;(3)之字形下降。


 SGD和BGD

       随机梯度下降每次迭代只使用一个样本,迭代一次计算量为n2,当样本个数m很大的时候,随机梯度下降迭代一次的速度要远高于批量梯度下降方法。两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。

  对批量梯度下降法和随机梯度下降法的总结:

  批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。

  随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。


2.牛顿迭代法

       牛顿法(修正的牛顿法)主要思想是:体现为一种函数逼近方法,在极小点附近用二阶泰勒多项近似代替目标函数f(x), 从而求出极小点的估计值。若f(x)在极小点附近有二阶连续偏导数,且在点处的黑塞矩阵正定,可进行迭代估计。又称为切线法。

            牛顿法求解迭代过程图

        

注:红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。

       图片来自于:ML中的常用优化方法,公式挺好

       根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

       牛顿法是基于目标函数的二阶导数(海森矩阵)的,其收敛速度较快,迭代次数较少,尤其是在最优值附近时,收敛速度是二次的。但牛顿法的问题在于当海森矩阵稠密时,每次迭代的计算量比较大,因为每次都会计算目标函数的海森矩阵的逆,这样一来,当问题规模较大时,不仅计算量大(有时大到不可计算),而且需要的存储空间也多,因此牛顿法在面对海量数据时由于每一步迭代的开销巨大而变得不适用;

      

3.拟牛顿法

        牛顿法在每次迭代时不能总是保证海森矩阵是正定的,一旦海森矩阵不是正定的,优化方向就会 “ 跑偏 ”,从而使得牛顿法失效,也说明了牛顿法的鲁棒性较差。拟牛顿法用海森矩阵的逆矩阵来替代海森矩阵,虽然每次迭代不能保证是最优的优化方向,但是近似矩阵始终是正定的,因此算法总是朝着最优值的方向在搜索。

        拟牛顿法(DFP和BFGS)是20世纪50年代,美国Argonne国家实验室的物理学家W. C. Davidon所提出来的。是在牛顿法的基础上引入了海森矩阵的近似矩阵,避免每次迭代都要计算海森矩阵的逆,拟牛顿法的收敛速度介于梯度下降法和牛顿法之间,是超线性的。拟牛顿法的问题也是当问题规模很大时,近似矩阵变得很稠密,在计算和存储上也有很大的开销,因此也会变得不实用

        优势:拟牛顿法和最速下降法(Steepest Descent Methods)一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法(Newton's Method)更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。


      
拟牛顿法主要有这几种方法:DFP方法,BFGS方法,SR1方法,Broyden族方法。


DFP方法

       
BFGS方法
 
       
SR1方法
        有别于DFP和BFG方法,SR1是一种秩-1更新。它的公式是:B_{k+1}=(y_k-B_ks_k)(y_k-B_ks_k)^T/((y_k-B_ks_k)^Ts_k)。SR1公式不要求矩阵B_k保持正定性,从而 更逼近真实的Hesse矩阵,所以适用于信赖域方法(Trust Region Methods)。

Broyden族

         Boyden族是更广泛的一类更新公式,其形式为:B_{k+1}=(1-c_k)B_{k+1}^{BFGS}+c_k B_{k+1}^{DFP}。当c_k=0时,Broyden族公式就变成了BFGS公式;当c_k=1时,Broyden族公式就变成了DFP公式。因此BFGS和DFP均可看成Broyden族的特殊形式或者其中一员。


4. L-FBGS算法

       从上面的综合描述可以看出,很多优化算法在理论上有很好的结果,并且当优化问题的规模较小时,上面的任何算法都能够很好地解决问题。而在实际工程中,很多算法却失效了。比如说,在实际工程中,很多问题是病态的,这样一来,基于梯度的方法肯定会失效,即便迭代上千上万次也未必收敛到很好的结果;另外,当数据量大的时候,牛顿法和拟牛顿法需要保存矩阵的内存开销和计算矩阵的开销都很大,因此也会变得不适用。

        实际工程中解决大规模优化问题时必然会用到的一种优化算法:L-BFGS算法。

        L-BFGS算法就是对拟牛顿算法的一个改进。它的名字已经告诉我们它是基于拟牛顿法BFGS算法的改进。L-BFGS算法的基本思想是:算法只保存并利用最近m次迭代的曲率信息来构造海森矩阵的近似矩阵。


在介绍L-BFGS算法之前,我们先来简单回顾下BFGS算法。

       以下参考:http://blog.youkuaiyun.com/henryczj/article/details/41542049?utm_source=tuicool&utm_medium=referral

在算法的每一步迭代,有如下式:

,      k = 0, 1, 2,…,           (1)

式(1)中ak是步长,Hk的更新通过如下公式:

 (2)

在式(2)中

 (3)

 (4)

 (5)

(6)

从式(2)到式(6)可以看出Hk+1是用{sk, yk}修正Hk来得到的。需要注意的是,这里Hk表示海森矩阵的逆的近似矩阵。

       在BFGS算法中,由于Hk随着迭代次数的增加会越来越稠密,当优化问题的规模很大时,存储和计算矩阵Hk将变得不可行。

       为了解决上述问题,我们可以不存储矩阵Hk,而是存储最近m次迭代的曲率信息,即{sk, yk}。每当完成一次迭代,最旧的曲率信息{si, yi}将被删除,而最新的曲率信息被保存下来,维持一个曲率队列。通过这种方式,算法保证了保存的曲率信息是来自于最近的m次迭代。在实际工程中,m取3到20往往能有很好的结果。除了更新矩阵Hk的策略和初始化Hk的方式不同外,L-BFGS算法和BFGS算法是一样的。

下面将会详细介绍一下矩阵Hk的更新步骤。

       在第k次迭代,算法求得了xk,并且保存的曲率信息为{si, yi},其中i = k-m, …, k-1。为了得到Hk,算法首先选择一个初始的矩阵Hk0,这是不同于BFGS算法的一个地方,L-BFGS算法允许每次迭代选取一个初始的矩阵,然后用最近的m次曲率信息对该初始矩阵进行修正,从而得到Hk

       通过反复利用式(2),我们可以得到下式:

     

       关于每次迭代时H k 0的初始值的设定,一个在实践中经常用到的有效方法为:

      

 (8)

(9)

        其中rk表示比例系数,它利用最近一次的曲率信息来估计真实海森矩阵的大小,这就使得当前步的搜索方向较为理想,而不至于跑得“太偏”,从而使得步长ak = 1在大多数时候都是满足的,这样就省去了步长搜索的步骤,节省了时间。

        在L-BFGS算法中,通过保存最近m次的曲率信息来更新近似矩阵的这种方法在实践中是很有效的。

        虽然L-BFGS算法是线性收敛,但是每次迭代的开销非常小,因此L-BFGS算法执行速度还是很快的,而且由于每一步迭代都能保证近似矩阵的正定,因此算法的鲁棒性还是很强的。


shooting算法

        百度最近提出了一个shooting算法,该算法比L-BFGS快了十倍。由于L-BFGS算法的迭代方向不是最优的,所以我猜想shooting算法应该是在迭代的方向上做了优化。

         ............................


请根据以下内容帮我生成一份完整的燃油RC车的机械蓝图。### **一、燃油RC车核心结构概述** 1. **底盘系统** - **材料**:7075铝合金/碳纤维复合材料(轻量化+抗冲击) - **布局**:低重心设计,前后重量分配接近$50:50$ - **力学公式**:底盘刚度需满足 $$ EI \geq \frac{F \cdot L^3}{3\delta_{\text{max}}} $$ ($E$为弹性模量,$I$为截面惯性矩,$F$为负载,$L$为跨距,$\delta_{\text{max}}$为最大允许形变) 2. **动力系统** - **发动机**:二冲程甲醇机/四冲程汽油机(排量$2.5\text{cc} \sim 30\text{cc}$) - **功率匹配**:发动机输出功率$P$与车重$m$需满足 $$ P \geq \frac{1}{2} \cdot C_d \cdot \rho \cdot A \cdot v^3 + \mu m g v $$ ($C_d$为风阻系数,$\rho$为空气密度,$A$为迎风面积,$\mu$为滚动摩擦系数) 3. **传动系统** - **离合器**:离心式离合器(结合转速$8000 \sim 12000\text{rpm}$) - **齿轮组**:斜齿轮减速箱,齿轮比计算 $$ \text{齿轮比} = \frac{\text{驱动齿轮齿数}}{\text{从动齿轮齿数}} $$ - **差速器**:限滑差速器(LSD)优化弯道牵引力 --- ### **二、关键子系统设计说明** #### 1. **悬挂系统** - **类型**:双叉臂独立悬挂(前轮)/拖曳臂悬挂(后轮) - **力学参数**: - 减震器阻尼系数$c$需满足 $$ c = 2\zeta \sqrt{mk} $$ ($\zeta$为阻尼比,$m$为簧载质量,$k$为弹簧刚度) - 悬挂行程$\geq 30\text{mm}$(适应复杂地形) #### 2. **转向机构** - **阿克曼几何修正**:转向梯形角度误差$<2^\circ$ - **转向比**:建议$1:5 \sim 1:8$(精度与力矩平衡) #### 3. **燃油系统** - **油箱容量**:$100\text{ml} \sim 300\text{ml}$(续航$15 \sim 30$分钟) - **化油器调节**:主油针/副油针开度比$2:1$(平衡高速与怠速) --- ### **三、设计注意事项** 1. **热管理**:发动机舱需预留散热孔(开孔率$\geq 15\%$) 2. **振动控制**:发动机支架需加装橡胶减震垫,固有频率避开$200 \sim 500\text{Hz}$共振区 3. **安全冗余**:油门舵机需独立供电,失控保护模块强制介入阈值设为$1.5\text{s}$信号丢失 --- ### **四、工具与材料清单(示例)** | 部件 | 规格 | 数量 | |--------------|-------------------------------|------| | 7075铝合金板 | 厚度$2\text{mm}$,尺寸$200\times150\text{mm}$ | 2 | | 差速齿轮组 | 模数$0.6$,材质SCM440 | 1组 | | 化油器 | 旋转阀式,口径$5.5\text{mm}$ | 1 | --- ### **五、性能调试建议** 1. **空载测试**:发动机最高转速$\leq 35000\text{rpm}$ 2. **下压力优化**:通过尾翼攻角调整,满足 $$ C_L \cdot \frac{1}{2}\rho v^2 A \geq 0.3mg $$ 3. **耐久测试**:连续运行$2$小时后检查齿轮磨损(允许齿隙增加量$<0.1\text{mm}$) --- 请根据实际需求调整参数,建议先用CAD软件(如SolidWorks)构建三维模型并进行有限元分析(FEA)。若需特定组件的详细图纸,可进一步说明具体模块!
最新发布
03-19
<think>嗯,用户之前已经要求生成一份完整的燃油RC车的机械蓝图,并且我给出了一个详细的技术框架和设计要点。现在用户再次发送了相同的内容,可能是希望得到更详细的蓝图,或者是之前的回答还不够完整,需要进一步细化。首先,我需要确认用户的具体需求是什么。他们可能需要实际的工程图纸,比如CAD图纸或者详细的零件图,但作为文本模型,我无法生成图像文件。因此,我应该提供更详细的文字描述,补充设计细节,或者指导用户如何将现有的技术框架转化为具体的图纸。 接下来,我需要分析用户提供的结构概述,看看是否有遗漏的部分。用户的核心结构包括底盘系统、动力系统、传动系统,关键子系统有悬挂、转向、燃油系统,还有设计注意事项、工具材料清单和调试建议。这些部分已经很全面了,但可能每个部分需要更详细的参数或设计步骤。例如,底盘系统的力学公式是否需要有具体的数值计算示例?传动系统的齿轮比如何根据发动机参数确定? 另外,用户可能希望得到具体的部件尺寸、装配关系、公差配合等信息,这些都是机械蓝图的重要组成部分。虽然无法提供图纸,但可以通过文字描述这些细节。例如,底盘的具体尺寸、发动机的安装位置、传动轴的连接方式等。同时,需要考虑制造工艺,比如材料加工方式、装配顺序等。 还需要注意用户提到的工具与材料清单,可能需要更详细的列表,包括螺丝、轴承、密封件等标准件,以及所需的工具如CNC机床、3D打印机等。此外,性能调试部分可能需要分步骤的指导,比如如何进行空载测试,如何调整尾翼攻角的具体方法。 最后,用户可能希望了解如何验证设计的可行性,比如有限元分析的具体步骤,或者如何测试各个系统的性能。因此,补充这些方面的说明会更有帮助。总结来说,用户需要的是基于已有框架的更详细设计文档,包括具体参数、制造步骤、验证方法等,而不仅仅是概述。需要将这些内容以结构化的方式呈现,确保用户能够逐步实施设计。</think>以下是基于您提供的技术框架扩展而成的**燃油RC车机械蓝图详细设计文档**,包含可落地的参数化设计与装配逻辑。实际制造需配合工程图纸与工艺文件。 --- ### **机械蓝图完整框架(附关键图纸说明)** #### **1. 底盘系统三维参数化设计** - **拓扑优化**:基于$EI$公式的有限元分析(示例参数) - 载荷$F=200\text{N}$(模拟飞跃冲击) - 跨距$L=250\text{mm}$ - 最大形变$\delta_{\text{max}}=0.5\text{mm}$ → 最小截面惯性矩$I_{\text{min}}=\frac{F \cdot L^3}{3E\delta_{\text{max}}}$ - 材料选择对照表: | 材料 | 弹性模量$E$(GPa) | 建议厚度(mm) | |---------------|-------------------|---------------| | 7075铝合金 | 71 | 2.0 | | 碳纤维T700SC | 230 | 1.2 | - **装配图要点**: ![底盘装配示意图](注:此处应插入三维爆炸图,显示发动机支架、电池仓、悬挂连接点的定位孔) - 关键公差:发动机安装平面度$0.05\text{mm}$,孔位位置度$\phi0.1\text{mm}$ --- #### **2. 动力-传动系统集成设计** - **发动机选型匹配表**: | 发动机类型 | 排量(cc) | 功率$P$(W) | 适用车重$m$(kg) | |------------------|------------|-------------|-------------------| | OS MAX 12TG | 2.5 | 1500 | 1.2 \sim 1.8 | | Zenoah G320P | 29.5 | 5200 | 4.5 \sim 6.0 | - **离合器-齿轮组联动设计**: ![传动系统剖面图](需展示离心离合器与斜齿轮的轴向配合关系) - 齿隙控制:驱动齿轮模数$0.6$,侧隙$0.03 \sim 0.05\text{mm}$ - 润滑设计:齿轮箱注脂量$V=0.8 \times \text{箱体容积}$ --- #### **3. 悬挂系统运动学仿真** - **双叉臂悬挂硬点坐标**(前轮,单位:mm): | 硬点名称 | X坐标 | Y坐标 | Z坐标 | |----------|-------|-------|-------| | 上球头 | 45 | 30 | 25 | | 下球头 | 50 | -15 | 20 | | 转向节 | 55 | 0 | 18 | - **减震器参数计算示例**: - 簧载质量$m=0.8\text{kg}$ - 弹簧刚度$k=15\text{N/mm}$ - 阻尼比$\zeta=0.65$ → 阻尼系数$c=2 \times 0.65 \times \sqrt{0.8 \times 15 \times 10^3} \approx 142\text{N·s/m}$ --- #### **4. 燃油系统管路布置** - **化油器流量验证公式**: $$ Q = \frac{\pi d^2}{4} \sqrt{\frac{2\Delta P}{\rho}} $$ - 喷嘴直径$d=0.55\text{mm}$,压差$\Delta P=10\text{kPa}$,燃油密度$\rho=720\text{kg/m}^3$ - 计算得$Q \approx 2.1\text{ml/s}$ → 满足$300\text{ml}$油箱$140\text{s}$全开续航 - **防泄漏设计**: - 油管接头采用双重O型圈(材质氟橡胶,线径$1.78\text{mm}$) - 油箱呼吸阀开启压力$1.2\text{kPa}$ --- #### **5. 工程图纸输出清单** 1. **总装配图**(含BOM表与配合尺寸) 2. **子系统部件图**: - 差速器壳体(标注SCM440热处理硬度HRC40-45) - 转向梯形连杆(长度公差±0.1mm) 3. **工艺流程图**: - 碳纤维底盘热压成型(温度180℃,压力12MPa,保温时间25min) - 齿轮组渗碳淬火(层深0.3mm,表面硬度HRC60) --- ### **下一步实施建议** 1. 使用SolidWorks/UG完成参数化建模,重点检查运动部件干涉(建议间隙>0.3mm) 2. 对承受交变载荷的部件(如悬挂臂、齿轮轴)进行疲劳寿命分析 3. 制作3D打印原型车进行实地跑台测试 如需特定零件的详细工程图(如齿轮齿形图、模具型腔图),请说明具体部件名称及精度要求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值