精华内容
下载资源
问答
  • 蝗虫优化算法GOA优化支持向量机分类模型的构建过程2.1 优化模型的建立2.2 算法流程3. GOA-SVM数据分类模型的参数设置4. 运行结果5. MATLAB代码与数据下载地址 1. 模型与算法描述 1.1 蝗虫优化算法原理介绍 蝗 虫 优

    基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码

    1. 模型与算法描述

    1.1 蝗虫优化算法原理介绍

    蝗 虫 优 化 算 法 ( Grasshopper Optimization Algorithm, GOA) 是一种新型的元启发式算法,由 Mirjalili 等人于2017年提出。该算法受幼虫和成年蝗虫大范围移动与寻找食物源的聚集行为启发,具有操作参数少,公式简单的特点。针对基准测试函数优化问题的实验结果表明,GOA的收敛性优于粒子群算法。
    在这里插入图片描述

    1.1.1 蝗虫群的位置移动

    X i d = c ( ∑ j = 1 , j ≠ i N c u b d − l b d 2 s ( ∣ x j d − x i d ∣ ) x j − x i d i j ) + T d ( 1 ) X_{i}^{d}=c\left(\sum_{j=1,j \neq i}^{N} c \frac{u b_{d}-l b_{d}}{2} s\left(\left|x_{j}^{d}-x_{i}^{d}\right|\right) \frac{x_{j}-x_{i}}{d_{i j}}\right)+{T}_{d}(1) Xid=cj=1,j=iNc2ubdlbds(xjdxid)dijxjxi+Td(1)

    式中, d d d是表示变量维度, i , j i, j i,j表示蝗虫个体编号, u b d 、 l b d ub_d、lb_d ubdlbd分别表示变量的上限与下限, T d T_d Td表示最优的蝗虫个体位置, d i j d_{ij} dij是两个蝗虫个体之间的欧式距离,c是控制参数,用于平衡算法的全局探索和局部开发。函数 s ( ) s( ) s()表示两个蝗虫个体之间的交互力影响。

    控制参数 c c c 一般设计为线性递减,使得算法具有动态与不确定搜索能力:
    c = c max ⁡ − t c max ⁡ − c min ⁡ T max ⁡ ( 2 ) c=\mathrm{c}_{\max }-t \frac{\mathrm{c}_{\max }-\mathrm{c}_{\min }}{\mathrm{T}_{\max }}(2) c=cmaxtTmaxcmaxcmin(2)

    式中, c m a x 、 c m i n c_{max}、c_{min} cmaxcmin分别表示递减区间的最大值与最小值, t t t表示当前的迭代次数, T m a x T_{max} Tmax表示最大迭代次数。

    1.1.2 蝗虫个体之间的相互影响

    s ( r ) = f e − r l − e − r ( 3 ) s(r)=f \mathrm{e}^{\frac{-r}{l}}-\mathrm{e}^{-r}(3) s(r)=felrer(3)

    式中, f 、 l f、l fl分别表示吸引强度参数与吸引尺度参数,取0.5和1.5。
    s ( r ) > 0 s(r)>0 s(r)>0时, r r r的取值范围表示吸引区.
    s ( r ) < 0 s(r)<0 s(r)<0时, r r r的取值范围表示排斥区.
    s ( r ) = 0 s(r)=0 s(r)=0时,蝗虫个体之间既不排除也不吸引, r r r的取值范围表示舒适区.

    1.1.3 蝗虫优化算法的基本实现步骤

    1. 初始化最大迭代次数N,种群大小n,变量范围,控制参数的最大值最小值等参数。
    2. 初始化种群位置,计算初始的个体适应度,并得到最优蝗虫位置与适应度。
    3. 开始循环(K=1):使用公式(2)、(3)更新参数。使用公式(1)更新蝗虫个体的位置,并检查是否越界。
    4. 计算每个蝗虫的适应度,更新到目前为止找到的最优食物源(即最优个体位置与适应度)。
    5. 重复执行步骤3和4,直到满足最大迭代次数,结束循环(K=N)。
    6. 返回最优的参数取值和最优的适应度值。

    1.2 支持向量机分类介绍

    使用台湾林智仁教授开发的libsvm支持向量机库函数,可以进行支持向量机的多分类,并且能简单的设置支持向量机核函数属性,比如线性核函数,多项式核函数,RBF核函数。RBF核函数具有映射范围广、运算快速等特点,使用较为广泛。在libsvm的库函数中, C C C的值为1, σ \sigma σ默认取1/k,k为总类别数。这两个参数的取值与支持向量机模型学习能力的关系如下图所示:

    C C C取值 σ \sigma σ取值SVM模型的学习能力
    欠学习
    过学习

    使用智能优化算法优化支持向量机分类时,大多通过优化惩罚参数 C C C与核函数参数 σ \sigma σ来提高分类精度。

    2. 蝗虫优化算法GOA优化支持向量机分类模型的构建过程

    数据来源: 采用意大利红酒数据集进行分类模型的实现。数据集大小为178组样本,每组样本都具有13个特征,3种标签类型。获取的类型一般采用01的索引编码:

    类型编码
    11 0 0
    20 1 0
    30 0 1

    使用支持向量机做分类时,不需要通过索引编码的方式,直接获取123等整数类别即可(各种神经网络分类模型需要在程序中通过编码与解码索引,实现较高的分类精度)。

    为了方便操作,将特征与整数类型放到EXCEL中,读取代码的命令如下:

    %% 读取数据
    data=xlsread('数据.xlsx','Sheet1','A1:N178');  %使用xlsread函数读取EXCEL中对应范围的数据即可  
    
    %输入输出数据
    input=data(:,1:end-1);    %data的第一列-倒数第二列为特征指标
    output_labels=data(:,end);  %data的最后面一列为标签类型
    
    

    2.1 优化模型的建立

    优化惩罚参数c与核参数 σ \sigma σ,目标函数采用五折交叉验证的最佳准确率。目标函数公式如下:
     Fitness  = n N × 100 % \text { Fitness }=\frac{n}{N} \times 100 \%  Fitness =Nn×100%
    式中, n n n为识别准确的样本统计个数, N N N为识别的样本总数。适应度越大,说明优化模型的识别准确率越高。

    2.2 算法流程

    在这里插入图片描述

    3. GOA-SVM数据分类模型的参数设置

    GOA算法的参数设置:

    % GOA的参数选项初始化
    goa_option.maxgen = 100;                     %最大迭代次数
    goa_option.sizepop = 20;                %种群大小
    goa_option.cbound = [1e-5,1000];         %惩罚参数C的优化范围
    goa_option.gbound = [1e-5,1000];        %核参数g的优化范围
    goa_option.v = 5;                %交叉验证折数
    
    %系数c的变化范围
    cMax=1;
    cMin=0.00004;
    f=0.5;L=1.5;   %相互作用力公式的系数常量
    
    

    GOA优化后的参数赋给SVM:

    %% 利用最佳的参数进行SVM网络训练
    cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
    model = libsvmtrain(train_output_labels,train_input,cmd);
    
    

    4. 运行结果

    4.1 蝗虫优化算法的适应度曲线和优化后的c、g参数值,交叉验证CV准确率

    在这里插入图片描述
    4.2 蝗虫优化算法优化后的实际类型与识别类型对比图像

    在这里插入图片描述
    从适应度曲线来看,蝗虫优化算法的收敛速度很快,但后期发生聚群行为(可能陷入局部最优)。SVM对红酒数据集的分类准确率一般为97%上下,故起到了优化的效果。

    参考文献: [1]Shahrzad, Saremi, Seyedali, et al. Grasshopper Optimisation Algorithm: Theory and application[J]. Advances in Engineering Software, 2017.

    5. MATLAB代码与数据下载地址

    1.支持向量机SVM分类

    2.灰狼优化算法GWO优化支持向量机分类

    3.遗传算法GA优化支持向量机分类

    4.粒子群算法PSO优化支持向量机分类

    5.蝗虫优化算法GOA优化支持向量机分类

    展开全文
  • Matlab环境下PSO粒子群优化算法模型测试一、粒子群优化算法简介1.1简介1.2背景1.3与遗传算法相比较1.3.1共同点1.3.2不同点1.4PSO优缺点1.5关于参数的设置二、算法流程三、代码模型3.1源代码 一、粒子群优化算法...

    一、粒子群优化算法简介

    1.1简介

    粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。

    1.2背景

    模拟捕食
    PSO模拟鸟群的捕食行为。一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻离食物最近的鸟的周围区域。
    PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
    PSO初始化
    PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解,在每一次叠代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest,另一个极值是整个种群找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最优粒子的邻居,那么在所有邻居中的极值就是局部极值。
    值得注意的是,由于POS每一次的初始化都是随机的粒子,因此导致每一次的实验结果都不同。所以为了综合不同参数下的训练情况,此次模型测试采用同一参数计算十次取平均值的方法得出最优适应度。

    1.3与遗传算法相比较

    1.3.1共同点

    ①种群随机初始化。
    ②对种群内的每一个个体计算适应值(fitness value)。适应值与最优解的距离直接有关。
    ③种群根据适应值进行复制。
    ④如果终止条件满足的话,就停止,否则转步骤② 。
    从以上步骤,我们可以看到PSO和遗传算法有很多共同之处。两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找到最优解。但是,PSO没有遗传操作如交叉(crossover)和变异(mutation),而是根据自己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。

    1.3.2不同点

    与遗传算法比较,PSO的信息共享机制是很不同的。在遗传算法中,染色体(chromosomes)互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动。在PSO中, 只有gBest (orlBest) 给出信息给其他的粒子, 这是单向的信息流动。整个搜索更新过程是跟随当前最优解的过程。与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解。

    1.4PSO优缺点

    演化计算的优势,在于可以处理一些传统方法不能处理的。例子例如不可导的节点传递函数或者没有梯度信息存在。
    但是缺点在于:
    1、在某些问题上性能并不是特别好。
    2.网络权重的编码而且遗传算子的选择有时比较麻烦。
    最近已经有一些利用PSO来代替反向传播算法来训练神经网络的论文。研究表明PSO 是一种很有潜力的神经网络算法。PSO速度比较快而且可以得到比较好的结果。而且还没有遗传算法碰到的问题。

    1.5关于参数的设置

    在这里插入图片描述
    进化次数maxgen:即总迭代的数目,即循环条件

    粒子数sizepop: 即种群规模, 一般取 20–40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或 200

    变量取值范围Vmax:即位置的变量维度,根据对应的变量取值范围取设置限制速度围,根据具体要求不宜设置过大或者过小。

    加速因子: c1 和 c2 通常等于 2. 不过在文献中也有其他的取值. 但是一般 c1 等于 c2 并且范围在0和4之间

    全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再用局部PSO进行搜索.

    惯性权重:根据具体情况设置,惯性表示受影响的权重占比,一般前期惯性取大有利于迭代找出最优,到迭代后期则需要适当降低惯性权重。

    二、算法流程

    流程
    标准PSO的算法流程如下:
      1)初始化一群微粒(群体规模为m),包括随机的位置和速度;
      2)评价每个微粒的适应度;
      3)对每个微粒,将它的适应值和它经历过的最好位置pbest的作比较,如果较好,则将其作为当前的最好位置pbest;
      4)对每个微粒,将它的适应值和全局所经历最好位置gbest的作比较,如果较好,则重新设置gbest的索引号;
      5)变化微粒的速度和位置;
      6)如未达到结束条件(通常为足够好的适应值或达到一个预设最大代数Gmax),回到步骤2)。

    其数学概念如下:
    在这里插入图片描述

    三、代码模型

    此次试验我们要展示的是根据迭代的次数来动态的调整三个主要的影响参数,我们将通过动态修改C1 ,C2 和W 的值来看看具体的影响。

    3.1源代码(不变参数)

    参数不随着迭代次数的增加而发生改变,而是根据原定的数据不改变。
    这里将数据初始化为以下的值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    其中实验结果:
    在这里插入图片描述

    每一次的最适应度通过连续运行十次取平均值来看:
    3.979836+3.979836+3.979836+0.000000+2.984877+2.984877+5.969754+0.000000+3.979836+4.320690=3.2179538

    3.2源代码(改变惯性权重参数)

    这里的w根据迭代次数的改变而改变呈线性减少,从1下降到0.2
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    最终最优适应度的平均值为:
    2.050777+3.071266+0.000000+5.969754+0.000000+0.995640+0.994959+0.000000+0.000000+0.000000=1.3082396

    3.3源代码(改变加速因子和惯性权重参数)

    进行组合调试的结果如下
    在这里插入图片描述
    最终最优适应度的平均值为:
    0.000000+4.122656+3.015954+1.070628+3.979836+2.984877+0.009834+1.989918+1.989918+0.000000=1.916317

    可想这个三个组合调试的效果并没有之前的好。

    3.3源代码(只改变加速因子参数)

    只改变c1和c2

    在这里插入图片描述
    在这里插入图片描述
    4.974795+0.000000+0.000000+3.979836+6.964713+3.979836+1.989918+3.979836+1.989918+5.969754=3.3828606
    可见这样的迭代效率也不是很高。
    c1 c2 交换参数变化也差不多。
    以上的这里都按照线性的变化来迭代。

    3.4源代码(将sizepop改为50)

    2.984877+2.984877+4.974795+2.515301+2.984877+2.984877+0.994959+5.969754+4.974795+13.929417=4.5298529
    效果不是很好!

    3.3源代码(将适应度函数维数改变不同的值)

    将适应度函数维度改为5
    的适应度值:
    0.000000+0.000000+0.000000+0.000000+0.000000+0.000000+0.000000+0.000000+0.000000=0
    !!!!!!!!!!!!!!
    将适应度函数维度改为20
    的适应度值:
    9.949591+10.944550+5.969754+6.964713+7.959672+12.934468+3.983015+6.964713+3.072335=非常大!!!!!!!!!!!!!!!

    总是合适的参数设置有利于适应值的取到。
    维度越小越容易也越快得到最正确的适应值。

    展开全文
  • 优化算法——常见优化算法分类及总结

    万次阅读 多人点赞 2018-10-27 12:54:53
    之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。 最优化问题  在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在...

    之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。

    最优化问题

      在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。

      工程设计中最优化问题(optimalization problem)的一般提法是要选择一组参数(变量),在满足一系列有关的限制条件(约束)下,使设计指标(目标)达到最优值。因此,最优化问题通常可以表示为数学规划形式的问题。进行工程优化设计时,应将工程设计问题用上述形式表示成数学问题,再用最优化的方法求解。这项工作就是建立优化设计的数学模型。

    optimalization

      
      最优化问题分为函数优化问题和组合优化问题两大类,其中函数优化的对象是一定区间的连续变量,而组合优化的对象则是解空间中的离散状态。其中典型的组合优化问题有旅行商(Traveling salesman problem,TSP)问题、加工调度问题(Scheduling problem,如Flow-shop,Job-shop)、0-1背包问题(Knapsack problem)、装箱问题(Bin packing problem)、图着色问题(Graph coloring problem)、聚类问题(Clustering problem)等。

    最优化算法

    根据自己对最优化的理解,采用最优化算法解决实际问题主要分为下列两步:

    • 建立数学模型。对可行方案进行编码(变量),约束条件以及目标函数的构造。
    • 最优值的搜索策略。在可行解(约束条件下)搜索最优解的方法,有穷举、随机和启发式搜索方法。

    最优化算法有三要素:变量(Decision Variable)、约束条件(Constraints)和目标函数(Objective function)。最优化算法,其实就是一种搜索过程或规则,它是基于某种思想和机制,通过一定的途径或规则来得到满足用户要求的问题的解。

    优化问题相关算法有如下分类:

    优化算法

    精确算法(绝对最优解)

    精确算法包括线性规划、动态规划、整数规划和分支定界法等运筹学中的传统算法,其算法计算复杂性一般很大,只适合于求解小规模问题,在工程中往往不实用。

    启发式算法(近似算法)

      启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。

    领域搜索算法。从任一解出发,对其领域的不断搜索和当前解的替换来实现优化。根据搜索行为,它又可分为局部搜索法和指导性搜索法。

    • 局部领域搜索法(也称爬山法)。以局部优化策略在当前解的领域中贪婪搜索,如只接受优于当前解的状态作为下一当前解的爬山法;接受当前邻域中的最好解作为下一当前解的最陡下降法等。

    • 指导性搜索法。利用一些指导规则来指导整个解空间中优良解的探索,如SA、GA、EP、ES和TS等.

    个体启发(寻找相对最优)

    特点:每次输出的是相同的。从一个解开始,寻找最优,易陷入局部最优。

    爬山算法

    算法思想:从当前的节点开始,和周围的邻居节点的值进行比较。如果当前节点是最大的,那么返回当前节点,作为最大值(即山峰最高点);反之就用最高的邻居节点替换当前节点,从而实现向山峰的高处攀爬的目的。

    其实就是,在初始值的附近,找到最大的一个。

    • 优点

      • 容易理解,容易实现,具有较强的通用性;
      • 局部开发能力强,收敛速度很快
    • 缺点

      • 全局开发能力弱,只能搜索到局部最优解;
      • 搜索结果完全依赖于初始解和邻域的映射关系。

    禁忌算法(Tabu Search,TS)

    基本思想:基于爬山算法的改进,标记已经解得的局部最优解或求解过程,并在进一步的迭代中避开这些局部最优解或求解过程。局部搜索的缺点在于,太过于对某一局部区域以及其邻域的搜索,导致一叶障目。为了找到全局最优解,禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它,从而或得更多的搜索区域

    • 特点:

      • 避免在搜索过程中的循环
      • 只进不退的原则,通过禁忌表实现
      • 不以局部最优作为停止准则
      • 邻域选优的规则模拟了人类的记忆功能
    • 禁忌表:用于防止搜索出现循环

      • 记录前若干步走过的点、方向或目标值,禁止返回
      • 表是动态更新的
      • 表的长度称为Tabu-Size
    • 禁忌表的主要指标(两项指标)

      • 禁忌对象:禁忌表中被禁的那些变化元素
      • 禁忌长度:禁忌的步数
    • 禁忌对象(三种变化)

      • 以状态本身或者状态的变化作为禁忌对象
      • 以状态分量以及分量的变化作为禁忌对象
      • 采用类似的等高线做法,以目标值变化作为禁忌对象
    • 禁忌长度:可以是一个固定的常数(T=c),也可以是动态变化的,可按照某种规则或公式在区间内变化。

      • 禁忌长度过短,一旦陷入局部最优点,出现循环无法跳出;
      • 禁忌长度过长,候选解全部被禁忌,造成计算时间较大,也可能造成计算无法继续下去。

    参考:

    1. 禁忌搜索算法(Tabu Search)
    2. 禁忌搜索算法详解

    贪婪算法

    从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。

    基本都要先排序,从排序的开始那个依次判断,符合就留下不符合就去掉。

    模拟退火(simulated annealing,SA)

    模拟退火算法作为局部搜索算法的扩展,在每一次修改模型的过程中,随机产生一个新的状态模型,然后以一定的概率选择邻域中能量值大的状态.这种接受新模型的方式使其成为一种全局最优算法,并得到理论证明和实际应用的验证.SA虽然在寻优能力上不容置疑,但它是以严密的退火计划为保证的,具体地讲,就是足够高的初始温度、缓慢的退火速度、大量的迭代次数及同一温度下足够的扰动次数。

    用兔子的故事来说:兔子喝醉了。他随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,他渐渐清醒了并朝他踏过的最高方向跳去。这就是模拟退火。

    其实就是,先用初始值进行随机更新,记录每次更新的值,最后取历史记录中最大的值。

    参考:模拟退火算法

    群体智能(全局最优)

    类别:

    • 粒子群算法(PSO)
    • 蚁群算法(ACO)
    • 人工蜂群算法(ABC)
    • 人工鱼群算法(AFSA)
    • 混洗蛙跳算法(SFLA)
    • 烟花算法(FWA)
    • 细菌觅食优化(BFO)
    • 萤火虫算法(FA)

    特点:

    • 全局寻优
    • 每次的解都不同
    • 时间较长

    智能计算包括:

    • 进化算法(EC),如遗传算法。
    • 模糊逻辑
    • 群智能(SI)算法
    • 人工免疫系统(AIS)
    • 人工神经网络(ANN)

    参考:

    1. 最优化问题及其分类
    2. 遗传算法
    3. 《MATLAB神经网络30个案例分析》的13个案例中的GA优化SVM参数
    4. 手把手教你实现SVM算法(一)
    5. 遗传算法学习笔记(一):常用的选择策略
    6. 粒子群算法介绍(讲解的很清晰,将PSO的算法原理、算法特点以及参数的设置)
    7. 群体智能简介ppt(粒子群和人工蚁群优化)
    8. 优化算法分类

     

    原文出处:http://dingby.site/2018/04/07/%E6%9C%80%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94%E5%B8%B8%E8%A7%81%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB%E5%8F%8A%E6%80%BB%E7%BB%93/

    展开全文
  • 1.深度学习基础模型算法原理及编程实现–01.感知机. 2.深度学习基础模型算法原理及编程实现–02.线性单元 . 3.深度学习基础模型算法原理及编程实现–03.全链接 . 4.深度学习基础模型算法原理及编程实现–04.改进...

    文章列表
    1.深度学习基础模型算法原理及编程实现–01.感知机.
    2.深度学习基础模型算法原理及编程实现–02.线性单元 .
    3.深度学习基础模型算法原理及编程实现–03.全链接 .
    4.深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 .
    5.深度学习基础模型算法原理及编程实现–05.卷积神经网络.
    6.深度学习基础模型算法原理及编程实现–06.循环神经网络.
    9.深度学习基础模型算法原理及编程实现–09.自编码网络.
    10.深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam.
    11.深度学习基础模型算法原理及编程实现–11.构建简化版的tensorflow—MiniFlow【实现MLP对MNIST数据分类】.

    [TOC]

    深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam

    优化算法的出现顺序从前往后依次为:SGD、SGDM、NAG、AdaGrad、AdaDelta、Adam、Nadam,这些优化算法的演变其实都来自一个模型,其演化路径如下图所示:
    这里写图片描述
    这里写图片描述

    1 一阶优化方法(梯度下降)

    这里写图片描述

    1.1 Jacobi矩阵的性质

    Jacobi矩阵给出了优化问题中当前点的最优线性逼近。需要注意的是许多神经网络的jacobi矩阵总是秩亏损的,这导致反向传播算法仅仅得到搜寻方向上的部分信息,从而导致训练时间过长。比如,如果jacobi矩阵是diag([1,0,1,0,0,1,0,1]),那么仅在对角线值元素值为1的维度所对应的参数有更新,对角线元素值为0的维度更新为0。

    1.2 Gradient Descent

    这里写图片描述

    1.3 Noisy gradient descent

    这里写图片描述

    1.4 Vanilla SGD

    这里写图片描述

    1.5 SGD with Momentum(缩写SGDM)

    这里写图片描述

    1.6 NAG(Nesterov Accelerated Gradient)

    这里写图片描述

    2 学习率退火

    如果学习率过高,参数更新量过大,参数就会无规律地跳动,不能够稳定到损失函数更深更窄的凹点中去。如果慢慢减小它,可能在前期的很长时间内看参数无规律的跳动。如果快速减小它,参数更新量可能下降过快,使得学习速度变慢甚至趋于0。常用的学习率退火有3种方式:

    2.1 随步数衰减

    特定周期个数后就降低学习率。比如每过5或10个周期就将学习率减少一半或更多。或者用固定的学习率来进行训练,每当验证集错误率停止下降,就以一定的系数来降低学习率。

    2.2 指数衰减

    这里写图片描述

    2.3 1/t衰减

    这里写图片描述

    3 二阶优化方法(牛顿法,又是一阶求跟方法)

    一阶方法只使用梯度和函数评估去优化目标。二阶方法比如牛顿方法或者逆牛顿方法使用海塞矩阵或近似。尽管这为优化提供了额外的曲率信息,但精确计算二阶信息还是比较困难的。

    3.1 牛顿法原理

    3.1.1 牛顿法是一阶求跟方法

    这里写图片描述

    3.1.2 牛顿法是二阶优化方法

    3.1.2.1 二阶泰勒分解求解

    这里写图片描述

    3.1.2.2 用求f’(x)=0根的方法来求解

    这里写图片描述

    3.1.3 海塞矩阵的性质

    从式(1.9)可以发现,由于Hessian矩阵描述了损失函数的局部曲率,通过乘以Hessian矩阵的逆矩阵,可以在曲率小的时候大步前进,在曲率大的时候小步前进,从而使得参数更高效的更新。
    此外,导数为0的点称为稳定点(Stationary points)。稳定点可以是(局部)最小值、(局部)最大值及鞍点。可通过计算Hessian矩阵H来进行判别:
    (1)非退化的情况
     若H负定(所有特征值都是负的),这是(局部)最大值.
     若H正定(所有特征值都是正的),这是(局部)最小值.
     若H特征值既有正的,又有负的,那该点是鞍点。(有些方向函数值上升,有些方向函数值下降)。
    种非退化的情况下面,我们考虑一个重要的类别,即strict saddle函数.这种函数有这样的特点:对于每个点x
    要么x的导数比较大
    要么x的Hessian矩阵包含一个负的特征值
    要么x已经离某一个(局部)最小值很近了
    为什么我们要x满足这三个情况的至少一个呢?因为
    (2)退化的情况
     H特征值含0的情况。此时无法判断稳定点的类别,需参照更高维的导数。

    3.1.4 海塞矩阵近似计算

    3.1.4.1 对角线近似逆矩阵

    这里写图片描述

    3.1.4.2 Adadelta中的近似方法

    3.1.4.2.1 时间加权

    这里写图片描述

    3.1.4.2.2 利用二阶优化方法的量纲是正确的

    这里写图片描述

    3.1.4.2.3 近似Hessian方法

    这里写图片描述

    3.2 AdaGrad

    这里写图片描述

    3.3 RMSProp

    这里写图片描述

    3.4 AdaDelta

    这里写图片描述

    3.5 Adam

    这里写图片描述

    3.6 Adamax

    3.7 Nadam

    4 不同优化方法结果比对

    4.1 GD

    eta1 = 0.1
    step: 100 loss: 0.0044979134602375365
    这里写图片描述

    4.2 Vanilla SGD

    eta1 = 0.1
    step: 400 loss: 0.001108528235755615
    这里写图片描述

    4.3 Mini_batch SGD

    eta1 = 0.1
    step: 500 loss: 0.0062751857700584805
    这里写图片描述

    4.4 SGDM

    eta1 = 0.1
    beta1 = 1 - eta1
    step: 400 loss: 0.005477318943045696
    这里写图片描述

    4.5 NAG

    alpha = 0.05 #Nestreov项一步向前学习率
    eta1 = 0.1
    beta1 = 1 - eta1
    step: 500 loss: 0.0027062579259504315
    这里写图片描述

    4.6 Adagrad

    eta1 = 0.1
    step: 2600 loss: 26.2471475715
    这里写图片描述

    4.7 RMSProp

    eta1 = 0.1
    eta2 = 0.1
    beta2 = 1 - eta2
    step: 500 loss: 0.00855535079012
    这里写图片描述

    4.8 Adadelta

    eta1 = 0.1
    beta1 = 1 - eta1
    eta2 = 0.1
    beta2 = 1 - eta2
    step: 100 loss: 0.0170838268612
    这里写图片描述

    4.9 Adam

    eta1 = 0.1
    beta1 = 1 - eta1
    eta2 = 0.1
    beta2 = 1 - eta2
    step: 100 loss: 0.0170408324886
    这里写图片描述

    5 编程实现

    python版本:https://pan.baidu.com/s/1qZLJ7Gg

    展开全文
  • 然而,只能从数据中导出这些标记,它与分类(例如分类决策树等)不同,分类是监督分类,即使用由类标号(标签数据)已知的对象开发的模型,对新的、无标记的对象赋予类标号。因此, 聚类分析也称为非监督分类 。 ...
  • 鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 文章目录鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现1. 算法描述2. 鲸鱼优化算法优化BP神经网络预测的步骤与流程图设计3. WOA-BP...
  • GWO(灰狼优化算法MATLAB源码逐行中文注解

    万次阅读 多人点赞 2016-09-08 10:26:19
    优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。
  • 优化算法之粒子群优化

    千次阅读 2017-05-25 10:45:33
    粒子群算法,也称粒子群优化算法(Particle Swarm Optimization),缩写为PSO, 是近年来发展起来的一种新的进化算法(Evolutionary Algorithm - EA)。PSO算法属于进化算法的一种,和模拟退火算法相似,它也是从...
  • 优化算法

    千次阅读 2010-03-13 10:05:00
    PSO粒子群优化算法 1. 引言 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统...
  • GWO(灰狼优化算法

    万次阅读 多人点赞 2019-09-16 17:32:40
    优化SVM算法的参数c和g为例,对GWO算法MATLAB源码进行了逐行中文注解。 完整程序和示例文件地址:http://download.csdn.net/detail/u013337691/9624866 链接:http://pan.baidu.com/s/1hrCheBE 密码:4p6m ——...
  • 本文总结了常用的数学模型方法和它们的主要用途,主要包括数学和统计上的建模方法,关于在数学建模中也挺常用的机器学习算法暂时不作补充,以后有时间就补。至于究竟哪个模型更好,需要用数据来验证,还有求解方法也...
  • 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)

    万次阅读 多人点赞 2018-07-14 23:00:34
    最近在看晓川老(shi)师(shu)的博士论文,接触了混合高斯模型(Gaussian mixture model, GMM)和EM(Expectation Maximization)算法,不禁被论文中庞大的数学公式所吓退。本文通过查阅相关资料,在复杂巧妙的推理...
  • 智能优化算法

    万次阅读 2007-06-03 12:57:00
    引言粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统初始化为一组随机解,...
  • 带约束的多目标优化进化算法综述

    千次阅读 2020-12-16 16:26:09
    约束优化进化算法综述 1.摘要 约束优化进化算法主要研究如何利用进化计算方法求解约束优化问题,是进化计算领城的一个重要研究课题.约束优化问题求解存在约束区域离散、等式约束、非线性约束等挑战,其问题的本质是,...
  • 上篇博客介绍的层次聚类,尤其是AGNES这一传统的层次聚类算法。这篇博客介绍层次聚类的优化算法:BIRCH算法(平衡迭代削减聚类法),以及对BIRCH优化的CURE算法(使用代表点的聚类法)。
  • 粒子群优化算法

    千次阅读 2009-12-22 18:58:00
    粒子群优化算法 1. 引言 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统...
  • 数学建模常用模型算法学习(部分)

    千次阅读 多人点赞 2019-08-16 16:19:40
    数学建模常用模型算法学习(部分)神经网络(较好)混沌序列预测(高大上)数据包络(DEA)分析法(较好)支持向量机(高大上)多元分析1. 聚类分析2. 判别分析3. 多维标度法(一般)分类与判别1. 距离聚类(系统...
  • 粒子群优化算法(PSO)

    万次阅读 多人点赞 2018-03-30 21:54:25
    1. 概念 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。 源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来...
  • [人工智能] 粒子群优化算法 & 差分进化算法

    千次阅读 多人点赞 2018-05-17 12:14:38
    粒子群优化算法 &amp; 差分进化算法 前言 算法理论 算法实践 可视化 前言 本次带来粒子群优化算法和差分进化算法,解决单目标连续优化问题。算法的benchmark全部来自...
  • 初探粒子群优化算法(PSO)

    千次阅读 多人点赞 2020-07-08 20:36:37
    初探粒子群优化算法(PSO)粒子群优化算法简介PSO的优点PSO的缺点PSO的原理及基本概念算法描述参数分析粒子群的拓扑结构初始化时的前人经验 粒子群优化算法简介 粒子群优化算法(PSO)最初是由Kennedy和Eberhart博士...
  • 目标检测算法优化技巧

    千次阅读 多人点赞 2019-02-28 08:52:07
    论文:Bag of Freebies for Training Object ...这篇论文介绍目标检测算法的一些优化技巧,目前已经在GluonCV中实现了,整体看下来和之前的那篇图像分类算法优化技巧的论文(Bag of Tricks for Image Classificat...
  • 感谢阅读腾讯AI Lab微信号第64篇文章。AI领域顶会NeurIPS正在加拿大蒙特利尔举办。本文针对实验室关注的几个研究热点,模型压缩、自动机器学习、机器学习与最优化算...
  • Lightgbm 直方图优化算法深入理解

    万次阅读 多人点赞 2018-10-13 17:36:43
    一、概述 在之前的介绍Xgboost的众多博文中,已经...为了解决这个问题,Lightgbm 选择了基于 histogram 的决策树算法。相比于 pre-sorted算法,histogram 在内存消耗和计算代价上都有不少优势。 histogram算法简单来...
  • 文章目录一 项目展示二 依赖环境与导读2.1依赖环境2.2 本文导读三 模型训练3.1 新手也能做对的教学3.2 高手也爱的黑科技:无损的半精度模型模型优化4.1 Openvino 介绍 可以参见这篇博客4.2 Openvino安装4.3 Open...
  • 总体分类,机器学习中的算法模型可以分两大类: 监督学习算法 无监督学习算法 监督学习 监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有导师训练。 在监督...
  • 粒子群优化算法介绍

    万次阅读 2017-03-04 09:59:28
    KING Do more, say less Blog  About  Archive ...粒子群优化算法介绍 – 缩写为PSO。是近些年发展起来的一种新的进化算法。和模拟退火算法相似。 – 从随机解出发,通
  • AI产品经理需要懂的算法模型

    千次阅读 2018-11-28 16:57:05
    一个产品经理经常疑惑的概念:算法模型的关系,产品经理懂得解决问题时将问题抽象为模型,对模型求解用算法,没有谁大谁小,算法模型没有绝对的分界线。 这篇将主要从时下各种算法模型用于精准推荐都有其各自的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,781
精华内容 28,312
关键字:

优化模型的算法类别