導航:首頁 > 源碼編譯 > 模型演算法中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是啥意思相關的資料

熱點內容
麗水四軸加工中心編程 瀏覽:689
國產系統怎麼解壓 瀏覽:552
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261