當前位置:首頁 » 操作系統 » 最新的優化演算法

最新的優化演算法

發布時間: 2023-03-25 07:24:40

A. 優化演算法

動量法、AdaGrad、RMSProp、AdaDelta、Adam

在7.2節(梯度下降和隨機梯度下降)中我們提到,目標函數有關自變數的梯度代表了目標函數在自變數當前位置下降最快的方向。因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根據自變數當前位置,沿著當前位置的梯度更新自變數。然而,如果自變數的迭代方向 僅僅取決於自變數當前位置,這可能會帶來一些問題

可以看到,同一位置上,目標函數在豎直方向( 軸方向)比在水平方向( 軸方向)的斜率的絕對值更大。因此,給定學習率,梯度下降迭代自變數時會使自變數在豎直方向比在水平方向移動幅度更大。那麼,我們 需要一個較小的學習率 從而避免自變數在豎直方向上越過目標函數最優解。然而,這會造成自變數在水平方向上 朝最優解移動變慢

試著將學習率調大一點,此時自變數在豎直方向不斷越過最優解並逐漸發散。

動量法的提出是為了解決梯度下降的上述問題。

其中,動量超參數 滿足 。當 時,動量法等價於小批量隨機梯度下降。

因此,在實際中,我們常常將 看作是最近 個時間步的 的值的加權平均。

現在,我們對動量法的速度變數做變形:

優化演算法中,⽬標函數⾃變數的每⼀個元素在相同時間步都使⽤同⼀個學習率來⾃我迭代。在「動量法」⾥我們看到當x1和x2的梯度值有較⼤差別時,需要選擇⾜夠小的學習率使得⾃變數在梯度值較⼤的維度上不發散。但這樣會導致⾃變數在梯度值較小的維度上迭代過慢。動量法依賴指數加權移動平均使得⾃變數的更新⽅向更加⼀致,從而降低發散的可能。 本節我們介紹AdaGrad演算法,它根據⾃變數在每個維度的梯度值的⼤小來調整各個維度上的學習率,從而避免統⼀的學習率難以適應所有維度的問題。

AdaGrad演算法會使⽤⼀個小批量隨機梯度gt按元素平⽅的累加變數st。在時間步0,AdaGrad將s0中每個元素初始化為0。在時間步t,⾸先將小批量隨機梯度gt按元素平⽅後累加到變數st:

其中⊙是按元素相乘。接著,我們將⽬標函數⾃變數中每個元素的學習率通過按元素運算重新調整⼀下:

其中η是學習率,ϵ是為了維持數值穩定性而添加的常數,如10的-6次方。這⾥開⽅、除法和乘法的運算都是按元素運算的。這些按元素運算使得⽬標函數⾃變數中 每個元素都分別擁有⾃⼰的學習率

需要強調的是,小批量隨機梯度按元素平⽅的累加變數st出現在學習率的分⺟項中。因此,

然而,由於st⼀直在累加按元素平⽅的梯度,⾃變數中每個元素的學習率在迭代過程中⼀直在降低(或不變)。 所以,當學習率在迭代早期降得較快且當前解依然不佳時,AdaGrad演算法在迭代後期由於學習率過小,可能較難找到⼀個有⽤的解

當學習率在迭代早期降得較快且當前解依然不佳時,AdaGrad演算法在迭代後期由於 學習率過小 ,可能較難找到⼀個有⽤的解。為了解決這⼀問題,RMSProp演算法對AdaGrad演算法做了⼀點小小的修改。

不同於AdaGrad演算法⾥狀態變數st是 截⾄時間步t所有小批量隨機梯度gt按元素平⽅和 ,RMSProp演算法將這些梯度 按元素平⽅做指數加權移動平均 。具體來說,給定超參數0 ≤ γ < 1,RMSProp演算法在時間步t > 0計算:

和AdaGrad演算法⼀樣,RMSProp演算法將⽬標函數⾃變數中每個元素的學習率通過按元素運算重新調整,然後更新⾃變數:

其中η是學習率,ϵ是為了維持數值穩定性而添加的常數,如10的-6次方。因為RMSProp演算法的狀態變數st是對平⽅項gt ⊙ gt的指數加權移動平均, 所以可以看作是最近1/(1 − γ)個時間步的小批量隨機梯度平⽅項的加權平均。如此⼀來,⾃變數每個元素的學習率在迭代過程中就不再⼀直降低(或不變)。

除了RMSProp演算法以外,另⼀個常⽤優化演算法AdaDelta演算法也針對AdaGrad演算法在迭代後期可能較難找到有⽤解的問題做了改進。有意思的是,AdaDelta演算法沒有學習率這⼀超參數。

AdaDelta演算法也像RMSProp演算法⼀樣,使⽤了小批量隨機梯度gt按元素平⽅的指數加權移動平均變數st。在時間步0,它的所有元素被初始化為0。給定超參數0 ≤ ρ < 1(對應RMSProp演算法中的γ),在時間步t > 0,同RMSProp演算法⼀樣計算:

與RMSProp演算法不同的是,AdaDelta演算法還維護⼀個 額外的狀態變數∆xt ,其元素同樣在時間步0時被初始化為0。我們使⽤∆xt−1來計算⾃變數的變化量:

最後,我們使⽤∆xt來記錄⾃變數變化量 按元素平⽅的指數加權移動平均:

Adam演算法在RMSProp演算法基礎上對小批量隨機梯度也做了指數加權移動平均。
Adam演算法使⽤了 動量變數vt 和RMSProp演算法中 小批量隨機梯度按元素平⽅的指數加權移動平均變數st ,並在時間步0將它們中每個元素初始化為0。給定超參數0 ≤ β1 < 1(演算法作者建議設為0.9),時間步t的動量變數vt即小批量隨機梯度gt的指數加權移動平均:

接下來,Adam演算法使⽤以上 偏差修正 後的變數 v ˆ t s ˆ t ,將模型參數中每個元素的學習率通過按元素運算重新調整:

其中 η 是學習率, ϵ 是為了維持數值穩定性而添加的常數,如10的-8次方。和AdaGrad演算法、RMSProp演算法以及AdaDelta演算法⼀樣,⽬標函數⾃變數中每個元素都分別擁有⾃⼰的學習率。最後,使⽤ 迭代⾃變數:

B. 大數據最常用的演算法有哪些

奧地利符號計算研究所(Research Institute for Symbolic Computation,簡稱RISC)的Christoph Koutschan博士在自己的頁面上發布了一篇文章,提到他做了一個調查,參與者大多數是計算機科學家,他請這些科學家投票選出最重要的演算法,以下是這次調查的結果,按照英文名稱字母順序排序。

大數據等最核心的關鍵技術:32個演算法

1、A* 搜索演算法——圖形搜索演算法,從給定起點到給定終點計算出路徑。其中使用了一種啟發式的估算,為每個節點估算通過該節點的最佳路徑,並以之為各個地點排定次序。演算法以得到的次序訪問這些節點。因此,A*搜索演算法是最佳優先搜索的範例。

