导航:首页 > 源码编译 > 模型算法中aor是啥意思

模型算法中aor是啥意思

发布时间:2022-11-29 00:50:41

A. 数学建模中的数学模型和算法有什么关系,怎样理解它们之间的联系和区别

模型是将实际问题转换为数学问题,算法是求解模型的方法。

B. 推荐算法之模型协同过滤(1)-关联规则

关联规则是数据挖掘中的典型问题之一,又被称为购物篮分析,这是因为传统的关联规则案例大多发生在超市中,例如所谓的啤酒与尿布传说。事实上,“购物篮”这个词也揭示了关联规则挖掘的一个重要特点:以交易记录为研究对象,每一个购物篮(transaction)就是一条记录。关联规则希望挖掘的规则就是:哪些商品会经常在同一个购物篮中出现,其中有没有因果关系。为了描述这种“经常性”及“因果关系”,分析者定义了几个指标,基于这些指标来筛选关联规则,从而得到那些不平凡的规律。

(1)计算支持度
支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几。例如{Diaper, Beer}出现在事务 002、003和004中,所以它的支持度计数是3
支持度:支持度计数除于总的事务数。例如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3,所以它的支持度是3÷4=75%,说明有75%的人同时买了Diaper和Beer。

(2)计算置信度
置信度:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除于{Diaper}的支持度计数,为这个规则的置信度。例如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。

一般地,关联规则被划分为动态推荐,而协同过滤则更多地被视为静态推荐。
所谓动态推荐,就是推荐的基础是且只是当前一次(最近一次)的购买或者点击。譬如用户在网站上看了一个啤酒,系统就找到与这个啤酒相关的关联规则,然后根据这个规则向用户进行推荐。而静态推荐则是在对用户进行了一定分析的基础上,建立了这个用户在一定时期内的偏好排序,然后在这段时期内持续地按照这个排序来进行推荐。由此可见,关联规则与协同过滤的策略思路是完全不同的类型。
事实上,即便在当下很多能够拿到用户ID的场景,使用动态的关联规则推荐仍然是值得考虑的一种方法(尤其是我们经常把很多推荐方法的结果综合起来做一个混合的推荐),因为这种方法的逻辑思路跟协同过滤有着本质的不同,问题似乎仅仅在于:个人的偏好到底有多稳定,推荐到底是要迎合用户的长期偏好还是用户的当下需求。

挖掘关联规则主要有Apriori算法和FP-Growth算法。后者解决了前者由于频繁的扫描数据集造成的效率低下缺点。以下按照Apriori算法来讲解。

step 1: 扫描数据集生成满足最小支持度的频繁项集。
step 2: 计算规则的置信度,返回满足最小置信度的规则。

如下所示,当用户购买1商品时推荐2、3商品

C. 选址问题、模型与算法

背景音乐: Demons - Imagine Dragons

最近在研究选址问题,顺便就做了一个归纳整理。
这篇文章是第一部分,关于传统的、基于统计学的选址。
之后会有另一篇,是关于机器学习、深度学习在现代的选址问题的应用。

【来自网络】选址问题是运筹学中经典的问题之一。选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。选址是最重要的长期决策之一,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,甚至决定了企业的命运。好的选址会给人民的生活带来便利,降低成本,扩大利润和市场份额,提高服务效率和竞争力,差的选址往往会带来很大的不便和损失,甚至是灾难,所以,选址问题的研究有着重大的经济、社会和军事意义。

所谓选址问题,就是指在规划区域里选择一个或多个设施的位置,使得目标最优
PS:这个“设施”可以是工厂、饭店等实体,为了统一,我们都称呼它为设施。

从它的定义,我们可以抓住四个要素:设施、规划区域、位置(距离)、目标,我们来一个个分析:

按照设施的空间维度划分,可以将选址问题分为:

还有,按照设施的规划数量划分,可以将选址问题分为:

按照规划区域的结构划分,可以将选址问题分为:

或许说距离会更合适,因为我们确定设施位置的目的,就是为了获得设施与其他需求点的距离。
按照设施与需求点位置的关系,可以将所要获取的距离分为:

