精华内容
下载资源
问答
  • 数学优化问题
    万次阅读 多人点赞
    2019-01-22 23:37:13

    采用优化方法时,要明确4个要素,决策变量,目标函数,约束条件是什么。下面进行阐述3种类型的优化处理以及matlab代码。

    线性规划问题

    用matlab处理一般的线性规划问题的标准型为:
    min z= ∑ j = 1 n c j x i \sum_{j=1}^nc_jx_i j=1ncjxi
    s.t. ∑ j = 1 n a i j x i ≤ b j \sum_{j=1}^na_{ij}x_i\leq b^j j=1naijxibj
    也就是说标准形式应该满足,目标函数必须是 ≤ \leq 的形式,约束条件也应该是 ≤ \leq 的形式。如果目标函数

    max z= ∑ j = 1 n c j x i A x ≥ b \sum_{j=1}^nc_jx_i Ax\geq b j=1ncjxiAxb
    可以转化为 m i n z = ∑ j = 1 n c j x i − A x ≤ − b min z=\sum_{j=1}^n c_jx_i -Ax \leq -b minz=j=1ncjxiAxb形式。

    在MATLAB中基本的函数形式是
    [c,favl]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS),返回值是最有解的一组向量x.解释如下:
    A,b对应不等式的约束
    Aeq,beq对应等式的约束
    LB,UB分别是变量x的上界和下界
    X0是变量的初始值,OPTIONS是控制参数(一般不用管)
    例子:
    m i n z = 2 x 1 + 3 x 2 + x 3 min z=2x_1+3x_2+x_3 minz=2x1+3x2+x3
    s . t . = { x 1 + 4 x 2 + 2 x 3 ≥ 8 3 x 1 + 2 x 2 ≥ 6 x 1 , x 2 , x 3 ≥ 0 s.t.=\left\{ \begin{array}{rcl} x_1+4x_2+2x_3\geq 8 \\ 3x_1+2x_2\geq 6 & \\ x_1,x_2,x_3\geq0 & \end{array} \right. s.t.=x1+4x2+2x383x1+2x26x1,x2,x30代码如下:

    >> c=[2;3;1];
    >> a=[1,4,2;3,2,0];
    >> b=[8;6];
    >> [x,y]=linprog(c,-a,-b,[],[],zeros(3,1))
    Optimal solution found.
    x =    2.0000
             0
        3.0000
    y =     7
    
    

    非线性规划问题

    如果目标函数或者约束条件里面有非线性函数,则此种规划问题就是非线性规划问题。在MATLAB中的主要命令是
    X = f m i n c o n ( f u n , X 0 , A , B , A e q , B e q , L B , U B , N o n l c o n , O P T I O N S ) X=fmincon(fun,X0,A,B,Aeq,Beq,LB,UB,Nonlcon,OPTIONS) X=fmincon(fun,X0,A,B,Aeq,Beq,LB,UB,Nonlcon,OPTIONS)
    解释如下:
    X为返回的最优解
    fun是在m文件中定义的目标函数
    Aeq.Beq线性等式约束
    A,B线性不等式约束
    LB,UB是变量x的上下界
    Nonlcon是在m文件中定义的非线性约束函数
    OPTIONS为优化参数
    例子如下:
    m i n f ( x ) = x 1 2 + x 2 2 + 8 min f(x)=x_1^2+x_2^2+8 minf(x)=x12+x22+8
    s . t . = { x 1 2 − x 2 ≥ 0 − x 1 + x 2 2 + 2 = 6 x 1 , x 2 ≥ 0 s.t.=\left\{ \begin{array}{rcl} x_1^2-x_2\geq 0 \\ -x_1+x_2^2+2= 6 & \\ x_1,x_2\geq0 & \end{array} \right. s.t.=x12x20x1+x22+2=6x1,x20代码如下:
    在fun1.m中写入目标函数:

    function f=fun1(x)
    f=x(1)^2+x(2)^2+8;
    

    在在fun2.m中写入非线性约束函数
    注:如果有多个不等式约束,g则是一个向量,用g(1).g(2)……存储

    function [g,h]=fun2(x)
    g=-x(1)^2+x(2); %g存储不等式约束
    h=-x(1)-x(2)^2+2; %h存储等式约束
    

    主程序命令:

    >> edit fun1.m 
    >> edit fun2.m 
    >> [x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],'fun2',optimset) 
    >> Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in 
    feasible directions, to within the default value of the optimality tolerance,
    and constraints are satisfied to within the default value of the constraint tolerance.<stopping criteria details>
    x =    1.0000
        1.0000
    y =   10.0000
    

    x是最优解,y是最优值

    整数规化

    如果在规划问题中要求变量为整数,则称为整数规划。常见的整数规划问题算法有以下几类:

    1. 分支定界法:用于整数线性规划
    2. 割平面法:用于整数线性规划
    3. 隐枚举法:用于求解0-1整数规划问题
    4. 匈牙利法:用于解决0-1规划问题中的指派问题
    5. 蒙特卡罗算法:用于各种整数规划中
      下面主要对蒙特卡罗算法和隐枚举法进行阐述:

    蒙特卡罗算法:
    蒙特卡罗算法又称为随机取样法,顾名思义,就是利用产生随机数进行估测准确值。
    比如:
    m a x z = x ( 1 ) 2 + x ( 2 ) 2 + 3 x ( 3 ) 2 + 4 x ( 4 ) 2 + 2 x ( 5 ) − 8 x ( 1 ) − 2 x ( 2 ) − 3 x ( 3 ) − x ( 4 ) − 2 x ( 5 ) max z=x(1)^2+x(2)^2+3x(3)^2+4x(4)^2+2x(5)-8x(1)-2x(2)-3x(3)-x(4)-2x(5) maxz=x(1)2+x(2)2+3x(3)2+4x(4)2+2x(5)8x(1)2x(2)3x(3)x(4)2x(5)

    s . t . = { 0 ≤ x i ≤ 99 i = 1 , 2 , … … x ( 1 ) + x ( 2 ) + x ( 3 ) + x ( 4 ) + x ( 5 ) ≤ 400 x ( 1 ) + 2 ∗ x ( 2 ) + 2 x ( 3 ) + x ( 4 ) + 6 ∗ x ( 5 ) ≤ 800 2 ∗ x ( 1 ) + x ( 2 ) + 6 ∗ x ( 3 ) ≤ 200 x ( 3 ) + x ( 4 ) + 5 ∗ x ( 5 ) ≤ 200 s.t.=\left\{ \begin{array}{rcl} 0\leq x_i\leq 99&amp;i=1,2,……\\ x(1)+x(2)+x(3)+x(4)+x(5)\leq 400\\ x(1)+2*x(2)+2x(3)+x(4)+6*x(5)\leq 800 &amp; \\ 2*x(1)+x(2)+6*x(3)\leq200\\ x(3)+x(4)+5*x(5) \leq 200\\ \end{array} \right. s.t.=0xi99x(1)+x(2)+x(3)+x(4)+x(5)400x(1)+2x(2)+2x(3)+x(4)+6x(5)8002x(1)+x(2)+6x(3)200x(3)+x(4)+5x(5)200i=1,2,代码如下:
    首先建立.m文件

    function [f,g]=mengte(x);
    f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5);
    g(1)=sum(x)-400;
    g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800;
    g(3)=2*x(1)+x(2)+6*x(3)-200;
    g(4)=x(3)+x(4)+5*x(5)-200;
    
    

    再编写如下程序求解

     rand('state',sum(clock));
    p0=0;
    tic
    for i=1:10^5 
      x=99*rand(5,1);
    x1=floor(x);
    x2=ceil(x);
    [f,g]=mengte(x1);
    if sum(g<=0)==4   
    if p0<=f     
     x0=x1;p0=f;   
    end
    end
    [f,g]=mengte(x2);
    if sum(g<=0)==4   
    if p0<=f     
     x0=x2;
    p0=f;  
     end
    end
    end
    x0,p0
    toc
    

    结果是:X=x0=(20,92,10,98,11),z=po=47180,用时1.451812 秒。(这也是采用蒙特卡洛算法的好处之一,快!)

    更多相关内容
  • 优化分类概述
  • Lingo软件在求解数学优化问题的使用技巧.pdf
  • 凸优化学习------数学优化问题的分类 一、 无约束优化和有约束优化        在连续优化问题中,根据是否有变量的约束条件,可以将优化问题分为无约束优化问题和约束优化问题。有...

    凸优化学习------数学优化问题的分类

    一、 无约束优化和有约束优化

           在连续优化问题中,根据是否有变量的约束条件,可以将优化问题分为无约束优化问题和约束优化问题。有变量的约束条件则为约束优化问题,反之则为无约束优化问题。

    二、 线性优化和非线性优化

           目标函数和所有的约束函数都为线性函数,则该问题为线性规划问题(Linear Programming)。相反,如果目标函数或任何一个约束函数为非线性函数,则该问题为非线性规划问题(Nonlinear Programming)
           在非线性优化问题中,有一类比较特殊的问题是凸优化问题(Convex Programming)。在凸优化问题中,变量 x 的可行域为凸集,即对于集合中任意两点,它们的连线全部位于在集合内部。目标函数 f 也必须为凸函数,即满足
    在这里插入图片描述

           凸优化问题是一种特殊的约束优化问题,需满足目标函数为凸函数,并且等式约束函数为线性函数,不等式约束函数为凹函数。

    三、 连续优化和离散优化

            根据输入变量 x 的值域是否为实数域,数学优化问题可以分为离散优化问题和连续优化问题。

    3.1 连续优化问题

           连续优化(Continuous Optimization问题是目标函数的输入变量为连续变量 x ∈ Rd,即目标标函数为实函数。

    3.2 离散优化问题

    3.2.1 组合优化(Combinatorial Optimization):
           其目标是从一个有限集合中找出使得目标函数最优的元素。在一般的组合优化问题中,集合中的元素之间存在一定的关联,可以表示为图结构。典型的组合优化问题有旅行商问题、最小生成树问题、图着色问题等。很多机器学习问题都是组合优化问题,比如特征选择、聚类问题、超参数优化问题以及**结构化学习(Structured Learning)**中标签预测问题等。
    3.2.2 整数优化
           输入变量 x ∈ Zd为整数。一般常见的整数规划问题为整数线性规划(Integer Linear Programming,ILP)。整数线性规划的一种最直接的求解方法是:(1)去掉输入必须为整数的限制,将原问题转换为一般的线性规划问题,这个线性规划问题为原问题的松弛问题;(2)求得相应松弛问题的解;(3)把松弛问题的解四舍五入到最接近的整数。但是这种方法得到的解一般都不是最优的,因此原问题的最优解不一定在松弛问题最优解的附近。另外,这种方法得到的解也不一定满足约束条件。

    四、 单目标优化和多目标优化

    4.1 单目标优化(Single-Objective Optimization)

           所评测目标只有一个,只需要根据具体的满足函数条件,求得最值

    4.2 多目标优化(Multi-objective Optimization)

           多个评测函数的存在,而且使用不同的评测函数的解,也是不同的。也即是说:多目标优化问题中,同时存在多个最大化或是最小化的目标函数,并且,这些目标函数并不是相互独立的,也不是相互和谐融洽的,他们之间会存在或多或少的冲突,使得不能同时满足所有的目标函数。一般情况下多目标优化情况并没有唯一的全局最优解

    五、 静态规划和动态规划

    5.1 静态规划(Static Programming)

           静态规划简单来说是穷举事件所有解决方法,从中选出最优的一个解。静态规划最大的特点是时间复杂度特别高,当问题规划很大时计算量是一个天文数字。同时这种方法也有优点,就是穷举过程中我们始终存在着一个可行解。这种方法,从一个或多个可行解开始,通过不断迭代对现有可行解优化,最后得到最优解。这种方法称为静态规划。

    5.2 动态规划(Dynamic Programming)

           动态规划是运筹学的一个分支,是求解决策过程最优化的过程。是通过比较当前决策状态和未来几个状态的比较进行选取最优,关键点是找到状态转移方程。

    5.2.1 动态规划概念引入:

           有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要做决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线.这种把一个问题看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,这种问题称为多阶段决策问题。在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义,称这种解决多阶段决策最优化的过程为动态规划方法。

    5.2.2 动态规划基本思想

           动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。

    5.2.3 动态规划局限性:

           动态规划对于解决多阶段决策问题的效果是明显的,但是动态规划也有一定的局限性。首先,它没有统一的处理方法,必须根据问题的各种性质并结合一定的技巧来处理;另外当变量的维数增大时,总的计算量及存贮量急剧增大。因而,受计算机的存贮量及计算速度的限制,当今的计算机仍不能用动态规划方法来解决较大规模的问题,这就是**“维数障碍”**。

    六、 随机规划

           随机规划是规划论的一个分支,线性规划的推广。研究约束条件中的系数和目标函数中的参数均为随机变量时的线性规划问题。用于研究具有不确定性的决策问题。随机规划的中心问题是选择参数,使收益的数学期望达到最大,或使成本的数学期望达到极小。根据数学模型求得问题的最优解,但这个最优解一般不是一个确定值而是一个期望值。在随机规划中,需对随机变量进行描述,分析其概率分布,往往还要考虑各随机变量的自相关和互相关,因而在理论上和求解方法上都比确定性规划复杂得多。实际上,求解随机规划问题时,总是设法把它转化成确定性数学规划问题,再进行求解。如果随机变量的非确定性或者量的变化很小,对系统的性能不产生严重影响,可以用其数学期望代替这个非确定值,并用确定性方法求解;然后通过敏感性分析来估计非确定性因素对方案的影响程度。如果随机变量变化很大,用期望值可能使方案性能的评价受到很大影响,这时就要用随机规划方法求解。
    常见的随即规划问题:报童问题。
    常用方法:样本均值方法。

    七、 鲁棒规划

    7.1 鲁棒优化定义

           鲁棒优化的目的是求得这样一个解,对于可能出现的所有情况,约束条件均满足,并且使得最坏情况下的目标函数的函数值最优。 其核心思想是将原始问题以一定的近似程度转化为一个具有多项式计算复杂度的凸优化问题。鲁棒优化的关键是建立相应的鲁棒对等模型。然后利用相关的优化理论将其转化为可求解的“近似”鲁棒对等问题,并给出鲁棒最优解。

    7.2 鲁棒优化原理

           鲁棒优化与其它不确定优化方法的最大区别在于:
           ①鲁棒优化强调的是所谓的硬约束,寻求一个对于不确定输入的所有实现都能有良好性能的解,即不确定优化问题的解对于任何一个可能参数的实现都必须是可行的,而其它不确定优化问题并没有这个要求。
           ②鲁棒优化的建模思想与其它优化方法不同,它是以最坏情况下的优化为基础,这代表了一个保守的观点。得到的优化方案并不是最优的,但是,当参数在给定的集合内发生变化时,仍能确保优化方案是可行的,使模型具有一定的鲁棒性,即优化方案对参数扰动不敏感。
           ③鲁棒优化对于不确定参数没有分布假定,只是给出不确定参数集,不确定参数集合内的所有值都同等重要

    7.3 鲁棒优化适用范围

           鲁棒优化是解决内部结构和外部环境不确定环境下的一种新的优化方法。鲁棒优化解决内部结构变动问题时,主要是约束条件参数的不确定性或目标函数参数的不确定性解决外部环境变化时,主要是外界不确定性扰动。鲁棒优化己经从最初的线性优化鲁棒方法,发展到鲁棒优化理论的经典体系。与其它不确定优化问题的处理方法不同的是,鲁棒优化更加适用于如下情况:
           ①不确定优化问题的参数需要估计,但是有估计风险;
           ②优化模型中不确定参数的任何实现都要满足约束函数;
           ③目标函数或者优化解对于优化模型的参数扰动非常敏感;
           ④决策者不能承担小概率事件发生后所带来的巨大风险。

    八、 随即规划和鲁棒优化区别

           随机优化需要“不确定参数的分布模型”,鲁棒优化不需要“不确定参数的分布模型”。
           随机优化通过对随机参数取期望,将模型转化为确定性模型求解,它的解并不满足所有参数取值。
           鲁棒优化,只要不确定参数属于给定的不确定集合,它的解严格满足所有约束。

    最后求一波三连,hh.
    展开全文
  • 网络优化数学模型(1; 最小生成树及算法 ;1最小生成树及算法;定理2 设G是具有n个顶点的图则下述命题等价;2图的生成树;II找图中生成树的方法;A 避圈法 ;a) 深探法;13;3;3;B 破圈法;B 破圈法;3) 最小生成树与算法;A ...
  • 数学建模源码集锦-蚁群算法的优化计算——旅行商问题(TSP)优化应用实例
  • 基于多目标优化模型的原材料订购与运输问题研究,论文+模型拿去自用!!
  • 数学建模-关于公交车调度的优化问题
  • 研究生数学建模-面向节能的单多列车优化决策问题10700001
  • 数学建模路线优化问题.pdf
  • 介绍数学建模中最优化问题的常见模型和算法。最优化模型分类方法有很多,可按变量、约束条件、目标函数个数、目标函数和约束条件的是否线性是否依赖时间等分类。 根据目标函数,约束条件的特点将最优化模型包含的...
  • 2020年,“51”数学建模C类问题,关于饲料配比问题以及加工优化方案。论文采用统计分析,建立了关于饲料加工的多目标优化模型。并利用蒙特卡罗算法对目标函数进行优化,解决了饲料加工质量最优配比问题并进行了成本...
  • 数学建模优化问题.rar

    2019-10-10 09:53:25
    数学建模优化问题
  • 2020年,“51”数学建模C类问题,关于饲料配比问题以及加工优化方案。论文采用统计分析,建立了关于饲料加工的多目标优化模型。并利用蒙特卡罗算法对目标函数进行优化,解决了饲料加工质量最优配比问题并进行了成本...
  • 程序员的数学-优化理论
  • 数学建模_优化问题_经济与金融中的优化问题
  • 2022高考二轮复习数学 拓展优化 双变量问题 .pdf
  • 彩票中的数学_问题优化模型与评述.pdf数学建模
  • 数学建模之优化模型详解

    千次阅读 多人点赞 2022-03-09 21:51:29
    全文共8090个字,码字总结不易,老铁们来个三连:点赞、关注、评论作者:[左手の明天] 原创不易,转载请联系作者并... 这些问题都是“最优化问题”,也是数学建模中的典型问题,解决最优化问题数学方法就是“最优化..

    全文共8090个字,码字总结不易,老铁们来个三连:点赞、关注、评论
    作者:[左手の明天]
     原创不易,转载请联系作者并注明出处
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    “优化”是生活中经常使用的词:坐出租车时希望司机不绕弯路、走优化路线;逛超市时考虑各种优惠活动,希望获得最大优惠;企业推出新产品要综合考虑成本与市场吸引力,对资金进行优化配置,等等。 这些问题都是“最优化问题”,也是数学建模中的典型问题,解决最优化问题的数学方法就是“最优化方法”。

    最优化方法的出发点是系统思维,最优化方法的基本思路是在一定的约束条件下,保证各方面资源的合理分配, 最大限度地提升系统某一性能或系统整体性能,最终实现最理想结果。运用最优化方法建立并求解数学模型,主要包括以下步骤:

    (1)明确目标,分析问题背景,确定约束条件,搜集全面的客观数据和信息;
    (2)建立数学模型,构建变量之间的数学关系,设立目标函数;
    (3)分析数学模型,综合选择最适合该模型的优化方法;
    (4)求解模型,通常借助计算机和数学分析软件完成;
    (5)对最优解进行检验和实施。

    目录

    数学规划的一般模型

    MATLAB 求解优化问题的主要函数

    模型及基本函数

    优化函数的输入变量

    优化函数的输出变量

    无约束最优化问题

    数学描述

    解析解法和图解法

    数值解法

    全局最优解和局部最优解

    带约束最优化问题

    线性规划问题

    情况一

    情况二

    二次规划问题

    非线性规划问题

    定义

    求解算法1:间接法

    求解算法2:直接法

    求解算法3:最速下降法(steepest descent method)

    Matlab求解步骤

    示例

    0-1规划问题

    钢管的订购与运输问题

    问题

    问题1的基本模型和解法

    总费用最小的优化问题

    基本模型:二次规划

    Floyd算法求解步骤 

    最优化方法在数学建模中的应用 

    梯度下降法

    惩罚函数法

    遗传算法

    蚁群算法


    数学规划的一般模型

    其中,x~决策变量;f(x)~目标函数;gi(x)≤0~约束条件


    MATLAB 求解优化问题的主要函数

    模型及基本函数

    优化函数的输入变量

    优化函数的输出变量


    无约束最优化问题

    数学描述

    解析解法和图解法

     举例:用解析和图解法求解下列方程

    <<syms t; 
    y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;
    ezplot(y,[0 4])
    y1=diff(y);
    ezplot(y1,[0 4])
    t0=solve(y1)
    y2=diff(y1);
    b=subs(y2,t,t0)

    数值解法

     命令形式1:

    x=fminsearch(fun,x0)   %简单形式
    
    [x,f,flag,out]=fminsearch(fun,x0,opt,p1,p2,…) %一般形式

    功能:与fsolve()中的参数控制形式类似。

    注:若函数时多元的,要表达成向量的形式。

    命令形式2:

    x=fminunc(fun,x0)   %简单形式
    
    [x,f,flag,out]=fminunc(fun,x0,opt,p1,p2,…) %一般形式

    功能:与fsolve()中的参数控制形式类似。

    举例:

    >>f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2))','x');
    x0=[0,0];
    ff=optimset;ff.Display='iter';
    x=fminsearch(f,x0,ff)
    
    >>x=fminunc(f,x0,ff)
    

    全局最优解和局部最优解

    一元函数极小

    X=fminbnd(fun,x1,x2)

    多元无约束极小

    X=fminunc(fun,x0) (牛顿法)
    X=fminsearch(fun,x0)

    举例1:(初值的影响力)设目标函数为

     试观察不同的初值得出的最小值。

    >> f=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t');
    t0=1;[t1,f1]=fminsearch(f,t0)
    
    t1=0.92275390625000,f1=-0.15473299821860
    
    >> t0=0.1;[t2,f2]=fminsearch(f,t0)
    
    t2=0.29445312500000,f2=-0.54362463738706
    
    
    >> syms t; 
    y=exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t);
    ezplot(y,[0,2.5]); axis([0 2.5 -0.6 1])

    举例2:对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?

    建立模型: 

    设剪去的正方形的边长为x,,则水槽的容积为:

    建立无约束优化模型为:

    模型求解:

    先编写M文件如下:

    function f=myfun(x)
    f=-(3-2*x).^2*x;

    调用fminbnd:

    [x,fval]=fminbnd(@myfun,0,1.5)

    运算结果为:

    x = 0.5000,fyal =2.0000.

    即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米。


    带约束最优化问题

    线性规划问题

    目标函数:

     约束条件:

    情况一

    目标函数:

    其中,C为价值向量

    约束条件:

     其中,b为资源向量;X为决策变量向量

    其中:

     

    命令形式1:

    [X,lag,how]=lp(C,A,b,v1,v2,x0)

    功能:

    • C,A,b的意义如矩阵表示里参数;
    • v1,v2表示决策变量的上界和下界(其维数可以小于X,但表示前几个分量的上下界);
    • x0表示初始值;X时输出最优解;
    • lag是lagrange乘子,维数等于约束条件的个数,非零的向量是起作用的约束条件;
    • how给出错误信息:infeasible(无可行解),unbounded(无界解),ok(求解成功).

     举例:

    >> c=[13,-1,5];
    A=[-1,-1,0;0,1,1];
    b=[-7,10];
    v0=[2,0,0];
    [X,lag,how]=lp(c,A,b,v0)
    

    情况二

    目标函数:

     约束条件:

    命令形式2:  

    [X,f,flag,c]=linprog(C,A,b,Aeq,Beq,xm,xM,x0,opt)

    功能:各个参数的解释如前,若各个约束条件不存在,则用空矩阵来代替。

    • x: 解
    • f: 最优值
    • flag:大于零表示求解成功,否则求解出问题
    • c:求解信息
    • x0:搜索点的初值
    • opt:最优化控制项

    举例1:

    >> c=[-2,-1,-4,-3,-1];
     A=[0 2 1 4 2;3 4 5 -1 -1];
     b=[54,62];
     Ae=[];Be=[];
     xm=[0,0,3.32,0.678,2.57];
     ff=optimset;
     ff.LargeScale='off';
     ff.TolX=1e-15;
     ff.Display='iter';
     [X,f,flag,c]=linprog(c,A,b,Ae,Be,xm,[],[],ff)
    

    举例2:某车间生产A和B两种产品,为了生产A和B,所需的原料分别为2个和3个单位,所需的工时分别为4个和2个单位。现在可以应用的原料为100个单位,工时为120个单位。每生产一台A和B分别可获得利润6元和4元。应当生产A和B各多少台能获得最大利润?

    分析:

     模型建立:

    设生产A产品x1 台,生产B产品 x2台

     模型求解:

    f=[-6,-4]';
    A=[2 3;4 2];
    B=[100;120];
    Ae=[];
    Be=[];
    xm=[0,0];
    ff=optimset;
    ff.LargeScale='off'; % 不用大规模问题求解
    ff.TolX=1e-15;
    ff.TolFun=1e-20; 
    ff.TolCon=1e-20;
    ff.Display='iter';
    [x,f_opt,key,c]=linprog(f,A,B,Ae,Be,xm,[],[],ff)

    举例3:(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为 800 和 900,三种工件的数量分别为 400、600 和 500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?

    模型建立:

    设在甲车床上加工工件 1、2、3 的数量分别为 x1、x2、x3,在乙车床上加工工件 1、2、3 的数量分别为 x4、x5、x6。可建立以下线性规划模型:

    模型求解:

    f = [13 9 10 11 12 8];
    A = [0.4 1.1 1 0 0 0
    0 0 0 0.5 1.2 1.3];b = [800; 900];
    Aeq=[1 0 0 1 0 0
    0 1 0 0 1 0
    0 0 1 0 0 1];
    beq=[400 600 500];
    vlb = zeros(6,1);
    vub=[];
    [x,fval] = linprog(f,A,b,Aeq,beq,vlb,vub)

    举例4:某厂每日 8 小时的产量不低于 1800 件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度 25 件/小时,正确率 98%,计时工资 4 元/小时;二级检验员的标准为:速度 15 小时/件,正确率 95%,计时工资 3 元/小时。检验员每错检一次,工厂要损失 2 元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?

    模型建立:

    设需要一级和二级检验员的人数分别为 x1、x2 人,则应付检验员的工资为:

     因检验员错检而造成的损失为:

    故目标函数为:

    约束条件为:

     

     线性规划模型:

     

     模型求解:

    c = [40;36];
    A=[-5 -3];
    b=[-45];
    Aeq=[];
    beq=[];
    vlb = zeros(2,1);
    vub=[9;15];
    %调用 linprog 函数:
    [x,fval] = linprog(c,A,b,Aeq,beq,vlb,vub)

    结果:

    x =
    9.0000
    0.0000
    fval =360

    即只需聘用 9 个一级检验员。

    二次规划问题

    目标函数:

    约束条件: 

    命令形式:

     [X,f,flag,c]=quadprog(H,C,A,b,Aeq,Beq,xm,xM,x0,opt)

    功能:

    各个参数的解释如前,若各个约束条件不存在,则用空矩阵来代替。

    举例:

     

    >> c=[-2,-1,-4,-3,-1];
      A=[0 2 1 4 2;3 4 5 -1 -1];
      b=[54,62];
      Ae=[];Be=[];
      xm=[0,0,3.32,0.678,2.57];
      ff=optimset;
      ff.LargeScale='off';
      ff.TolX=1e-15;
      ff.Display='iter';
      [X,f,flag,c]=linprog(c,A,b,Ae,Be,xm,[],[],ff)
    

    非线性规划问题

    定义

    如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.

    一般形式:

     其中

     

     是定义在 En 上的实值函数,简记:

     

    其它情况:

    求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.

     

    其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.

    求解算法1:间接法

    在非线性最优化问题当中,如果目标函数能以解析函数表示,可行域由不等式约束确定,则可以利用目标函数和可行域的已知性质,在理论上推导出目标函数为最优值的必要条件,这种方法就称为间接法(也称为解析法) 。 一般要用到目标函数的导数。

    求解算法2:直接法

    直接法是一种数值方法。这种方法的基本思想是迭代,通过迭代产生一个点序列{ X(k) },使之逐步接近最优点。 只用到目标函数。 如黄金分割法、Fibonacci、随机搜索法。

    迭代法一般步骤

     注意:数值求解最优化问题的计算效率取决于确定搜索方向P (k)和步长的效率。

    求解算法3:最速下降法(steepest descent method)

    由法国数学家Cauchy于1847年首先提出。在每次迭代中,沿最速下降方向(负梯度方向)进行搜索,每步沿负梯度方向取最优步长,因此这种方法称为最优梯度法。

    特点:

    方法简单,只以一阶梯度的信息确定下一步的搜索方向,收敛速度慢; 越是接近极值点,收敛越慢; 它是其它许多无约束、有约束最优化方法的基础。 该法一般用于最优化开始的几步搜索。

    最速下降法算法:

    Matlab求解步骤

    用Matlab求解上述问题,基本步骤分三步:

    1. 首先建立M文件fun.m,定义目标函数F(X):

    function f=fun(X); 
    f=F(X);

     3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:       

    (1) x=fmincon(‘fun’,X0,A,b)    
    
    (2) x=fmincon(‘fun’,X0,A,b,Aeq,beq)    
    
    (3) x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB)          
    
    (4) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)
    
    (5) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)
    
    (6) [x,fval]= fmincon(...)
    
    (7) [x,fval,exitflag]= fmincon(...)  
    
    (8) [x,fval,exitflag,output]= fmincon(...)

    输入参数的几点说明:

    模型中如果没有A,b,Aeq,beq,VLB,VUB的限制,则以空矩阵[ ]作为参数传入;

    nonlcon:如果包含非线性等式或不等式约束,则将这些函数编写一个Matlab函数

    nonlcon就是定义这些函数的程序文件名;

    不等式约束  G(x)<=0

    等式约束     Ceq(x)=0.

    如果nonlcon=‘mycon’ ; 则myfun.m定义如下

    function [G,Ceq] = mycon(x)
    
    G= ... % 计算非线性不等式约束在点x处的函数值
    
    Ceq= ... %计算机非线性等式约束在点x处的函数值 

    示例

    例子1:

    2个不等式约束, 2个等式约束 3个决策变量x1,x2,x3 如果nonlcon以‘test’作为参数值,则程序test.m如下

    function [G,Ceq]=test(x)
    G(1)=x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-100
    G(2)=60-x(1)*x(1)+10*x(3)*x(3)
    Ceq(1)=x(1)+x(2)*x(2)+x(3)- 80
    Ceq(2)=x(1)^3+x(2)*x(2)+x(3)- 80
    

    注意:

    [1] fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为’on’),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。

    [2] fmincon函数可能会给出局部最优解,这与初值X0的选取有关。

    例子2:

     1.先建立M文件 fun.m,定义目标函数:

    function f=fun(x);
    
    f=exp(x(1)) *(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

     2.再建立M文件mycon.m定义非线性约束:

    function [g,ceq]=mycon(x)
    
    g=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
    
    ceq=[];

    3.主程序为:

    x0=[-1;1];
    A=[];b=[];
    Aeq=[1 1];
    beq=0; 
    vlb=[];
    vub=[];
    [x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')

    4.运算结果为:

    x = -1.2250    1.2250        
    
    fval = 1.8951

    0-1规划问题

    数学描述:自变量的取值只能为0或1

    matlab解:

    X=bintprog(f,A,B,Aeq,Beq)

    小规模问题可以穷举

    举例:求解下面的0-1线性规划问题

     

    f=[-3,2,-5]; A=[1 2 -1; 1 4 1; 1 1 0; 0 4 1]; 
    B=[2;4;5;6];
    x=bintprog(f,A,B,[],[])'

    钢管的订购与运输问题

    要铺设一条A1→A2 →……→ A15的输送天然气的主管道,如图一所示(见下页)。经筛选后可以生产这种主管道钢管的钢厂有 。图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原来有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。

    为方便计,1km主管道钢管称为1单位钢管。一个钢厂如果承担制造这种钢管,至少需要生产
    500个单位。钢厂Si在指定期限内能生产该钢管的最大数量为Si个单位,钢管出厂销价1单位钢管为pi万元,如下表:

     1单位钢管的铁路运价如下表:

     

    1000km以上每增加1至100km运价增加5万元。公路运输费用为1单位钢管每公里0.1万元(不足
    整公里部分按整公里计算)。钢管可由铁路、公路运往铺设地点(不只是运到点A1,A2,……,A15 ,而是管道全线)。

    问题

    (1)制定钢管的订购和运输计划,使总费用最小.
    (2)分析对购运计划和总费用影响:哪个钢厂钢管销价的变化影响最大;哪个钢厂钢管产量上限的变化影响最大?
    (3)讨论管道为树形图的情形

    问题1的基本模型和解法

    总费用最小的优化问题

     

    基本模型:二次规划

    Floyd算法求解步骤 

     Floyd算法过程描述如下:

    • 1、 首先S以边集M初始化,得到所有的直接连通代价;
    • 2、 依次考虑第k个结点,对于S中的每一个S[i][j],判断是否满足:S[i][j]>S[i][k]+S[k][j],如果满足则用S[i][k]+S[k][j]代替S[i][j],此为第k步;
    • 3、 k循环取遍所有结点,算法结束时,S为最终解。

     


    最优化方法在数学建模中的应用 

    梯度下降法

    梯度下降法是经典的最优化方法之一[4],其核心思想是高等数学中的导数理论。 梯度下降法实现最优化的原理是,每次迭代更新目标函数时,都以该变量导数(即梯度)的反方向作为更新参数的方向,最终解一定会收敛于最优解。 这个原理类似于走下坡路时,总是沿着最陡峭的方向向下走,最后就一定会走到坡底。梯度下降法的实现简单, 但是求解计算时间长,因此基于梯度下降法发展了很多改进算法,包括随机梯度下降法、小批量梯度下降法等,能够有效改善计算成本高的问题。

    惩罚函数法

    惩罚函数法,指的是引入惩罚因子和惩罚函数的最优化方法[5]。 具体来说,惩罚函数的思想是:将最优化问题中的约束条件视为围墙,而迭代更新的解视为在围墙内运动的粒子,一旦粒子靠近围墙,对应的惩罚因子数值就会增大,导致惩罚函数值增大,反之,粒子远离围墙时,惩罚函数值就减小。 建立了这种惩罚机制后,在每次迭代过程中,模型为了“避免被惩罚”,逐渐趋近于约束边界,从而找到了最优解。惩罚函数法对模型的训练虽然“简单粗暴”,但是原理直观、实现门槛低,是实际工程中备受青睐的最
    优化方法。

    遗传算法

    不同于梯度下降法和惩罚函数法,遗传算法并非依据导数理论提出的算法[6],而是一种模拟生物在自然届中进化规律的一种智能算法。 自然界的生物进化遵循适者生存和优胜劣汰,即能够适应环境变化或基因变异的个体才能够参与到进化。 遗传算法的优化原理与之类似:每一次迭代时,通过计算各个个体的适应度,从中随机地选择两个个体作为父母,繁殖后代,同时诱发子代的染色体变异,重复迭代,当出现最大适应度的子代时,即认为获得了最优解,循环结束。与梯度下降法、惩罚函数法相比,遗传算法以生物进化为原型,收敛性较好,在计算精度要求时,具有计算时间少、鲁棒性高的优势。

    蚁群算法

    与遗传算法类似,蚁群算法也是受启发于生物的一种最优化方法[7]。 生物科学家发现蚂蚁经过的路上都会有一种特殊物质,并且蚁群中的蚂蚁对该物质高度敏感,由于该物质浓度越高,代表着路途长度越短,想要走“捷径”的蚁群们都会选择浓度较高的道路行走,“捷径”经过的蚂蚁越多,特殊物质的浓度就越高,物质浓度积累到一定程度,所有蚂蚁都会被吸引到最佳捷径上来,都能以最快速度找到食物了。 蚁群算法解决最优化问题,就是利用了其分布计算和信息正反馈的特点。

    展开全文
  • 五一数学建模,疫苗生产问题优化
  • 数学广角优化问题.pptx
  • 数学建模_优化问题_现代优化算法
  • 数学建模国赛优秀论文集锦-2018B:RGV 的动态调度优化问题
  • 数学广角优化烙饼问题PPT课件.pptx
  • 深度学习算法在许多情况下都...《机器学习中的数学——优化算法》部分会介绍神经网络训练中的这些优化技术,这些技术主要关注这一类特定的优化问题:寻找神经网络上的一组参数θ\thetaθ,它能显著地降低代价函数J(θ)

    分类目录:《机器学习中的数学》总目录


    深度学习算法在许多情况下都涉及优化。例如,模型中的进行推断涉及求解优化问题。我们经常使用解析优化去证明或设计算法。在深度学习涉及的诸多优化问题中,最难的是神经网络训练。甚至是用几百台机器投入几天到几个月来解决单个神经网络训练问题,也是很常见的。因为这其中的优化问题很重要,代价也很高,因此研究者们开发了一组专门为此设计的优化技术。《机器学习中的数学——优化算法》部分会介绍神经网络训练中的这些优化技术,这些技术主要关注这一类特定的优化问题:寻找神经网络上的一组参数 θ \theta θ,它能显著地降低代价函数 J ( θ ) J(\theta) J(θ),该代价函数通常包括整个训练集上的性能评估和额外的正则化项。

    首先,我们会介绍在机器学习任务中作为训练算法使用的优化与纯优化有哪些不同。其次,我们会介绍导致神经网络优化困难的几个具体挑战。再次,我们会介绍几个实用算法,包括优化算法本身和初始化参数的策略。更高级的算法能够在训练中自适应调整学习率,或者使用代价函数二阶导数包含的信息。最后,我们会介绍几个将简单优化算法结合成高级过程的优化策略,以此作为总结。

    用于深度模型训练的优化算法与传统的优化算法在几个方面有所不同。机器学习通常是间接作用的。在大多数机器学习问题中,我们关注某些性能度量 P P P,其定义于测试集上并且可能是不可解的。因此,我们只是间接地优化 P P P。我们希望通过降低代价函数 J ( θ ) J(\theta) J(θ)来提高 P P P。这一点与纯优化不同,纯优化最小化目标 J J J本身。训练深度模型的优化算法通常也会包括一些针对机器学习目标函数的特定结构进行的特化。通常,代价函数可写为训练集上的平均,如:
    J ( θ ) = E ( x , y ) ∼ p ^ data [ L ( f ( x ; θ ) , y ) ] J(\theta)=E_{(x,y)\sim \hat{p}_\text{data}}[L(f(x;\theta), y)] J(θ)=E(x,y)p^data[L(f(x;θ),y)]

    其中 L L L是每个样本的损失函数, f ( x ; θ ) f(x;\theta) f(x;θ)是输入 x x x时所预测的输出, p ^ data \hat{p}_\text{data} p^data是经验分布。监督学习中, y y y是目标输出, L L L的变量是 f ( x ; θ ) f(x;\theta) f(x;θ) y y y。不难将这种监督学习扩展成其他形式,如包括 θ \theta θ或者 x x x作为参数,或是去掉参数 y y y,以发展不同形式的正则化或是无监督学习。上式定义了训练集上的目标函数。通常,我们更希望最小化取自数据生成分布 p data p_\text{data} pdata的期望,而不仅仅是有限训练集上的对应目标函数:
    J ∗ ( θ ) = E ( x , y ) ∼ p data [ L ( f ( x ; θ ) , y ) ] J^*(\theta)=E_{(x,y)\sim p_\text{data}}[L(f(x;\theta), y)] J(θ)=E(x,y)pdata[L(f(x;θ),y)]

    经验风险最小化

    机器学习算法的目标是降低上式所示的期望泛化误差。这个数据量被称为风险。在这里,我们强调该期望取自真实的潜在分布 p data p_\text{data} pdata。如果我们知道了真实分布 p data ( x , y ) p_\text{data}(x, y) pdata(x,y),那么最小化风险变成了一个可以被优化算法解决的优化问题。然而,我们遇到的机器学习问题,通常是不知道 p data ( x , y ) p_\text{data}(x, y) pdata(x,y),只知道训练集中的样本。

    将机器学习问题转化回一个优化问题的最简单方法是最小化训练集上的期望损失。这意味着用训练集上的经验分布 p ^ ( x , y ) \hat{p}(x, y) p^(x,y)替代真实分布 p ( x , y ) p(x, y) p(x,y)。现在,我们将最小化经验风险:
    E ( x , y ) ∼ p data [ L ( f ( x ; θ ) , y ) ] = 1 m ∑ i = 1 m L ( f ( x ( i ) ; θ ) , y ( i ) ) E_{(x,y)\sim p_\text{data}}[L(f(x;\theta), y)]=\frac{1}{m}\sum_{i=1}^mL(f(x^{(i)};\theta), y^{(i)}) E(x,y)pdata[L(f(x;θ),y)]=m1i=1mL(f(x(i);θ),y(i))

    其中 m m m表示训练样本的数目。

    基于最小化这种平均训练误差的训练过程被称为经验风险最小化。在这种情况下,机器学习仍然和传统的直接优化很相似。我们并不直接最优化风险,而是最优化经验风险,希望也能够很大地降低风险。一系列不同的理论构造了一些条件,使得在这些条件下真实风险的期望可以下降不同的量。然而,经验风险最小化很容易导致过拟合。高容量的模型会简单地记住训练集。在很多情况下,经验风险最小化并非真的可行。最有效的现代优化算法是基于梯度下降的,但是很多有用的损失函数,如0-1损失,没有有效的导数(导数要么为零,要么处处未定义)。这两个问题说明,在深度学习中我们很少使用经验风险最小化。反之,我们会使用一个稍有不同的方法,我们真正优化的目标会更加不同于我们希望优化的目标。

    代理损失函数和提前终止

    有时,我们真正关心的损失函数(比如分类误差)并不能被高效地优化。例如,即使对于线性分类器而言,精确地最小化0-1损失通常是不可解的(复杂度是输入维数的指数级别)。在这种情况下,我们通常会优化代理损失函数。代理损失函数作为原目标的代理,还具备一些优点。例如,正确类别的负对数似然通常用作0-1损失的替代。负对数似然允许模型估计给定样本的类别的条件概率,如果该模型效果好,那么它能够输出期望最小分类误差所对应的类别。在某些情况下,代理损失函数比原函数学到的更多。例如,使用对数似然替代函数时,在训练集上的0-1损失达到0之后,测试集上的0-1损失还能持续下降很长一段时间。这是因为即使0-1损失期望是零时,我们还能拉开不同类别的距离以改进分类器的鲁棒性,获得一个更强壮的、更值得信赖的分类器,从而,相对于简单地最小化训练集上的平均0-1损失,它能够从训练数据中抽取更多信息。

    一般的优化和我们用于训练算法的优化有一个重要不同:训练算法通常不会停止在局部极小点。反之,机器学习通常优化代理损失函数,但是在基于提前终止的收敛条件满足时停止。通常,提前终止使用真实潜在损失函数,如验证集上的0-1损失,并设计为在过拟合发生之前终止。与纯优化不同的是,提前终止时代理损失函数仍然有较大的导数,而纯优化终止时导数较小

    批量算法和小批量算法

    机器学习算法和一般优化算法不同的一点是,机器学习算法的目标函数通常可以分解为训练样本上的求和。机器学习中的优化算法在计算参数的每一次更新时通常仅使用整个代价函数中一部分项来估计代价函数的期望值。

    例如,最大似然估计问题可以在对数空间中分解成各个样本的总和:
    θ ML = arg ⁡ max ⁡ θ ∑ i = 1 m log ⁡ p model ( x ( i ) , y ( i ) ; θ ) \theta_{\text{ML}}=\arg\max_{\theta}\sum_{i=1}^m\log p_{\text{model}}(x^{(i)},y^{(i)};\theta) θML=argθmaxi=1mlogpmodel(x(i),y(i);θ)

    优化算法用到的目标函数 J J J中的大多数属性也是训练集上的期望。例如,最常用的属性是梯度:
    J ( θ ) = E ( x , y ) ∼ p ^ data log ⁡ p model ( x , y ; θ ) J(\theta)=E_{(x,y)\sim \hat{p}_\text{data}}\log p_{\text{model}}(x, y;\theta) J(θ)=E(x,y)p^datalogpmodel(x,y;θ)

    准确计算这个期望的计算代价非常大,因为我们需要在整个数据集上的每个样本上评估模型。在实践中,我们可以从数据集中随机采样少量的样本,然后计算这些样本上的平均值。回想一下, n n n个样本均值的标准差是 σ n \frac{\sigma}{\sqrt{n}} n σ,其中 σ \sigma σ是样本值真实的标准差。分母 n \sqrt{n} n 表明使用更多样本来估计梯度的方法的回报是低于线性的。比较两个假想的梯度计算,一个基于100个样本,另一个基于10000个样本。后者需要的计算量是前者的100倍,却只降低了10倍的均值标准差。如果能够快速地计算出梯度估计值,而不是缓慢地计算准确值,那么大多数优化算法会收敛地更快。

    另一个促使我们从小数目样本中获得梯度的统计估计的动机是训练集的冗余。在最坏的情况下,训练集中所有的 m m m个样本都是彼此相同的拷贝。基于采样的梯度估计可以使用单个样本计算出正确的梯度,而比原来的做法少花了 m m m倍时间。实践中,我们不太可能真的遇到这种最坏情况,但可能会发现大量样本都对梯度做出了非常相似的贡献。使用整个训练集的优化算法被称为批量或确定性梯度算法,因为它们会在一个大批量中同时处理所有样本。这个术语可能有点令人困惑,因为这个词“批量”也经常被用来描述小批量随机梯度下降算法中用到的小批量样本。通常,术语“批量梯度下降”指使用全部训练集,而术语“批量”单独出现时指一组样本。例如,我们普遍使用术语“批量大小”表示小批量的大小。每次只使用单个样本的优化算法有时被称为随机或者在线算法。术语“在线”通常是指从连续产生样本的数据流中抽取样本的情况,而不是从一个固定大小的训练集中遍历多次采样的情况。

    大多数用于深度学习的算法介于以上两者之间,使用一个以上而又不是全部的训练样本。传统上,这些会被称为小批量或小批量随机方法,现在通常将它们简单地称为随机方法。随机方法的典型示例是随机梯度下降。小批量的大小通常由以下几个因素决定:

    • 更大的批量会计算更精确的梯度估计,但是回报却是小于线性的。
    • 极小批量通常难以充分利用多核架构。这促使我们使用一些绝对最小批量,低于这个值的小批量处理不会减少计算时间。
    • 如果批量处理中的所有样本可以并行地处理,那么内存消耗和批量大小会正比。对于很多硬件设施,这是批量大小的限制因素。
    • 在某些硬件上使用特定大小的数组时,运行时间会更少。尤其是在使用GPU时,通常使用2的幂数作为批量大小可以获得更少的运行时间。一般,2的幂数的取值范围是32~256,16有时在尝试大模型时使用。
    • 可能是由于小批量在学习过程中加入了噪声,它们会有一些正则化效果。泛化误差通常在批量大小为1时最好。因为梯度估计的高方差,小批量训练需要较小的学习率以保持稳定性。因为降低的学习率和消耗更多步骤来遍历整个训练集都会产生更多的步骤,所以会导致总的运行时间非常大。

    不同的算法使用不同的方法从小批量中获取不同的信息。有些算法对采样误差比其他算法更敏感,这通常有两个可能原因。一个是它们使用了很难在少量样本上精确估计的信息,另一个是它们以放大采样误差的方式使用了信息。仅基于梯度 g g g的更新方法通常相对鲁棒,并能使用较小的批量获得成功,如100。使用Hessian矩阵 H H H,计算如 H − 1 g H^{-1}g H1g更新的二阶方法通常需要更大的批量,如10000。这些大批量需要最小化估计 H − 1 g H^{-1}g H1g的波动。假设 H H H被精确估计,但是有病态条件数。乘以 H H H或是其逆会放大之前存在的误差(指 g g g的估计误差)。即使 H H H被精确估计, g g g中非常小的变化也会导致更新值 H − 1 g H^{-1}g H1g中非常大的变化。当然,我们通常只会近似地估计 H H H,因此相对于我们使用具有较差条件的操作去估计 g g g,更新 H − 1 g H^{-1}g H1g会含有更多的误差。

    小批量是随机抽取的这点也很重要。从一组样本中计算出梯度期望的无偏估计要求这些样本是独立的。我们也希望两个连续的梯度估计是互相独立的,因此两个连续的小批量样本也应该是彼此独立的。很多现实的数据集自然排列,从而使得连续的样本之间具有高度相关性。例如,假设我们有一个很长的血液样本测试结果清单。清单上的数据有可能是这样获取的,头5个血液样本于不同时间段取自第一个病人,接下来3个血液样本取自第二个病人,再随后的血液样本取自第3个病人。如果从这个清单上顺序抽取样本,那么我们的每个小批量数据的偏差都很大,因为这个小批量很可能只代表着数据集上众多患者中的某一个患者。在这种数据集中的顺序有很大影响的情况下,很有必要在抽取小批量样本前打乱样本顺序。对于非常大的数据集,如数据中心含有几十亿样本的数据集,我们每次构建小批量样本时都将样本完全均匀地抽取出来是不太现实的。幸运的是,实践中通常将样本顺序打乱一次,然后按照这个顺序存储起来就足够了。之后训练模型时会用到的一组组小批量连续样本是固定的,每个独立的模型每次遍历训练数据时都会重复使用这个顺序。然而,这种偏离真实随机采样的方法并没有很严重的有害影响。不以某种方式打乱样本顺序才会极大地降低算法的性能。很多机器学习上的优化问题都可以分解成并行地计算不同样本上单独的更新。换言之,我们在计算小批量样本 X X X上最小化 J ( X ) J(X) J(X)的更新时,同时可以计算其他小批量样本上的更新。小批量随机梯度下降的一个有趣动机是,只要没有重复使用样本,它将遵循着真实泛化误差的梯度。很多小批量随机梯度下降方法的实现都会打乱数据顺序一次,然后多次遍历数据来更新参数。第一次遍历时,每个小批量样本都用来计算真实泛化误差的无偏估计。第二次遍历时,估计将会是有偏的,因为它重新抽取了已经用过的样本,而不是从和原先样本相同的数据生成分布中获取新的无偏的样本。我们不难从在线学习的情况中看出随机梯度下降最小化泛化误差的原因。这时样本或者小批量都是从数据流中抽取出来的。换言之,学习器好像是一个每次看到新样本的人,每个样本 ( x , y ) (x, y) (x,y)都来自数据生成分布 p data ( x , y ) p_{\text{data}}(x, y) pdata(x,y),而不是使用大小固定的训练集。这种情况下,样本永远不会重复;每次更新的样本是从分布 p data p_{\text{data}} pdata中采样获得的无偏样本。

    x x x y y y是离散时,以上的等价性很容易得到。在这种情况下,泛化误差可以表示为:
    J ∗ ( θ ) = ∑ x ∑ y p data ( x , y ) L ( f ( x ; θ ) , y ) J^*(\theta)=\sum_x\sum_yp_{\text{data}}(x, y)L(f(x;\theta), y) J(θ)=xypdata(x,y)L(f(x;θ),y)

    上式的准确梯度为:
    g = ∇ g J ∗ ( θ ) = ∑ x ∑ y p data ( x , y ) ∇ g L ( f ( x ; θ ) , y ) g=\nabla_gJ^*(\theta)=\sum_x\sum_yp_{\text{data}}(x, y)\nabla_gL(f(x;\theta), y) g=gJ(θ)=xypdata(x,y)gL(f(x;θ),y)

    我们已经在对数似然中看到了相同的结果,现在我们发现这一点在包括似然的其他函数 L L L上也是成立的。在一些关于 p data p_{\text{data}} pdata L L L的温和假设下,在 x x x y y y是连续时也能得到类似的结果。因此,我们可以从数据生成分布 p data p_{\text{data}} pdata抽取小批量样本 { x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) } \{x^{(1)}, x^{(2)}, \cdots, x^{(m)}\} {x(1),x(2),,x(m)}以及对应的目标 y ( i ) y^{(i)} y(i),然后计算该小批量上损失函数关于对应参数的梯度:
    g ^ = 1 m ∇ θ ∑ i L ( f ( x ( i ) ; θ ) , y ( i ) ) \hat{g}=\frac{1}{m}\nabla_\theta\sum_iL(f(x^{(i)};\theta), y^{(i)}) g^=m1θiL(f(x(i);θ),y(i))

    以此获得泛化误差准确梯度的无偏估计。最后,在泛化误差上使用SGD方法在方向 g ^ \hat{g} g^上更新 θ \theta θ

    当然,这个解释只能用于样本没有重复使用的情况。然而,除非训练集特别大,通常最好是多次遍历训练集。当多次遍历数据集更新时,只有第一遍满足泛化误差梯度的无偏估计。但是,额外的遍历更新当然会由于减小训练误差而得到足够的好处,以抵消其带来的训练误差和测试误差间差距的增加。随着数据集的规模迅速增长,超越了计算能力的增速,机器学习应用每个样本只使用一次的情况变得越来越常见,甚至是不完整地使用训练集。在使用一个非常大的训练集时,过拟合不再是问题,而欠拟合和计算效率变成了主要的顾虑。

    展开全文
  • 五年级下册数学优化答案 五年级下册优化设计参考答案 五年级下册优干线北师大版.doc
  • 数学建模国赛优秀论文集锦-关于公交车调度的优化问题 (2)
  • 自来水管道铺设问题建模与计算/最优化问题/自来水管道铺设问题建模与计算/最优化问题/自来水管道铺设问题建模与计算/最优化问题/自来水管道铺设问题建模与计算/最优化问题/
  • 粒子群算法在求解数学建模最优化问题中的应用,希望能帮到参加建模的同志
  • 数学建模-关于公交车调度的优化问题.PDF

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 267,324
精华内容 106,929
关键字:

数学优化问题