2、集束搜索(又名定向搜索,Beam Search)——最佳優先搜索演算法的優化。使用啟發式函數評估它檢查的每個節點的能力。不過,集束搜索只能在每個深度中發現最前面的m個最符合條件的節點,m是固定數字——集束的寬度。

3、二分查找(Binary Search)——在線性數組中找特定值的演算法,每個步驟去掉一半不符合要求的數據。

4、分支界定演算法(Branch and Bound)——在多種最優化問題中尋找特定最優化解決方案的演算法,特別是針對離散、組合的最優化。

5、Buchberger演算法——一種數學演算法,可將其視為針對單變數最大公約數求解的歐幾里得演算法和線性系統中高斯消元法的泛化。

6、數據壓縮——採取特定編碼方案,使用更少的位元組數(或是其他信息承載單元)對信息編碼的過程,又叫來源編碼。

7、Diffie-Hellman密鑰交換演算法——一種加密協議,允許雙方在事先不了解對方的情況下,在不安全的通信信道中,共同建立共享密鑰。該密鑰以後可與一個對稱密碼一起,加密後續通訊。

8、Dijkstra演算法——針對沒有負值權重邊的有向圖,計算其中的單一起點最短演算法。

9、離散微分演算法(Discrete differentiation)。

10、動態規劃演算法(Dynamic Programming)——展示互相覆蓋的子問題和最優子架構演算法

11、歐幾里得演算法(Euclidean algorithm)——計算兩個整數的最大公約數。最古老的演算法之一,出現在公元前300前歐幾里得的《幾何原本》。

12、期望-最大演算法(Expectation-maximization algorithm,又名EM-Training)——在統計計算中,期望-最大演算法在概率模型中尋找可能性最大的參數估算值,其中模型依賴於未發現的潛在變數。EM在兩個步驟中交替計算,第一步是計算期望,利用對隱藏變數的現有估計值,計算其最大可能估計值;第二步是最大化,最大化在第一步上求得的最大可能值來計算參數的值。

13、快速傅里葉變換(Fast Fourier transform,FFT)——計算離散的傅里葉變換(DFT)及其反轉。該演算法應用范圍很廣,從數字信號處理到解決偏微分方程,到快速計算大整數乘積。

14、梯度下降(Gradient descent)——一種數學上的最優化演算法。

15、哈希演算法(Hashing)。

16、堆排序(Heaps)。

17、Karatsuba乘法——需要完成上千位整數的乘法的系統中使用,比如計算機代數系統和大數程序庫,如果使用長乘法,速度太慢。該演算法發現於1962年。

18、LLL演算法(Lenstra-Lenstra-Lovasz lattice rection)——以格規約(lattice)基數為輸入,輸出短正交向量基數。LLL演算法在以下公共密鑰加密方法中有大量使用:背包加密系統(knapsack)、有特定設置的RSA加密等等。

19、最大流量演算法(Maximum flow)——該演算法試圖從一個流量網路中找到最大的流。它優勢被定義為找到這樣一個流的值。最大流問題可以看作更復雜的網路流問題的特定情況。最大流與網路中的界面有關,這就是最大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson 能找到一個流網路中的最大流。

20、合並排序(Merge Sort)。

21、牛頓法(Newton』s method)——求非線性方程(組)零點的一種重要的迭代法。

22、Q-learning學習演算法——這是一種通過學習動作值函數(action-value function)完成的強化學習演算法,函數採取在給定狀態的給定動作,並計算出期望的效用價值,在此後遵循固定的策略。Q-leanring的優勢是,在不需要環境模型的情況下,可以對比可採納行動的期望效用。

23、兩次篩法(Quadratic Sieve)——現代整數因子分解演算法,在實踐中,是目前已知第二快的此類演算法(僅次於數域篩法Number Field Sieve)。對於110位以下的十位整數,它仍是最快的,而且都認為它比數域篩法更簡單。

24、RANSAC——是「RANdom SAmple Consensus」的縮寫。該演算法根據一系列觀察得到的數據,數據中包含異常值,估算一個數學模型的參數值。其基本假設是:數據包含非異化值,也就是能夠通過某些模型參數解釋的值,異化值就是那些不符合模型的數據點。

25、RSA——公鑰加密演算法。首個適用於以簽名作為加密的演算法。RSA在電商行業中仍大規模使用,大家也相信它有足夠安全長度的公鑰。

26、Sch?nhage-Strassen演算法——在數學中,Sch?nhage-Strassen演算法是用來完成大整數的乘法的快速漸近演算法。其演算法復雜度為:O(N log(N) log(log(N))),該演算法使用了傅里葉變換。

27、單純型演算法(Simplex Algorithm)——在數學的優化理論中,單純型演算法是常用的技術,用來找到線性規劃問題的數值解。線性規劃問題包括在一組實變數上的一系列線性不等式組,以及一個等待最大化(或最小化)的固定線性函數。

28、奇異值分解(Singular value decomposition,簡稱SVD)——在線性代數中,SVD是重要的實數或復數矩陣的分解方法,在信號處理和統計中有多種應用,比如計算矩陣的偽逆矩陣(以求解最小二乘法問題)、解決超定線性系統(overdetermined linear systems)、矩陣逼近、數值天氣預報等等。

29、求解線性方程組(Solving a system of linear equations)——線性方程組是數學中最古老的問題,它們有很多應用,比如在數字信號處理、線性規劃中的估算和預測、數值分析中的非線性問題逼近等等。求解線性方程組,可以使用高斯—約當消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。

30、Strukturtensor演算法——應用於模式識別領域,為所有像素找出一種計算方法,看看該像素是否處於同質區域( homogenous region),看看它是否屬於邊緣,還是是一個頂點。

31、合並查找演算法(Union-find)——給定一組元素,該演算法常常用來把這些元素分為多個分離的、彼此不重合的組。不相交集(disjoint-set)的數據結構可以跟蹤這樣的切分方法。合並查找演算法可以在此種數據結構上完成兩個有用的操作:

查找:判斷某特定元素屬於哪個組。

合並:聯合或合並兩個組為一個組。

32、維特比演算法(Viterbi algorithm)——尋找隱藏狀態最有可能序列的動態規劃演算法,這種序列被稱為維特比路徑,其結果是一系列可以觀察到的事件,特別是在隱藏的Markov模型中。

以上就是Christoph博士對於最重要的演算法的調查結果。你們熟悉哪些演算法?又有哪些演算法是你們經常使用的?