我们的目标是找到最好的位置,那么什么是最好的位置呢,换句话说,该如何量化这个目标呢?距离最短、费用最少、利润最大,或者其他定制的目标?
按照目标的数量,可以将选址问题分为:

可能洋洋洒洒看了上面一堆,对于选址问题还是没有一个清晰的概念,所以我整理了三个选址问题中的基本问题。而目前选址问题里的一些难题,都是它们的拓展(或者说延伸),比如无容量限制设施选址问题。

研究:在备选设施集合里,如何选择p个设施,使所有需求点得到服务,并且需求点到其最近设施的加权距离总和最小。

这是一个MinSum问题,可由以下整数规划模型表示:

应用场景:在物流领域应用得非常广泛,加权距离代表了运输成本,目标是总成本最少。

研究:在备选设施集合里,如何选择p个设施,使所有需求点得到服务,并且每个需求点到其最近设施的最大距离最小。

这是一个MinMax问题,可由以下整数规划模型表示(符号说明与上面类似):

应用场景:应急设施的选址,比如警局、消防局、医院,要求尽可能快地到达任意位置。

覆盖问题分为最大覆盖问题和集覆盖问题两类。

应用场景:追求覆盖面的场景,比如移动基站的选址、物流中心的选址。

对于算法的解释,我总是比较偷懒的,因为解释起来很麻烦,所以就做个总结,感兴趣的话再自行搜索哈。

按照求解的方式,可以分为:

“定性”很好理解,不要求具有统计意义,但是凭借研究者的经验以及有关的技术,能有效地洞察研究对象的性质,以及可能带来的影响等。

一般是如下步骤:

常用的评价方法有:加权因素评分法、模糊综合评判法、风险型方法、德尔菲法(Delphi)

定性方法有着明显的缺点——受主观影响极大。可实际过程中,很多东西都是无法定量的,比如政策、环境的影响~因此定性分析具有非常强的实际意义,往往与定量分析相辅相成。

给大家介绍一个效率挺高的算法,不一定最好,但我看了还不错,很多作者靠它水了一些文章哈哈哈~

目标是从N个备选位置里,选择p个位置建设施,使得目标最优。

该算法的优点和缺点:

因为时间太短,没时间研究得太深,其他算法就不班门弄斧了~

下回试试用Python解决几个实际问题。

D. Jacobi迭代法求解Sylvester方程

矩阵方程AX+XB=C的迭代解法 马飞 硕士 Sylvester方程;Jacobi迭代;Gauss-Seidel迭代;分裂算法; 概率论与数理统计 厦门大学; 该文的主要目的是将三种迭代法应用于求解Sylvester方程.数值例子表明,对于系数矩阵A,B满足一定条件的Sylvester方程,该文所给出的三种迭代方法是有效的.该文首先将Sylvester方程变形成AI<,n>+I<,m>B<'T>=C,然后讨论对系数矩阵A I<,n>+I<,m>B<'T>进行分裂的迭代解法.第二章,讨论Jacobi迭代格式.第三章,讨论Gauss-Seidel迭代方法.在第四章,对于系数矩阵A,B是非奇M阵的情况,该文将一种带参数的分裂算法应用于求解Sylvester方程.文章最后给出一个数值例子,分别用上述三种算法得出方程在不同精度下的解并给出迭代所需步数.

线性系统的预条件AOR迭代法 吴梅君 硕士 预条件;Gauss-Seidel迭代法;AOR迭代法;多重分裂法; 计算数学数值代数 南京师范大学; 为了更好地求解线性系统Ax=b,许多学者提出了各种预条件Gauss-Seidel迭代法本文中提出了预条件算子不同的预条件AOR迭代法,并给出相应的收敛性分析以及比较性定理