C. 優化演算法

  SGD演算法中的一個關鍵參數是學習率。之前,我們介紹的SGD使用固定的學習率。在實踐中,有必要隨著時間的推移逐漸降低學習率,因此我們將第 k 步迭代的學習率記作 ϵ k 。
  這是因為SGD中梯度估計引入的雜訊源(m 個訓練樣本的隨機采樣)並不會在極小點處消失。相比之下,當我們使用批量梯度下降到達極小點時,整個代價函數的真實梯度會變得很小,之後為 0,因此批量梯度下降可以使用固定的學習率。保證SGD收斂的一個充分條件是

  若 ϵ 0 太大,學習曲線將會劇烈振盪,代價函數值通常會明顯增加。溫和的振盪是良好的,容易在訓練隨機代價函數(例如使用Dropout的代價函數)時出現。如果學習率太小,那麼學習過程會很緩慢。如果初始學習率太低,那麼學習可能會卡在一個相當高的代價值。通常,就總訓練時間和最終代價值而言,最優初始學習率會高於大約迭代 100 次左右後達到最佳效果的學習率。因此,通常最好是檢測最早的幾輪迭代,選擇一個比在效果上表現最佳的學習率更大的學習率,但又不能太大導致嚴重的震盪。

  雖然隨機梯度下降仍然是非常受歡迎的優化方法,但其學習過程有時會很慢。動量方法 (Polyak, 1964) 旨在加速學習,特別是處理高曲率、小但一致的梯度,或是帶雜訊的梯度。動量演算法積累了之前梯度指數級衰減的移動平均,並且繼續沿該方向移動。動量的效果如圖8.5所示

  受 Nesterov 加速梯度演算法 (Nesterov, 1983, 2004) 啟發,提出了動量演算法的一個變種。這種情況的更新規則如下:

  其中參數 α 和 ϵ 發揮了和標准動量方法中類似的作用。Nesterov 動量和標准動量之間的區別體現在梯度計算上。Nesterov 動量中,梯度計算在施加當前速度之後。因此,Nesterov 動量可以解釋為往標准動量方法中添加了一個校正因子。完整的Nesterov動量演算法如演算法3.2所示

  初始點能夠決定演算法是否收斂,有些初始點十分不穩定,使得該演算法會遭遇數值困難,並完全失敗。當學習收斂時,初始點可以決定學習收斂得多快,以及是否收斂到一個代價高或低的點。此外,差不多代價的點可以具有區別極大的泛化誤差,初始點也可以影響泛化。
  也許完全確知的唯一特性是初始參數需要在不同單元間 『『破壞對稱性』』。如果具有相同激活函數的兩個隱藏單元連接到相同的輸入,那麼這些單元必須具有不同的初始參數。如果它們具有相同的初始參數,然後應用到確定性損失和模型的確定性學習演算法將一直以相同的方式更新這兩個單元。即使模型或訓練演算法能夠使用隨機性為不同的單元計算不同的更新(例如使用Dropout的訓練),通常來說,最好還是初始化每個單元使其和其他單元計算不同的函數。這或許有助於確保沒有輸入模式
丟失在前向傳播的零空間中,沒有梯度模式丟失在反向傳播的零空間中。每個單元計算不同函數的目標促使了參數的隨機初始化。我們可以明確地搜索一大組彼此互不相同的基函數,但這經常會導致明顯的計算代價。例如,如果我們有和輸出一樣多的輸入,我們可以使用 Gram-Schmidt 正交化於初始的權重矩陣,保證每個單元計算彼此非常不同的函數。在高維空間上使用高熵分布來隨機初始化,計算代價小並且不太可能分配單元計算彼此相同的函數。
  通常情況下,我們可以為每個單元的偏置設置啟發式挑選的常數,僅隨機初始化權重。額外的參數(例如用於編碼預測條件方差的參數)通常和偏置一樣設置為啟發式選擇的常數。
  我們幾乎總是初始化模型的權重為高斯或均勻分布中隨機抽取的值。高斯或均勻分布的選擇似乎不會有很大的差別,但也沒有被詳盡地研究。然而,初始分布的大小確實對優化過程的結果和網路泛化能力都有很大的影響。
  更大的初始權重具有更強的破壞對稱性的作用,有助於避免冗餘的單元。它們也有助於避免在每層線性成分的前向或反向傳播中丟失信號——矩陣中更大的值在矩陣乘法中有更大的輸出。如果初始權重太大,那麼會在前向傳播或反向傳播中產生爆炸的值。在循環網路中,很大的權重也可能導致混沌(chaos)(對於輸入中很小的擾動非常敏感,導致確定性前向傳播過程表現隨機)。在一定程度上,梯度爆炸問題可以通過梯度截斷來緩解(執行梯度下降步驟之前設置梯度的閾值)。較大的權
重也會產生使得激活函數飽和的值,導致飽和單元的梯度完全丟失。這些競爭因素決定了權重的理想初始大小。
  也有助於避免在每層線性成分的前向或反向傳播中丟失信號——矩陣中更大的值在矩陣乘法中有更大的輸出。如果初始權重太大,那麼會在前向傳播或反向傳播中產生爆炸的值。在循環網路中,很大的權重也可能導致混沌(chaos)(對於輸入中很小的擾動非常敏感,導致確定性前向傳播過程表現隨機)。在一定程度上,梯度爆炸問題可以通過梯度截斷來緩解(執行梯度下降步驟之前設置梯度的閾值)。較大的權重也會產生使得激活函數飽和的值,導致飽和單元的梯度完全丟失。這些競爭因素決定了權重的理想初始大小。
  有些啟發式方法可用於選擇權重的初始大小。一種初始化 m 個輸入和 n 輸出的全連接層的權重的啟發式方法是從分布 U(−1/√ m ,
1/√ m ) 中采樣權重,而 Glorot and Bengio 建議使用標准初始化

  後一種啟發式方法初始化所有的層,折衷於使其具有相同激活方差和使其具有相同梯度方差之間。這假設網路是不含非線性的鏈式矩陣乘法,據此推導得出。現實的神經網路顯然會違反這個假設,但很多設計於線性模型的策略在其非線性對應中的效果也不錯。
  數值范圍准則的一個缺點是,設置所有的初始權重具有相同的標准差,例如1/√ m ,會使得層很大時每個單一權重會變得極其小。Martens (2010) 提出了一種被稱為稀疏初始化(sparse initialization)的替代方案,每個單元初始化為恰好有 k 個非零權重。這個想法保持該單元輸入的總數量獨立於輸入數目 m,而不使單一權重元素的大小隨 m 縮小。稀疏初始化有助於實現單元之間在初始化時更具多樣性。但是,獲得較大取值的權重也同時被加了很強的先驗。因為梯度下降需要很長時間縮小 『『不正確』』 的大值,這個初始化方案可能會導致某些單元出問題,例如maxout單元有幾個過濾器,互相之間必須仔細調整。

  Delta-bar-delta 演算法 (Jacobs, 1988) 是一個早期的在訓練時適應模型參數各自學習率的啟發式方法。該方法基於一個很簡單的想法,如果損失對於某個給定模型參數的偏導保持相同的符號,那麼學習率應該增加。如果對於該參數的偏導變化了符號,那麼學習率應減小。當然,這種方法只能應用於全批量優化中。

  AdaGrad 演算法,如演算法8.4所示,獨立地適應所有模型參數的學習率,縮放每個參數反比於其所有梯度歷史平方值總和的平方根 (Duchi et al., 2011)。具有損失最大偏導的參數相應地有一個快速下降的學習率,而具有小偏導的參數在學習率上有相對較小的下降。凈效果是在參數空間中更為平緩的傾斜方向會取得更大的進步。

  在凸優化背景中,AdaGrad 演算法具有一些令人滿意的理論性質。然而,經驗上已經發現,對於訓練深度神經網路模型而言,從訓練開始時積累梯度平方會導致有效學習率過早和過量的減小。AdaGrad在某些深度學習模型上效果不錯,但不是全部。

  RMSProp 演算法 (Hinton, 2012) 修改 AdaGrad 以在非凸設定下效果更好,改變梯度積累為指數加權的移動平均。AdaGrad旨在應用於凸問題時快速收斂。當應用於非凸函數訓練神經網路時,學習軌跡可能穿過了很多不同的結構,最終到達一個局部是凸碗的區域。AdaGrad 根據平方梯度的整個歷史收縮學習率,可能使得學習率在達到這樣的凸結構前就變得太小了。RMSProp 使用指數衰減平均以丟棄遙遠過去的歷史,使其能夠在找到凸碗狀結構後快速收斂,它就像一個初始化於該碗狀結構的 AdaGrad 演算法實例。
  RMSProp 的標准形式如演算法8.5所示,結合 Nesterov 動量的形式如演算法8.6所示。相比於 AdaGrad,使用移動平均引入了一個新的超參數ρ,用來控制移動平均的長度范圍。經驗上,RMSProp 已被證明是一種有效且實用的深度神經網路優化演算法。目前它是深度學習從業者經常採用的優化方法之一。

  Adam (Kingma and Ba, 2014) 是另一種學習率自適應的優化演算法,最好被看作結合 RMSProp 和具有一些重要區別的動量的變種。首先,在 Adam 中,動量直接並入了梯度一階矩(指數加權)的估計。將動量加入 RMSProp 最直觀的方法是將動量應用於縮放後的梯度。結合縮放的動量使用沒有明確的理論動機。其次,Adam 包括偏置修正,修正從原點初始化的一階矩(動量項)和(非中心的)二階矩的估計(演算法8.7)。RMSProp 也採用了(非中心的)二階矩估計,然而缺失了修正因子。因此,不像 Adam,RMSProp 二階矩估計可能在訓練初期有很高的偏置。Adam 通常被認為對超參數的選擇相當魯棒,盡管學習率有時需要從建議的默認修改。

  目前,最流行並且使用很高的優化演算法包括 SGD、具動量的 SGD、RMSProp、具動量的 RMSProp、AdaDelta 和 Adam。

D. 優化演算法筆記(十六)混合蛙跳演算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)
混合蛙跳演算法(Shuffled Frog Leaping Algorithm)是根據青蛙在石塊上覓食時的種群分布變化而提出的演算法。演算法提出於2003年,時間有點久遠,但相關的論文並不是特別多,仍有較大的研究和改進空間。
混合蛙跳演算法中,每個青蛙的位置代表了一個可行解。青蛙所在的池塘中有數塊石塊,每一代,青蛙們會被分配到石塊上。在這一代中,只有石塊上位置最差的青蛙會跳動。該青蛙首先會向著同一個石塊上的最優位置的青蛙跳動,如果新的位置比原位置差則向則全局最優位置跳動,若該位置仍舊比原位置差則在解空間內隨機跳動一次。可以看出每隻跳動青蛙在每代中至少跳動一次,至多跳動三次,但由於每次跳動的青蛙數量等於石塊數,故當石塊數<青蛙數/3時,每代總跳動次數小於青蛙總數。
(查找文獻追根溯源的時候看到了一個有趣的現象,原始的提出論文提出於2000年(Shuffled frog leaping algorithm:a memetic meta-heuristic for combinatorial optimization.)但是到2006年才出版,而2003年的論文(Optimization of Water Distribution Network Design Using the Shuffled Frog Leaping Algorithm)引用了2000年的原始論文,並標注為出版中。到了2006年出版時,原始論文引用了2003年發表的那篇論文,即這兩篇論文相互引用,真是奇妙。估計是原始論文被拒了後又修改了結果到2006年才發表。)

這次的主角就是青蛙了。(沒有石塊就用荷葉代替吧)。

每一隻青蛙只有兩個屬性:位置,當前位置的適應度值。
池塘中一共有m片荷葉,青蛙總數為n。
每一代中,將所有的青蛙按位置從優到劣排列,並依此放置在m個荷葉上。舉個栗子,有5片荷葉(m1-m5)和21隻青蛙(f1-f21,按適應度值從優到劣排列)。

即m1荷葉上的青蛙有{f1,f6,f11,f16,f21},m2荷葉上的青蛙有{f2,f7,f12,f17},依此類推。
每代中最差的青蛙會首先向著當前荷葉上最優位置的青蛙跳動,即該代中f21會向著f1跳動,f17向著f2跳動,f18向著f3跳動,f19向著f4跳動,f20向著f5跳動。
如果f21、f17、f18、f19、f20這五隻青蛙沒有找到優於自己當前位置的位置,則它們會向著全局最優位置的青蛙f1跳動,如果新的位置仍然差於自己的原位置,則該青蛙跳到一個隨機的位置。

在D維空間內青蛙f1的位置 ,其適應度值為 。

(1)青蛙f17向f2跳動後的新位置為 :

若 優於 則青蛙f17跳到 ,否則跳到(2)。

(2)由於f1在全局最優位置,故在這一步,f17會向f1跳動:

優於 則青蛙f17跳到 ,否則跳到(3)。

(3)f17會跳到解空間內的隨機位置:

若 優於 則青蛙f17跳到 。

可以看出混合蛙跳演算法的流程灰常的簡單,跳動的運算元也非常的簡單,而且每次跳動的青蛙的數量等於荷葉的數量,所有其迭代次數會快於多數其他的優化演算法。
我自己特別喜歡這個優化演算法,總能從中體會出分治的思想。下面我們來看看實驗,看看其效果如何。

適應度函數 。
實驗一:

荷葉數為1的圖像及結果如下:

荷葉數為2的圖像及結果如下:

荷葉數為3的圖像及結果如下:

荷葉數為4的圖像及結果如下:

從上述的四個實驗可以看出,隨著荷葉數的增加,演算法的收斂速度在不斷的加快。同時,隨著荷葉數的增加,每代青蛙跳動的次數也在不斷的增加。荷葉數為1時,每代青蛙總共會跳動1-3次,荷葉數為2時每代青蛙總共跳動2-6次,當荷葉數為10時,每代青蛙會跳動10-30次。由於每片荷葉上至少得有2隻青蛙,所以荷葉數最多為總群數的一半。
演算法的效果比較穩定,但好像沒有體現出其跳出局部最優能力,在種群收斂後其全搜索能力較弱,大多在進行局部搜索。
看了看演算法的結構,其跳出局部最優操作為第三段跳動,而這次跳動仍舊按照貪心演算法跳到優於當前位置的隨機位置。現在我將其增強為:如果進行了第三段跳動(隨機跳動),則無論該位置的好壞,青蛙都將跳到該隨機位置。

實驗二: 永遠接受公式(3)得到的隨機位置