DSCDMA通信系统中的多用户检测算法及其神经网络实现 张吉林 硕士 DSCDMA通信系统;多用户检测算法;神经网络;Gauss-Seidel迭代;最小能量函数;模拟退火法; 通信与信息系统 东南大学; 该文第一、二章,在介绍DSCDMA通信系统基本原理的基础上,针对DSCDMA通信系统中常见的几个典型信道模型.第三章通过对充分统计量的极大似然序列检测的数学推导,得到和最优多用户检测相对应的组合优化问题.第四章研究应用常见的几种解线性方程组的迭代方法,如Jacobi迭代、Richardon迭代和Gauss-Seidel迭代,来实现线性多用户检测,并给出了相应的神经网络实现结构,提出了用矩阵预优方法改进Jacobi迭代的思想.第五章研究了并行干扰抵消PIC检测器的两种不同改进方法.第六章讨论了几种常用神经网络检测结构,通过对多用户检测组合优化的NP问题与神经网络最小能量函数的比较,讨论了运用模拟退火法克服HNN神经网络收敛速度慢、易陷入局部最小点的问题,并给出了仿真结果.

一类晶格材料Lattice Materials的无结构代数多重网格法 肖映雄 硕士 晶格材料;无结构代数多重网格;块Gauss-Seidel迭代;不完全LU分解;预条件共轭梯度法;收敛性; 计算数学 湘潭大学; 在该文中,我们在已有的以单个椭圆型方程线性元代数系统为背景的无结构代数多重网格法的基础上,建立了一类应用范围更广、稳定性更好的新的迭代校正型的无结构代数多重网格AMG算法.针对一类晶格材料Lattice materials的离散模型,将所构造的AMG方法用于子块矩阵求逆,我们得到了相应的基于V-Cycle方法和预条件共轭梯度法PCG的块Gauss-Seidel迭代利用提升插值算子矩阵扩充技术,将此AMG方法推广到方程组情形,我们得到了一类关于晶格材料离散模型的AMG方法,即所谓的AMV和APCG方法.大量的数值实验表明当重要参数α∈0.1,1时,对q=1,3,4的晶格材料离散模型,相应的AMV和APCG方法的迭代次数基本上与α及问题的规模无关当α很小时,对q=1,3的情形,APCG方法的迭代次数与问题的规模无关,且随α的减小变化不大.从而验证了该算法的高效性和健壮性,反映了多重网格法在晶格材料大规模科学计算中的优越性.进一步,通过对晶格材料离散模型的近似连续模型作深入的理论分析,在q=1的情形下,我们证明了以对角块矩阵的逆为预条件子的PCG方法的条件数和参数α无关的结论,从而在理论上证明了该数值实验结果的正确性.
结合动态系统参数识别算法(LMS)和高阶两参数并行Jacob i型算法的优点,得到一种称之为高阶DLMS方法.该方法避免传统迭代方法求解线性方程组时使用逆矩阵参与迭代矩阵的构造,避免了矩阵求逆;同时对传统线性方程组要求系数矩阵必须为方阵加以推广,具有适用范围广、计算量少等优点.同时并讨论了算法的收敛性和最优参数的选取.

E. 概率图模型的概率图模型的推理算法

根据网络结构与查询问题类型的不同,概率图模型的推理算法有
(1)贝叶斯网络与马尔可夫网络 中解决概率查询问题的精确推理算法与近似推理算法,其中具体包括精确推理中的VE算法、递归约束算法和团树算法,以及近似推理中的变分近似推理和抽样近似推理算法;(2)解决MAP查询问题的常用推理算法;(3)混合网络的连续与混合情况阐述其推理算法;(4)暂态网络的精确推理、近似推理以及混合情况下的推理。

F. 回归模型中加入AR(1)是什么意思

回归模型中加入AR(1)是其中的解释变量,表示EVIEWS的回归是可以加AR项的。

回归模型对统计关系进行定量描述的一种数学模型。如多元线性回归的数学模型可以表示为y=β0+β1*x+εi,式中,β0,β1,…,βp是p+1个待估计的参数,εi是相互独立且服从同一正态分布N(0,σ2)的随机变量,y是随机变量;

x可以是随机变量,也可以是非随机变量,βi称为回归系数,表征自变量对因变量影响的程度。

(6)模型算法中aor是啥意思扩展阅读:

使用回归分析的好处良多,具体如下:

它表明自变量和因变量之间的显着关系;

它表明多个自变量对一个因变量的影响强度。