可以看出在種群收斂後,仍然會有一些個體隨機出現在解空間內,並繼續收斂。比較結果可以看出實驗二的結果中的最優值不如實驗一,但是其均值和最差值均優於實驗一,說明對原演算法進行修改後演算法更加穩定,且演算法的性能和全局搜索能力有一定的提升,演算法跳出局部最優能力更強。

混合蛙跳演算法是提出近20年,其實現的方式與分治的思想有異曲同工之處。由於每次都更新的是每片荷葉上的最差位置的青蛙,故群體不容易集中於較小的范圍。同時由於「三段跳」的操作,讓混合蛙跳演算法有了一定的跳出局部最優能力。其全局搜索能力和局部搜索能力應該差不多,當最差的部分青蛙跳走後,次差的部分青蛙則會變成了最差的青蛙,此時群體不會過分集中。當群體相對分散時,為搜索范圍較大的全局搜索,反之為搜索范圍較小的局部搜索,由於收斂速度不算很快,所以進行全局搜索和局部搜索的時間相對均衡。
混合蛙跳演算法的流程非常簡單,幾乎可以說是流程最簡單的優化演算法。其中的運算元也很簡單,優化的能力由種群的結構提供。演算法的文章中比較了 「模因」 「基因」 ,模因類似與思想,其傳播可以在同代中快速傳播,比如音樂,幾分鍾就可以傳播給其他人,而基因則只能有父母輩傳遞給子女背,傳遞的時間比較久。這也決定了混合優化演算法的最重要的部分在於其群體的結構而不是其中的優化運算元,實驗說明這樣的效果也不錯,簡單明了的演算法也能有不錯的效果。

參考文獻
Eusuff M , Lansey K , Pasha F . Shuffled frog-leaping algorithm: a memetic meta-heuristic for discrete optimization[J]. Engineering Optimization, 2006, 38(2):129-154. 提取碼:ttgx

Eusuff, M.M. and Lansey, K.E., Optimization of water distribution network design using the shuffled frog leaping algorithm (SFLA). J.Water Resources Planning Mgmt,Am. Soc. Civ. Engrs, 2003, 129(3), 210–225. 提取碼:cyu8

以下指標純屬個人yy,僅供參考

目錄
上一篇 優化演算法筆記(十五)蝙蝠演算法
下一篇 優化演算法筆記(十七)萬有引力演算法

優化演算法matlab實現(十六)混合蛙跳演算法matlab實現

E. 優化演算法筆記(三十四)鴿群演算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)
鴿群演算法是根據鴿子依據磁場而擁有高超識途技巧提出的優化演算法。演算法提出於2014年(到底是08年還是14年?引用顯示08),也算有些年頭了。這也是一個由中國研究者提出的優化演算法,可喜可賀。
鴿群演算法中的個體和粒子群演算法中的粒子結構類似,都由位置和速度組成。在鴿群演算法中,鴿子的飛行行為根據迭代次數分為了兩個階段。簡單來說,階段一向著當前最優位置飛行,階段二向著自身周圍飛行。下面將詳細描述其飛行步驟

本次的主角就是鴿子了。
鴿群中鴿子數量為N,每隻鴿子的位置為 ,速度為 ,該位置的優劣由其適應度函數 計算得出。
在鴿群演算法中,鴿子的行為依照迭代次數劃分為兩個階段,階段1占整個迭代次數的比例為NcRate,一般的NcRate取值為0.75。

迭代次數在 代內為階段1。
在階段1中,需要根據鴿子的位置與目標,計算出鴿子的速度。當前位置加上速度就得到了新的位置。

階段2為迭代次數大於 的部分。
階段2相對復雜,首先需要對群體進行排序,將群體均分為兩組,較優的那組保持位置不變,同時提供其位置、適應度值作為參數,供較差的那組確定它們的新位置所在。

公式(3)求出了較優的那部分鴿子的重心所在,公式(4)則是讓較差的部分鴿子向著較優部分鴿子的重心隨機飛行了一段距離。

文章沒有說明鴿群演算法是否需要使用貪心演算法,下面會各自進行一次實驗看看效果。

適應度函數 。
實驗一 : 無貪心步驟

從圖像可以看出,演算法的收斂速度和精度都不錯。但是可以明顯注意到在40代左右,聚集於右下最優位置附近的個體會有一個向中心聚集的過程,數了一下,剛好是10個個體。這應該是階段2中較差的部分個體更新位置導致的。
本次試驗階段2時,可以認為其適應度函數幾乎等於0,個體位置幾乎到達90。則Nc計算公式如下:

可知個體會向著9處前進,並最終收斂到此處。可以看出階段2中公式(3)設計欠妥(當然,當最優解在0處時,精度會有很大的提升)。公式(3)應去除分母中求和前的N/2。

從結果來看,鴿群演算法還不錯,但是性能好像不太穩定,畢竟只用了階段1就計算出了結果,情有可原。
下面看看添加了貪心演算法的實驗。
實驗二: 有貪心步驟

圖像好像比實驗一好了一些,但是並不能說明問題。實驗一中存在的問題在實驗二中仍然存在,只是由於貪心步驟的緣故,鴿群無法飛到差於自己的位置,階段2仍然沒有任何作用。

實驗結果好像好了一丟丟,但幾乎可以認為沒有變化。

鴿群演算法是受鴿子依據磁場識途的特性啟發而提出的優化演算法。演算法的結構簡單,主要分為兩個階段,其中階段1為向著最優位置前進,階段2則是較差個體向著較優群體中心前進(bushi)。
從實驗中可以看出,原演算法的公式設計有些許缺陷,進行修改後應該能夠得到非常不錯的結果。

參考文獻

Haibin, Duan, Peixin, et al. Pigeon-inspired optimization: a new swarm intelligence optimizer for air robot path planning[J]. International Journal of Intelligent Computing & Cybernetics, 2008. 提取碼:wjok
以下指標純屬個人yy,僅供參考

目錄
上一篇 優化演算法筆記(三十三)黏菌演算法
下一篇 優化演算法筆記(三十五)天鷹演算法

F. 常用優化器演算法歸納介紹

優化器是神經網路訓練過程中,進行梯度下降以尋找最優解的優化方法。不同方法通過不同方式(如附加動量項,學習率自適應變化等)側重於解決不同的問題,但最終大都是為了加快訓練速度。

這里就介紹幾種常見的優化器,包括其原理、數學公式、核心思想及其性能;

核心思想: 即針對每次輸入的訓練數據,計算輸出預測與真值的Loss的梯度;

從表達式來看,網路中參數的更新,是不斷向著最小化Loss函數的方向移動的:

優點:
簡單易懂,即對於相應的最優解(這里認為是Loss的最小函數),每次變數更新都是沿著局部梯度下降最快的方向,從而最小化損失函數。

缺點:

不同於標准梯度下降法(Gradient Descent)一次計算所有數據樣本的Loss並計算相應的梯度,批量梯度下降法(BGD, Batch Gradient Descent)每次只取一個小批次的數據及其真實標簽進行訓練,稱這個批次為mini-batch;

優點:

缺點:
隨機梯度下降法的 batch size 選擇不當可能導致模型難以收斂;由於這種方法是在一次更新中,就對整個數據集計算梯度,所以計算起來非常慢,遇到很大量的數據集也會非常棘手,而且不能投入新數據實時更新模型。

我們會事先定義一個迭代次數 epoch,首先計算梯度向量 params_grad,然後沿著梯度的方向更新參數 params,learning rate 決定了我們每一步邁多大。

Batch gradient descent 對於凸函數可以收斂到全局極小值,對於非凸函數可以收斂到局部極小值。

和 BGD 的一次用所有數據計算梯度相比,SGD 每次更新時對每個樣本進行梯度更新,對於很大的數據集來說,可能會有相似的樣本,這樣 BGD 在計算梯度時會出現冗餘,而 SGD 一次只進行一次更新,就沒有冗餘,而且比較快,並且可以新增樣本。

即訓練時,每次只從一批訓練樣本中隨機選取一個樣本進行梯度下降;對隨機梯度下降來說,只需要一次關注一個訓練樣本,一點點把參數朝著全局最小值的方向進行修改了。

整體數據集是個循環,其中對每個樣本進行一次參數更新

缺點:

梯度下降速度比較慢,而且每次梯度更新時往往只專注與局部最優點,而不會恰好指向全局最優點;

單樣本梯度更新時會引入許多雜訊(跟訓練目標無關的特徵也會被歸為該樣本分類的特徵);

SGD 因為更新比較頻繁,會造成 cost function 有嚴重的震盪。

BGD 可以收斂到局部極小值,當然 SGD 的震盪可能會跳到更好的局部極小值處。

當我們稍微減小 learning rate,SGD 和 BGD 的收斂性是一樣的。

優點:

當處理大量數據時,比如SSD或者faster-rcnn等目標檢測模型,每個樣本都有大量候選框參與訓練,這時使用隨機梯度下降法能夠加快梯度的計算。

隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況,那麼可能只用其中部分的樣本,就已經將 迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。缺點是SGD的噪音較BGD要多,使得SGD並不是每次迭代都向著整體最優化方向。所以雖然訓練速度快,但是准確度下降,並不是全局最優。雖然包含一定的隨機性,但是從期望上來看,它是等於正確的導數的。

梯度更新規則:

MBGD 每一次利用一小批樣本,即 n 個樣本進行計算,這樣它可以降低參數更新時的方差,收斂更穩定,另一方面可以充分地利用深度學習庫中高度優化的矩陣操作來進行更有效的梯度計算。

和 SGD 的區別是每一次循環不是作用於每個樣本,而是具有 n 個樣本的批次。

超參數設定值: n 一般取值在 50~256

缺點:(兩大缺點)

鞍點就是:一個光滑函數的鞍點鄰域的曲線,曲面,或超曲面,都位於這點的切線的不同邊。例如這個二維圖形,像個馬鞍:在x-軸方嚮往上曲,在y-軸方嚮往下曲,鞍點就是(0,0)。

為了應對上面的兩點挑戰就有了下面這些演算法

核心思想:

不使用動量優化時,每次訓練的梯度下降方向,都是按照當前批次訓練數據計算的,可能並不能代表整個數據集,並且會有許多雜訊,下降曲線波動較大:

添加動量項之後,能夠有效減小波動,從而加快訓練速度:

當我們將一個小球從山上滾下來時,沒有阻力的話,它的動量會越來越大,但是如果遇到了阻力,速度就會變小。
加入的這一項,可以使得梯度方向不變的維度上速度變快,梯度方向有所改變的維度上的更新速度變慢,這樣就可以加快收斂並減小震盪。

優點:

通過動量更新,參數向量會在有持續梯度的方向上增加速度;
使梯度下降時的折返情況減輕,從而加快訓練速度;

缺點:

如果數據集分類復雜,會導致 和 時刻梯度 向量方向相差較大;在進行向量求和時,得到的 會非常小,反而使訓練速度大大下降甚至模型難以收斂。

這種情況相當於小球從山上滾下來時是在盲目地沿著坡滾,如果它能具備一些先知,例如快要上坡時,就知道需要減速了的話,適應性會更好。

目前為止,我們可以做到,在更新梯度時順應 loss function 的梯度來調整速度,並且對 SGD 進行加速。

核心思想:

自適應學習率優化演算法針對於機器學習模型的學習率,採用不同的策略來調整訓練過程中的學習率,從而大大提高訓練速度。

這個演算法就可以對低頻的參數做較大的更新,對高頻的做較小的更新,也因此,對於稀疏的數據它的表現很好,很好地提高了 SGD 的魯棒性,例如識別 Youtube 視頻裡面的貓,訓練 GloVe word embeddings,因為它們都是需要在低頻的特徵上有更大的更新。

Adagrad 的優點是減少了學習率的手動調節

式中, 表示第 個分類, 表示第 迭代同時也表示分類 累計出現的次數。 表示初始的學習率取值(一般為0.01)

AdaGrad的核心思想: 縮放每個參數反比於其所有梯度歷史平均值總和的平方根。具有代價函數最大梯度的參數相應地有較大的學習率,而具有小梯度的參數又較小的學習率。

缺點:

它的缺點是分母會不斷積累,這樣學習率就會收縮並最終會變得非常小。

這個演算法是對 Adagrad 的改進,

和 Adagrad 相比,就是分母的 換成了過去的梯度平方的衰減平均值,指數衰減平均值

這個分母相當於梯度的均方根 root mean squared (RMS),在數據統計分析中,將所有值平方求和,求其均值,再開平方,就得到均方根值 ,所以可以用 RMS 簡寫:

其中 的計算公式如下, 時刻的依賴於前一時刻的平均和當前的梯度:

梯度更新規則:

此外,還將學習率 換成了 RMS[Δθ],這樣的話,我們甚至都不需要提前設定學習率了:

超參數設定值: 一般設定為 0.9

RMSprop 是 Geoff Hinton 提出的一種自適應學習率方法。

RMSprop 和 Adadelta 都是為了解決 Adagrad 學習率急劇下降問題的,

梯度更新規則:

RMSprop 與 Adadelta 的第一種形式相同:(使用的是指數加權平均,旨在消除梯度下降中的擺動,與Momentum的效果一樣,某一維度的導數比較大,則指數加權平均就大,某一維度的導數比較小,則其指數加權平均就小,這樣就保證了各維度導數都在一個量級,進而減少了擺動。允許使用一個更大的學習率η)

超參數設定值:

Hinton 建議設定 為 0.9, 學習率 為 0.001。

這個演算法是另一種計算每個參數的自適應學習率的方法。相當於 RMSprop + Momentum

除了像 Adadelta 和 RMSprop 一樣存儲了過去梯度的平方 vt 的指數衰減平均值 ,也像 momentum 一樣保持了過去梯度 mt 的指數衰減平均值:

如果 和 被初始化為 0 向量,那它們就會向 0 偏置,所以做了偏差校正,通過計算偏差校正後的 和 來抵消這些偏差:

梯度更新規則:

超參數設定值:
建議

示例一

示例二

示例三

上面情況都可以看出,Adagrad, Adadelta, RMSprop 幾乎很快就找到了正確的方向並前進,收斂速度也相當快,而其它方法要麼很慢,要麼走了很多彎路才找到。