回归分析也允许我们去比较那些衡量不同尺度的变量之间的相互影响,如价格变动与促销活动数量之间联系。这些有利于帮助市场研究人员,数据分析人员以及数据科学家排除并估计出一组最佳的变量,用来构建预测模型。

G. 数学建模里面的模型和算法有啥区别

模型是一个或者一系列的数学表达式,用来描述所要解决的问题。
算法是解决这个模型,也就是这些表达式的具体过程,常常结合编程解决。

H. 在算法框图中flag 1或flag 0是什么意思(要具体点的)

s函数 一下是s函数的介绍函数是system Function的简称,用它来写自己的simulink模块。(够简单吧,^_^, 详细的概念介绍大伙看帮助吧)可以用matlab、C、C++、Fortran、Ada等语言来写, 这儿我只介绍怎样用matlab语言来写吧(主要是它比较简单)
先讲讲为什么要用s函数,我觉得用s函数可以利用matlab的丰富资源,而不仅仅局 限于simulink提供的模块,而用c或c++等语言写的s函数还可以实现对硬件端口的操作, 还可以操作windows API等的
先介绍一下simulink的仿真过程(以便理解s函数),simulink的仿真有两个阶段: 一个为初始化,这个阶段主要是设置一些参数,像系统的输入输出个数、状态初值、 采样时间等;第二个阶段就是运行阶段,这个阶段里要进行计算输出、更新离散状态、 计算连续状态等等,这个阶段需要反复运行,直至结束。
在matlab的workspace里打edit sfuntmpl(这是matlab自己提供的s函数模板),我们 看它来具体分析s函数的结构。 它的第一行是这样的:function [sys,x0,str,ts]=sfuntmpl(t,x,u,flag)
先讲输入与输出变量的含义:t是采样时间,x是状态变量,u是输入(是做成simulink模 块的输入),flag是仿真过程中的状态标志(以它来判断当前是初始化还是运行等);sys输出根据flag的不同而不同(下面将结合flag来讲sys的含义),x0是状态变量的初始值,str是保留参数(mathworks公司还没想好该怎么用它,嘻嘻,一般在初始化中将它置空就可以了,str=[]),ts是一个1×2的向量,ts(1)是采样周期,ts(2)是偏移量。
下面结合sfuntmpl.m中的代码来讲具体的结构:
switch flag, %判断flag,看当前处于哪个状态
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
flag=0表示处于初始化状态,此时用函数mdlInitializeSizes进行初始化,此函数在 sfuntmpl.m的149行
我们找到他,在初始化状态下,sys是一个结构体,用它来设置模块的一些参数,各个参 数详细说明如下
size = simsizes;%用于设置模块参数的结构体用simsizes来生成
sizes.NumContStates = 0;%模块连续状态变量的个数
sizes.NumDiscStates = 0;%模块离散状态变量的个数
sizes.NumOutputs = 0;%模块输出变量的个数
sizes.NumInputs = 0;%模块输入变量的个数
sizes.DirFeedthrough = 1;%模块是否存在直接贯通(直接贯通我的理解是输入能 %直接控制输出)
sizes.NumSampleTimes = 1;%模块的采样时间个数,至少是一个
sys = simsizes(sizes); %设置完后赋给sys输出
举个例子,考虑如下模型:
dx/dt=fc(t,x,u) 也可以用连续状态方程描述:dx/dt=A*x+B*u
x(k+1)=fd(t,x,u) 也可以用离散状态方程描述:x(k+1)=H*x(k)+G*u(k)
y=fo(t,x,u) 也可以用输出状态方程描述:y=C*x+D*u
设上述模型连续状态变量、离散状态变量、输入变量、输出变量均为1个,我们就只需改上面那一段代码为:
(一般连续状态与离散状态不会一块用,我这儿是为了方便说明)
sizes.NumContStates=1;sizes.NumDiscStates=1;sizes.NumOutputs=1;sizes.NumInpu
ts=1;
其他的可以不变。继续在mdlInitializeSizes函数中往下看:
x0 = []; %状态变量设置为空,表示没有状态变量,以我们上面的假设,可改 %为x0=[0,0](离散和连续的状态变量我们都设它初值为0)
str = []; %这个就不用说了,保留参数嘛,置[]就可以了,反正没什么用,可 %能7.0会给它一些意义
ts = [0 0]; %采样周期设为0表示是连续系统,如果是离散系统在下面的mdlGet %TimeOfNextVarHit函数中具体介绍
嘻嘻,总算讲完了初始化,后面的应该快了
在sfuntmpl的106行继续往下看:
case 1,
sys=mdlDerivatives(t,x,u);
flag=1表示此时要计算连续状态的微分,即上面提到的dx/dt=fc(t,x,u)中的dx/dt,找到 mdlDerivatives函数(在193行)如果设置连续状态变量个数为0,此处只需sys=[]; 就可以了(如sfuntmpl中一样),按我们上述讨论的那个模型,此处改成 sys=fc(t,x(1),u)或sys=A*x(1)+B*u %我们这儿x(1)是连续状态变量,而x(2)是离散的 ,这儿只用到连续的,此时的输出sys就是微分
继续,在sfuntmpl的112行:
case 2,
sys=mdlUpdate(t,x,u);
flag=2表示此时要计算下一个离散状态,即上面提到的x(k+1)=fd(t,x,u),找到mdlUpd ate函数(在206行)它这儿sys=[];表示没有离散状态,我们这而可以改成 sys=fd(t,x(2),u)或sys=H*x(2)+G*u;%sys即为x(k+1)