由圖可知自適應學習率方法即 Adagrad, Adadelta, RMSprop, Adam 在這種情景下會更合適而且收斂性更好。

如果數據是稀疏的,就用自適用方法,即 Adagrad, Adadelta, RMSprop, Adam。

RMSprop, Adadelta, Adam 在很多情況下的效果是相似的。

Adam 就是在 RMSprop 的基礎上加了 bias-correction 和 momentum,

隨著梯度變的稀疏,Adam 比 RMSprop 效果會好。

整體來講,Adam 是最好的選擇。

很多論文里都會用 SGD,沒有 momentum 等。SGD 雖然能達到極小值,但是比其它演算法用的時間長,而且可能會被困在鞍點。

如果需要更快的收斂,或者是訓練更深更復雜的神經網路,需要用一種自適應的演算法。

各種優化器Optimizer原理:從SGD到AdamOptimizer

深度學習——優化器演算法Optimizer詳解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

G. 智能優化演算法:灰狼優化演算法

@[toc]
摘要:受 灰 狼 群 體 捕 食 行 為 的 啟 發,Mirjalili等[1]於 2014年提出了一種新型群體智能優化演算法:灰狼優化演算法。GWO通過模擬灰狼群體捕食行為,基於狼群群體協作的機制來達到優化的目的。 GWO演算法具有結構簡單、需要調節的參數少,容易實現等特點,其中存在能夠自適應調整的收斂因子以及信息反饋機制,能夠在局部尋優與全局搜索之間實現平衡,因此在對問題的求解精度和收斂速度方面都有良好的性能。

灰狼屬於犬科動物,被認為是頂級的掠食者,它們處於生物圈食物鏈的頂端。灰狼大多喜歡群居,每個群體中平均有5-12隻狼。特別令人感興趣的是,它們具有非常嚴格的社會等級層次制度,如圖1所示。金字塔第一層為種群中的領導者,稱為 α 。在狼群中 α 是具有管理能力的個體,主要負責關於狩獵、睡覺的時間和地方、食物分配等群體中各項決策的事務。金字塔第二層是 α 的智囊團隊,稱為 β 。 β 主要負責協助α 進行決策。當整個狼群的 α 出現空缺時,β 將接替 α 的位置。 β 在狼群中的支配權僅次於 α,它將 α 的命令下達給其他成員,並將其他成員的執行情況反饋給 α 起著橋梁的作用。金字塔第三層是 δ ,δ 聽從 α 和 β 的決策命令,主要負責偵查、放哨、看護等事務。適應度不好的 α 和 β 也會降為 δ 。金字塔最底層是 ω ,主要負責種群內部關系的平衡。

<center>圖1.灰狼的社會等級制度

此外,集體狩獵是灰狼的另一個迷人的社會行為。灰狼的社會等級在群體狩獵過程中發揮著重要的作用,捕食的過程在 α 的帶領下完成。灰狼的狩獵包括以下 3個主要部分:
1)跟蹤、追逐和接近獵物;
2)追捕、包圍和騷擾獵物,直到它停止移動;
3)攻擊獵物

在狩獵過程中,將灰狼圍捕獵物的行為定義如下:

式(1)表示個體與獵物間的距離,式(2)是灰狼的位置更新公式。其中, 是目前的迭代代數, 和 是系數向量, 和 分別是獵物的位置向量和灰狼的位置向量。 和 的計算公式如下:

其中, 是收斂因子,隨著迭代次數從2線性減小到0, 和 的模取[0,1]之間的隨機數。

灰狼能夠識別獵物的位置並包圍它們。當灰狼識別出獵物的位置後,β 和 δ 在 α 的帶領下指導狼群包圍獵物。在優化問題的決策空間中,我們對最佳解決方案(獵物的位置)並不了解。因此,為了模擬灰狼的狩獵行為,我們假設 α ,β 和 δ 更了解獵物的潛在位置。我們保存迄今為止取得的3個最優解決方案,並利用這三者的位置來判斷獵物所在的位置,同時強迫其他灰狼個體(包括 ω )依據最優灰狼個體的位置來更新其位置,逐漸逼近獵物。狼群內個體跟蹤獵物位置的機制如圖2所示。

<center>圖2.GWO 演算法中灰狼位置更新示意圖

灰狼個體跟蹤獵物位置的數學模型描述如下:

其中, 分別表示分別表示 α , β 和 δ 與其他個體間的距離。 分別代表 α , β 和 δ 的當前位置; 是隨機向量, 是當前灰狼的位置。

式(6)分別定義了狼群中 ω 個體朝向 α ,β 和 δ 前進的步長和方向,式(7)定義了 ω 的最終位置。

當獵物停止移動時,灰狼通過攻擊來完成狩獵過程。為了模擬逼近獵物, 的值被逐漸減小,因此 的波動范圍也隨之減小。換句話說,在迭代過程中,當 的值從2線性下降到0時,其對應的 的值也在區間[-a,a]內變化。如圖3a所示,當 的值位於區間內時,灰狼的下一位置可以位於其當前位置和獵物位置之間的任意位置。當 時,狼群向獵物發起攻擊(陷入局部最優)。

灰狼根據 α ,β 和 δ 的位置來搜索獵物。灰狼在尋找獵物時彼此分開,然後聚集在一起攻擊獵物。基於數學建模的散度,可以用 大於1 或小於-1 的隨機值來迫使灰狼與獵物分離,這強調了勘探(探索)並允許 GWO 演算法全局搜索最優解。如圖3b所示, 強迫灰狼與獵物(局部最優)分離,希望找到更合適的獵物(全局最優)。GWO 演算法還有另一個組件 來幫助發現新的解決方案。由式(4)可知, 是[0,2]之間的隨機值。 表示狼所在的位置對獵物影響的隨機權重, 表示影響權重大,反之,表示影響權重小。這有助於 GWO演算法更隨機地表現並支持探索,同時可在優化過程中避免陷入局部最優。另外,與 不同 是非線性減小的。這樣,從最初的迭代到最終的迭代中,它都提供了決策空間中的全局搜索。在演算法陷入了局部最優並且不易跳出時, 的隨機性在避免局部最優方面發揮了非常重要的作用,尤其是在最後需要獲得全局最優解的迭代中。

<center>圖4.演算法流程圖

[1] Seyedali Mirjalili,Seyed Mohammad Mirjalili,Andrew Lewis. Grey Wolf Optimizer[J]. Advances in Engineering Software,2014,69.

[2] 張曉鳳,王秀英.灰狼優化演算法研究綜述[J].計算機科學,2019,46(03):30-38.

https://mianbaoo.com/o/bread/Z5ecmZc=
文獻復現:
文獻復現:基於翻筋斗覓食策略的灰狼優化演算法(DSFGWO)
[1]王正通,程鳳芹,尤文,李雙.基於翻筋斗覓食策略的灰狼優化演算法[J/OL].計算機應用研究:1-5[2021-02-01]. https://doi.org/10.19734/j.issn.1001-3695.2020.04.0102 .

文獻復現:基於透鏡成像學習策略的灰狼優化演算法(LIS-GWO)
[1]龍文,伍鐵斌,唐明珠,徐明,蔡紹洪.基於透鏡成像學習策略的灰狼優化演算法[J].自動化學報,2020,46(10):2148-2164.

文獻復現:一種優化局部搜索能力的灰狼演算法(IGWO)
[1]王習濤.一種優化局部搜索能力的灰狼演算法[J].計算機時代,2020(12):53-55.

文獻復現:基於自適應頭狼的灰狼優化演算法(ALGWO)
[1]郭陽,張濤,胡玉蝶,杜航.基於自適應頭狼的灰狼優化演算法[J].成都大學學報(自然科學版),2020,39(01):60-63+73.

文獻復現:基於自適應正態雲模型的灰狼優化演算法 (CGWO)
[1]張鑄,饒盛華,張仕傑.基於自適應正態雲模型的灰狼優化演算法[J/OL].控制與決策:1-6[2021-02-08]. https://doi.org/10.13195/j.kzyjc.2020.0233 .

文獻復現:改進非線性收斂因子灰狼優化演算法
[1]王正通,尤文,李雙.改進非線性收斂因子灰狼優化演算法[J].長春工業大學學報,2020,41(02):122-127.

文獻復現:一種基於收斂因子改進的灰狼優化演算法
[1]邢燕禎,王東輝.一種基於收斂因子改進的灰狼優化演算法[J].網路新媒體技術,2020,9(03):28-34.

文獻復現:基於萊維飛行和隨機游動策略的灰狼演算法(GWOM )
[1]李陽,李維剛,趙雲濤,劉翱.基於萊維飛行和隨機游動策略的灰狼演算法[J].計算機科學,2020,47(08):291-296.

文獻復現:一種改進的灰狼優化演算法(EGWO)
[1]龍文,蔡紹洪,焦建軍,伍鐵斌.一種改進的灰狼優化演算法[J].電子學報,2019,47(01):169-175.

文獻復現:改進收斂因子和比例權重的灰狼優化演算法(CGWO)
[1]王秋萍,王夢娜,王曉峰.改進收斂因子和比例權重的灰狼優化演算法[J].計算機工程與應用,2019,55(21):60-65+98.

文獻復現:一種改進非線性收斂方式的灰狼優化演算法研究(CGWO)
[1]談發明,趙俊傑,王琪.一種改進非線性收斂方式的灰狼優化演算法研究[J].微電子學與計算機,2019,36(05):89-95.

文獻復現:一種基於Tent 映射的混合灰狼優化的改進演算法(PSOGWO)
[1]滕志軍,呂金玲,郭力文,許媛媛.一種基於Tent映射的混合灰狼優化的改進演算法[J].哈爾濱工業大學學報,2018,50(11):40-49.

文獻復現:基於差分進化與優勝劣汰策略的灰狼優化演算法(IGWO)
[1]朱海波,張勇.基於差分進化與優勝劣汰策略的灰狼優化演算法[J].南京理工大學學報,2018,42(06):678-686.

文獻復現:基於 Iterative 映射和單純形法的改進灰狼優化演算法(SMIGWO)
[1]王夢娜,王秋萍,王曉峰.基於Iterative映射和單純形法的改進灰狼優化演算法[J].計算機應用,2018,38(S2):16-20+54.

文獻復現:一種基於混合策略的灰狼優化演算法(EPDGWO)
[1]牛家彬,王輝.一種基於混合策略的灰狼優化演算法[J].齊齊哈爾大學學報(自然科學版),2018,34(01):16-19+32.

文獻復現:基於隨機收斂因子和差分變異的改進灰狼優化演算法(IGWO)
[1]徐松金,龍文.基於隨機收斂因子和差分變異的改進灰狼優化演算法[J].科學技術與工程,2018,18(23):252-256.

文獻復現:一種基於差分進化和灰狼演算法的混合優化演算法(DEGWO)
[1]金星,邵珠超,王盛慧.一種基於差分進化和灰狼演算法的混合優化演算法[J].科學技術與工程,2017,17(16):266-269.

文獻復現:協調探索和開發能力的改進灰狼優化演算法(IGWO)
[1]龍文,伍鐵斌.協調探索和開發能力的改進灰狼優化演算法[J].控制與決策,2017,32(10):1749-1757.

文獻復現:基於Cat混沌與高斯變異的改進灰狼優化演算法(IGWO)
[1]徐辰華,李成縣,喻昕,黃清寶.基於Cat混沌與高斯變異的改進灰狼優化演算法[J].計算機工程與應用,2017,53(04):1-9+50.

文獻復現:具有自適應搜索策略的灰狼優化演算法(SAGWO)
[1]魏政磊,趙輝,韓邦傑,孫楚,李牧東.具有自適應搜索策略的灰狼優化演算法[J].計算機科學,2017,44(03):259-263.

文獻復現:採用動態權重和概率擾動策略改進的灰狼優化演算法(IGWO)
[1]陳闖,Ryad Chellali,邢尹.採用動態權重和概率擾動策略改進的灰狼優化演算法[J].計算機應用,2017,37(12):3493-3497+3508.

文獻復現:具有自適應調整策略的混沌灰狼優化演算法(CLSGWO)
[1]張悅,孫惠香,魏政磊,韓博.具有自適應調整策略的混沌灰狼優化演算法[J].計算機科學,2017,44(S2):119-122+159.

文獻復現:強化狼群等級制度的灰狼優化演算法(GWOSH)
[1]張新明,塗強,康強,程金鳳.強化狼群等級制度的灰狼優化演算法[J].數據採集與處理,2017,32(05):879-889.

文獻復現:一種新型非線性收斂因子的灰狼優化演算法(NGWO)
[1]王敏,唐明珠.一種新型非線性收斂因子的灰狼優化演算法[J].計算機應用研究,2016,33(12):3648-3653.

文獻復現:重選精英個體的非線性收斂灰狼優化演算法(EGWO)
[1]黎素涵,葉春明.重選精英個體的非線性收斂灰狼優化演算法[J].計算機工程與應用,2021,57(01):62-68.

https://mianbaoo.com/o/bread/aZ2Wl54=

熱點內容
小米自動上傳 發布:2025-05-20 05:06:06 瀏覽:623
王者榮耀引流腳本 發布:2025-05-20 05:06:03 瀏覽:484
無人深空pc需要什麼配置 發布:2025-05-20 04:55:17 瀏覽:614
可編程式恆溫恆濕試驗箱 發布:2025-05-20 04:54:34 瀏覽:367
visibilityandroid 發布:2025-05-20 04:54:26 瀏覽:699
android磁場感測器 發布:2025-05-20 04:50:46 瀏覽:828
python經典編程題 發布:2025-05-20 04:42:33 瀏覽:782
xp電腦訪問win7 發布:2025-05-20 04:41:59 瀏覽:617
金融的配置是什麼 發布:2025-05-20 04:41:07 瀏覽:466
解壓擠耳朵 發布:2025-05-20 04:37:02 瀏覽:887