看来后面几个一两句话就可了,呵呵,在sfuntmpl的118行
case 3,
sys=mdlOutputs(t,x,u);
flag=3表示此时要计算输出,即y=fo(t,x,u),找到mdlOutputs函数(在218行),如上,如果sys=[]表示没有输出,我们改成sys=fo(t,x,u)或sys=C*x+D*u %sys此时为输出y
好像快完了,嘻嘻,在sfuntmpl的124行
case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
flag=4表示此时要计算下一次采样的时间,只在离散采样系统中有用(即上文的mdlInit ializeSizes中提到的ts设置ts(1)不为0)
连续系统中只需在mdlGetTimeOfNextVarHit函数中写上sys=[];这个函数主要用于变步长的设置,具体实现大家可以用edit vsfunc看vsfunc.m这个例子
最后一个,在sfuntmpl的130行
case 9,
sys=mdlTerminate(t,x,u);
flag=9表示此时系统要结束,一般来说写上在mdlTerminate函数中写上sys=[]就可,如 果你在结束时还要设置什么,就在此函数中写
关于sfuntmpl这个s函数的模板讲完了。
s函数还可以带用户参数,下面给个例子,和simulink下的gain模块功能一样,大伙自己 看吧,我睡觉去了,累了
function [sys,x0,str,ts] = sfungain(t,x,u,flag,gain)
switch flag,
case 0,
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0=[];
str=[];
ts=[0,0];
case 3,
sys=gain*u;
case {1,2,4,9},
sys = [];
end

做好了s函数后,simulink--user-defined function下拖一个S-Function到你的模型,就可以用了 在simulink----user-defined function还有个s-Function Builder,他可以生成用c语 言写的s函数 在matlab的workspace下打sfundemos,可以看到很多演示s函数的程序

I. 模型压缩:剪枝算法

过参数化主要是指在训练阶段,在数学上需要进行大量的微分求解,去捕抓数据中的微小变化信息,一旦完成迭代式的训练之后,网络模型推理的时候就不需要这么多参数。而剪枝算法正是基于过参数化的理论基础而提出的。

剪枝算法核心思想就是减少网络模型中参数量和计算量,同时尽量保证模型的性能不受影响。

那在AI框架中,实际上剪枝主要作用在右下角的端侧模型推理应用场景中,为的就是让端侧模型更小,无论是平板、手机、手表、耳机等小型IOT设备都可以轻松使用AI模型。而实际在训练过程更多体现在剪枝算法和框架提供的剪枝API上面。

实际上大部分刚接触剪枝算法的时候,都会从从宏观层面去划分剪枝技术,主要是分为Drop Out和Drop Connect两种经典的剪枝算法,如下图所示。

1)Drop Out:随机的将一些神经元的输出置零,称之为神经元剪枝。

2)Drop Connect:随机将部分神经元间的连接Connect置零,使得权重连接矩阵变得稀疏。

下面会把剪枝的更多种方式呈现出来,可能会稍微复杂哈。从剪枝的粒度来划分,可以分为结构化剪枝和非结构化剪枝,2个剪枝结构方法。下面来看看具体的剪枝方法有4种:

细粒度剪枝、向量剪枝、核剪枝在参数量与模型性能之间取得了一定的平衡,但是网络模型单层的神经元之间的组合结构发生了变化,需要专门的算法或者硬件结构来支持稀疏的运算,这种叫做 结构化剪枝(Unstructured Pruning)

其中,非结构化剪枝能够实现更高的压缩率,同时保持较高的模型性能,然而会带来网络模型稀疏化,其稀疏结构对于硬件加速计算并不友好,除非底层硬件和计算加速库对稀疏计算有比较好的支持,否则剪枝后很难获得实质的性能提升。

滤波器剪枝(Filter-level)主要改变网络中的滤波器组和特征通道数目,所获得的模型不需要专门的算法和硬件就能够运行,被称为 结构化剪枝(Structured Pruning) 。结构化剪枝又可进一步细分:可以是channel-wise,也可以是filter-wise,还可以是在shape-wise。

结构化剪枝与非结构化剪枝恰恰相反,可以方便改变网络模型的结构特征,从而达到压缩模型的效果,例如知识蒸馏中的student网络模型、NAS搜索或者如VGG19和VGG16这种裁剪模型,也可以看做变相的结构化剪枝行为。

虽然剪枝算法的分类看上去很多,但是核心思想还是对神经网络模型进行剪枝,目前剪枝算法的总体流程大同小异,可以归结为三种:标准剪枝、基于子模型采样的剪枝、以及基于搜索的剪枝,如下图所示。

标准剪枝是目前最流行的剪枝流程,在Tensorflow、Pytroch都有标准的接口。主要包含三个部分:训练、剪枝、以及微调。

1) 训练 :首先是对网络模型进行训练。在剪枝流程中,训练部分主要指预训练,训练的目的是为剪枝算法获得在特定基础SOTA任务上训练好的原始模型。

3) 微调 :微调是恢复被剪枝操作影响的模型表达能力的必要步骤。结构化模型剪枝会对原始模型结构进行调整,因此剪枝后的模型参数虽然保留了原始的模型参数,但是由于模型结构的改变,剪枝后模型的表达能力会受到一定程度的影响。实现上,微调网络模型,参数在计算的时候先乘以该Mask,Mask为1的参数值将继续训练通过BP调整梯度,而Mask为0的部分因为输出始终为0则不对后续部分产生影响。

4) 再剪枝 :再剪枝过程将微调之后的网络模型再送到剪枝模块中,再次进行模型结构评估和执行剪枝算法。目的是使得每次剪枝都在性能更优的模型上面进行,不断迭代式地进行优化剪枝模型,直到模型能够满足剪枝目标需求。

最后输出模型参数储存的时候,因为有大量的稀疏,所以可以重新定义储存的数据结构, 仅储存非零值以及其矩阵位置。重新读取模型参数的时候,就可以还原矩阵。

除标准剪枝之外,基于子模型采样的剪枝《EagleEye: Fast sub-net evaluation for efficient neural network pruning》最近也表现出比较好的剪枝效果。得到训练好的模型之后,进行子模型采样过程。一次子模型采样过程为:

1)对训练好的原模型中可修剪的网络结构,按照剪枝目标进行采样,采样过程可以是随机的,也可以按照网络结构的重要性或者通过KL散度计算进行概率采样。

2)对采样后的网络结构进行剪枝,得到采样子模型。子模型采样过程通常进行 次,得到 个子模型( ≥1), 之后对每一个子模型进行性能评估。子模型评估结束之后,选取最优的子模型进行微调以得倒最后的剪枝模型。

基于搜索的剪枝主要依靠强化学习等一系列无监督学习或者半监督学习算法,也可以是神经网络结构搜索相关理论。

给定剪枝目标之后,基于搜索的剪枝在网络结构中搜索较优的子结构,这个搜索过程往往伴随着网络参数的学习过程,因此一些基于搜索的剪枝算法在剪枝结束后不需要再进行微调。

这几年神经网络剪枝pruning作为模型压缩技术的四小龙之一,正在受到越来越多的关注。当然,各种更好的pruning参数选取方法一定还会层出不穷。另外,从趋势来看,以下几个方向值得关注:

打破固定假设 :挑战已有的固有的假设,例如ICLR2019会议的best paper彩票假说《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks 》的出现。还有一开始提到的对于over-parameterization,与重用已有参数是否有有益的反思非常有意思。这样的工作会给剪枝算法非常大的启发,从而根本改变解决问题的思路。

自动化剪枝 :随着AutoML的大潮,越来越多的算法开始走向自动化。模型压缩能拉下吗?当然不能。经过前面的介绍我们知道,像ADC,RNP,N2N Learning这些工作都是试图将剪枝中部分工作自动化。如量化中的《HAQ: Hardware-Aware Automated Quantization》考虑网络中不同层信息的冗余程度不一样,所以自动化使用混合量化比特进行压缩。

与NAS融合 :如前面模型剪枝流程中提到,剪枝算法与神经网络搜索NAS的界限已经模糊了。NAS有针对结构化剪枝进行搜索方法,如One-Shot Architecture Search是先有一个大网络,然后做减法。NAS与模型压缩两个一开始看似关系不是那么大的分支,在近几年的发展过程中因为下游任务和部署场景的需求,最后似乎会走到一块去。这两个分支今天有了更多的交集,也必将擦出更多的火花。

与GAN融合 :这几年机器学习最火热的分支之一GAN,正在不断渗透到已有领域,在pruning中也开始有它的身影。如2019年《Towards Optimal Structured CNN Pruning via Generative Adversarial Learning》让generator生成裁剪后网络,discrimintor来判别是否属于原网络还是裁剪后网络,从而进行更有效的网络结构化裁剪。

硬件稀疏性支持 :剪枝会给神经网络模型带来稀疏性特征,参数稀疏性在计算中会有大量的索引,所以并不能加速。现在虽然有像cuSPARSE这样的计算库,但底层硬件AI芯片本身设计并不是专门为稀疏数据处理打造的。如果能将稀疏计算和处理能力做进芯片那必将极大提高计算效率。仅2021年中国就推出了10+款基于ASIC的AI加速芯片,相信针对稀疏性场景的支持在未来会有所突破。

模型压缩算法中针对已有的模型,有:张量分解,模型剪枝,模型量化。针对新构建的网络,有:知识蒸馏,紧凑网络设计等方法。

剪枝只是模型压缩方法中的一种,它与其它模型压缩方法并不冲突,因此会与量化、蒸馏、NAS、强化学习等方法慢慢融合,这些都是很值得研究的方向。另外在上面的发展来看,打破固有的假设定义,与NAS、GAN、AutoML、RL等技术进行相互的融合,可能到最后会模糊purning方式,出现新的范式或者压缩模式也是很吸引的。

阅读全文

与模型算法中aor是啥意思相关的资料

热点内容
文件夹怎么做标题 浏览:31
腾讯云服务器如何防止被攻击 浏览:879
六棱柱的体积算法 浏览:933
淘宝什么云服务器好用 浏览:340
pythonoa项目 浏览:307
android杜比音效 浏览:341
杀手47为什么连接不了服务器 浏览:108
静态路径命令 浏览:533
一直编译不过怎么办 浏览:829
汽车串联并联算法 浏览:458
助眠解压的声音音频小哥哥 浏览:277
pythoncmd换行 浏览:376
linux取消行号 浏览:355
安卓原生系统官网是什么 浏览:444
底部主图源码 浏览:878
服务器崩了有什么提示 浏览:780
远程海康服务器用什么浏览器 浏览:232
解压报纸图片 浏览:956
python微信公众号开发平台 浏览:895
知识付费网站java源码 浏览:255