① 優化演算法筆記(二)優化演算法的分類
(以下描述,均不是學術用語,僅供大家快樂的閱讀)
在分類之前,我們先列舉一下常見的優化演算法(不然我們拿什麼分類呢?)。
1遺傳演算法Genetic algorithm
2粒子群優化演算法Particle Swarm Optimization
3差分進化演算法Differential Evolution
4人工蜂群演算法Artificial Bee Colony
5蟻群演算法Ant Colony Optimization
6人工魚群演算法Artificial Fish Swarm Algorithm
7杜鵑搜索演算法Cuckoo Search
8螢火蟲演算法Firefly Algorithm
9灰狼演算法Grey Wolf Optimizer
10鯨魚演算法Whale Optimization Algorithm
11群搜索演算法Group search optimizer
12混合蛙跳演算法Shuffled Frog Leaping Algorithm
13煙花演算法fireworks algorithm
14菌群優化演算法Bacterial Foraging Optimization
以上優化演算法是我所接觸過的演算法,沒接觸過的演算法不能隨便下結論,知之為知之,不知為不知。其實到目前為止優化演算法可能已經有幾百種了,我們不可能也不需要全面的了解所有的演算法,而且優化演算法之間也有較大的共性,深入研究幾個之後再看其他優化演算法上手速度會灰常的快。
優化演算法從提出到現在不過50-60年(遺傳演算法1975年提出),雖種類繁多但大多較為相似,不過這也很正常,比較香蕉和人的基因相似度也有50%-60%。當然演算法之間的相似度要比香蕉和人的相似度更大,畢竟人家都是優化演算法,有著相同的目標,只是實現方式不同。就像條條大路通羅馬,我們可以走去,可以坐汽車去,可以坐火車去,也可以坐飛機去,不管使用何種方式,我們都在去往羅馬的路上,也不會說坐飛機去要比走去更好,交通工具只是一個工具,最終的方案還是要看我們的選擇。
上面列舉了一些常見的演算法,即使你一個都沒見過也沒關系,後面會對它們進行詳細的介紹,但是對後面的分類可能會有些許影響,不過問題不大,就先當總結看了。
再對優化演算法分類之前,先介紹一下演算法的模型,在筆記(一)中繪制了優化演算法的流程,不過那是個較為簡單的模型,此處的模型會更加復雜。上面說了優化演算法有較大的相似性,這些相似性主要體現在演算法的運行流程中。
優化演算法的求解過程可以看做是一個群體的生存過程。
有一群原始人,他們要在野外中尋找食物,一個原始人是這個群體中的最小單元,他們的最終目標是尋找這個環境中最容易獲取食物的位置,即最易存活下來的位置。每個原始人都去獨自尋找食物,他們每個人每天獲取食物的策略只有採集果實、製作陷阱或者守株待兔,即在一天之中他們不會改變他們的位置。在下一天他們會根據自己的策略變更自己的位置。到了某一天他們又聚在了一起,選擇了他們到過的最容易獲取食物的位置定居。
一群原始人=優化演算法中的種群、群體;
一個原始人=優化演算法中的個體;
一個原始人的位置=優化演算法中個體的位置、基因等屬性;
原始人變更位置=優化演算法中總群的更新操作;
該位置獲取食物的難易程度=優化演算法中的適應度函數;
一天=優化演算法中的一個迭代;
這群原始人最終的定居位置=優化演算法所得的解。
優化演算法的流程圖如下:
對優化演算法分類得有個標准,按照不同的標准分類也會得到不一樣的結果。首先說一下我所使用的分類標准(動態更新,有了新的感悟再加):
按由來分類比較好理解,就是該演算法受何種現象啟發而發明,本質是對現象分類。
可以看出演算法根據由來可以大致分為有人類的理論創造而來,向生物學習而來,受物理現象啟發。其中向生物學習而來的演算法最多,其他類別由於舉例有偏差,不是很准確,而且物理現象也經過人類總結,有些與人類現象相交叉,但仍將其獨立出來。
類別分好了,那麼為什麼要這么分類呢?
當然是因為要湊字數啦,啊呸,當然是為了更好的理解學習這些演算法的原理及特點。
向動物生存學習而來的演算法一定是一種行之有效的方法,能夠保證演算法的效率和准確性,因為,如果使用該策略的動物無法存活到我們可以對其進行研究,我們也無法得知其生存策略。(而這也是一種倖存者偏差,我們只能看到行之有效的策略,但並不是我們沒看到的策略都是垃圾,畢竟也發生過小行星撞地球這種小概率毀滅性事件。講個冷笑話開cou心一shu下:一隻小恐龍對他的小夥伴說,好開心,我最喜歡的那顆星星越來越亮了(完)。)但是由於生物的局限性,人們所創造出的演算法也會有局限性:我們所熟知的生物都生存在三維空間,在這些環境中,影響生物生存的條件比較有限,反應到演算法中就是這些演算法在解決較低維度的問題時效果很好,當遇到超高維(維度>500)問題時,結果可能不容樂觀,沒做過實驗,我也不敢亂說。
按更新過程分類相對復雜一點,主要是根據優化演算法流程中更新位置操作的方式來進行分類。更新位置的操作按我的理解可大致分為兩類:1.跟隨最優解;2.不跟隨最優解。
還是上面原始人的例子,每天他有一次去往其他位置狩獵的機會,他們採用何種方式來決定今天自己應該去哪裡呢?
如果他們的策略是「跟隨最優解」,那麼他們選取位置的方式就是按一定的策略向群體已知的最佳狩獵位置(歷史最佳)或者是當前群體中的最佳狩獵位置(今天最佳)靠近,至於是直線跑過去還是蛇皮走位繞過去,這個要看他們群體的策略。當然,他們的目的不是在最佳狩獵位置集合,他們的目的是在過去的途中看是否能發現更加好的狩獵位置,去往已經到過的狩獵地點再次狩獵是沒有意義的,因為每個位置獲取食物的難易程度是固定的。有了目標,大家都會朝著目標前進,總有一日,大家會在謀個位置附近相聚,相聚雖好但不利於後續的覓食容易陷入局部最優。
什麼是局部最優呢?假設在當前環境中有一「桃花源」,擁有上帝視角的我們知道這個地方就是最適合原始人們生存的,但是此地入口隱蔽「山有小口,彷彿若有光」、「初極狹,才通人。」,是一個難以發現的地方。如果沒有任何一個原始人到達了這里,大家向著已知的最優位置靠近時,也難以發現這個「桃源之地」,而當大家越聚越攏之後,「桃源」被發現的可能性越來越低。雖然原始人們得到了他們的解,但這並不是我們所求的「桃源」,他們聚集之後失去了尋求「桃源」的可能,這群原始人便陷入了局部最優。
如果他們的策略是「不跟隨最優解」,那麼他們的策略是什麼呢?我也不知道,這個應該他們自己決定。畢竟「是什麼」比「不是什麼」的范圍要小的多。總之不跟隨最優解時,演算法會有自己特定的步驟來更新個體的位置,有可能是隨機在自己附近找,也有可能是隨機向別人學習。不跟隨最優解時,原始人們應該不會快速聚集到某一處,這樣一來他們的選擇更具多樣性。
按照更新過程對上面的演算法分類結果如下
可以看出上面不跟隨最優解的演算法只有遺傳演算法和差分進化演算法,他們的更新策略是與進化和基因的重組有關。因此這些不跟隨最優解的演算法,他們大多依據進化理論更新位置(基因)我把他們叫做進化演算法,而那些跟隨群體最優解的演算法,他們則大多依賴群體的配合協作,我把這些演算法叫做群智能演算法。
目前我只總結了這兩種,分類方法,如果你有更加優秀的分類方法,我們可以交流一下:
目錄
上一篇 優化演算法筆記(一)優化演算法的介紹
下一篇 優化演算法筆記(三)粒子群演算法(1)
② 姝d氦璇曢獙鏂規硶鍜屼竴鑸鐨勪紭鍖栫畻娉曟湁浠涔堝尯鍒錛
姝d氦璇曢獙璁捐″拰涓鑸鐨勪紭鍖栫畻娉曞湪瑙e喅鐨勯棶棰樼被鍨嬨佹悳緔㈡柟寮忋佹悳緔㈡晥鐜囦互鍙婁紭鍖栫洰鏍囩瓑鏂歸潰瀛樺湪涓浜涘尯鍒銆
瑙e喅闂棰樼被鍨嬶細姝d氦璇曢獙璁捐′富瑕佺敤浜庤В鍐沖氬洜緔犲氭按騫崇殑浼樺寲闂棰橈紝鐗瑰埆鏄褰撳洜緔犱箣闂村瓨鍦ㄤ氦浜掍綔鐢ㄦ椂錛屽畠鍙浠ユ湁鏁堝湴鎵懼嚭鏈浼樿В銆傝屼竴鑸鐨勪紭鍖栫畻娉曪紙濡傜矑瀛愮兢綆楁硶錛岄仐浼犵畻娉曪紝妯℃嫙閫鐏綆楁硶絳夛級鍒欎富瑕佺敤浜庤В鍐沖崟鐩鏍囨垨澶氱洰鏍囩殑浼樺寲闂棰橈紝閫氳繃榪浠f悳緔㈠繪壘鏈浼樿В銆
鎼滅儲鏂瑰紡錛氭d氦璇曢獙璁捐¢噰鐢ㄦd氦琛ㄧ殑鏂瑰紡榪涜岃瘯楠岃捐★紝閫氳繃鍒嗘瀽璇曢獙緇撴灉鎵懼嚭鏈浼樿В銆傝繖鏄涓縐嶅熀浜庤瘯楠岀殑璁捐℃柟娉曪紝寮鴻皟瀹炶返鍜岃傚療銆傝屼竴鑸鐨勪紭鍖栫畻娉曞垯鏄鍩轟簬鏁板︽ā鍨嬪拰榪浠f悳緔㈢殑綆楁硶錛岄氳繃涓嶆柇榪浠e繪壘鏈浼樿В銆
鎼滅儲鏁堢巼錛氭d氦璇曢獙璁捐$殑鎼滅儲鏁堢巼鐩稿硅緝楂橈紝鍥犱負瀹冨湪璁捐℃椂宸茬粡鑰冭檻鍒頒簡鍥犵礌涔嬮棿鐨勪氦浜掍綔鐢錛屽彲浠ュ噺灝戜笉蹇呰佺殑璇曢獙嬈℃暟銆傝屼竴鑸鐨勪紭鍖栫畻娉曞垯闇瑕侀氳繃澶氭¤凱浠f潵瀵繪壘鏈浼樿В錛屾悳緔㈡晥鐜囩浉瀵硅緝浣庛
浼樺寲鐩鏍囷細姝d氦璇曢獙璁捐′富瑕佹槸涓轟簡鎵懼埌鏈浼樿В錛屽嵆鎵懼埌浣垮緱鐩鏍囧嚱鏁拌揪鍒版渶浼樼殑鍥犵礌姘村鉤緇勫悎銆傝屼竴鑸鐨勪紭鍖栫畻娉曞垯鍙浠ヨВ鍐蟲洿涓哄箍娉涚殑闂棰橈紝鍖呮嫭鏈灝忓寲銆佹渶澶у寲鎴栫害鏉熸弧瓚崇瓑闂棰橈紝鍏朵紭鍖栫洰鏍囨洿涓哄氭牱鍖栥
鎬葷殑鏉ヨ達紝姝d氦璇曢獙璁捐″拰涓鑸鐨勪紭鍖栫畻娉曞湪瑙e喅鐨勯棶棰樼被鍨嬨佹悳緔㈡柟寮忋佹悳緔㈡晥鐜囧拰浼樺寲鐩鏍囩瓑鏂歸潰瀛樺湪鏄庢樉鐨勫樊寮傦紝闇瑕佹牴鎹鍏蜂綋闂棰橀夋嫨鍚堥傜殑綆楁硶鎴栨柟娉曘
③ 優化演算法
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。
④ 優化演算法筆記(五)粒子群演算法(3)
(已合並本篇內容至粒子群演算法(1))
上一節中,我們看到小鳥們聚集到一個較小的范圍內後,不會再繼續集中。這是怎麼回事呢?
猜測:
1.與最大速度限制有關,權重w只是方便動態修改maxV。
2.與C1和C2有關,這兩個權重限制了鳥兒的搜索行為。
還是上一節的實驗, 。現在我們將maxV的值有5修改為50,即maxV=50,其他參數不變。參數如下
此時得到的最優位值的適應度函數值為0.25571,可以看出與maxV=5相比,結果差了很多而且小鳥們聚集的范圍更大了。
現在我們設置maxV=1,再次重復上面的實驗,實驗結果如下:
這次最終的適應度函數值為,比之前的結果都要好0.00273。從圖中我們可以看出,小鳥們在向一個點集中,但是他們飛行的速度比之前慢多了,如果問題更復雜,可能無法等到它們聚集到一個點,迭代就結束了。
為什麼maxV會影響鳥群的搜索結果呢?
我們依然以maxV=50為例,不過這次為了看的更加清晰,我們的鳥群只有2隻鳥,同時將幀數放慢5倍以便觀察。
思路一:限制鳥的最大飛行速率,由於慣性系數W的存在,使得控制最大速率和控制慣性系數的效果是等價的,取其一即可。
方案1:使慣性系數隨著迭代次數增加而降低,這里使用的是線性下降的方式,即在第1次迭代,慣性系數W=1,最後一次迭代時,慣性系數W=0,當然,也可以根據自己的意願取其他值。
實驗參數如下:
小鳥們的飛行過程如上圖,可以看到效果很好,最後甚至都聚集到了一個點。再看看最終的適應度函數值8.61666413451519E-17,這已經是一個相當精確的值了,說明這是一個可行的方案,但是由於其最後種群過於集中,有陷入局部最優的風險。
方案2:給每隻鳥一個隨機的慣性系數,那麼鳥的飛行軌跡也將不再像之前會出現周期性。每隻鳥的慣性系數W為(0,2)中的隨機數(保持W的期望為1)。
實驗參數如下:
可以看到小鳥們並沒有像上一個實驗一樣聚集於一個點,而是仍在一個較大的范圍內進行搜索。其最終的適應度函數為0.01176,比最初的0.25571稍有提升,但並不顯著。什麼原因造成了這種情況呢?我想可能是由於慣性系數成了期望為1的隨機數,那麼小鳥的飛行軌跡的期望可能仍然是繞著一個四邊形循環,只不過這個四邊形相比之前的平行四邊形更加復雜,所以其結果也稍有提升,當然對於概率演算法,得到這樣的結果可能僅僅是因為運氣不好
我們看到慣性系數W值減小,小鳥們聚攏到一處的速度明顯提升,那麼,如果我們去掉慣性系數這個參數會怎麼樣呢。
方案3:取出慣性系數,即取W=0,小鳥們只向著那兩個最優位置飛行。
可以看見鳥群們迅速聚集到了一個點,再看看得到的結果,最終的適應度函數值為2.9086886073362966E-30,明顯優於之前的所有操作。
那麼問題來了,為什麼粒子群演算法需要一個慣性速度,它的作用是什麼呢?其實很明顯,當鳥群迅速集中到了一個點之後它們就喪失了全局的搜索能力,所有的鳥會迅速向著全局最優點飛去,如果當前的全局最優解是一個局部最優點,那麼鳥群將會陷入局部最優。所以,慣性系數和慣性速度的作用是給鳥群提供跳出局部最優的可能性,獲得這個跳出局部最優能力的代價是它們的收斂速度減慢,且局部的搜索能力較弱(與當前的慣性速度有關)。
為了平衡局部搜索能力和跳出局部最優能力,我們可以人為的干預一下慣性系數W的大小,結合方案1和方案2,我們可以使每隻鳥的慣性系數以一個隨機周期,周期性下降,若小於0,則重置為初始值。
這樣結合了方案1和方案2的慣性系數,也能得到不錯的效果,大家可以自己一試。
思路二:改變小鳥們向群體最優飛行和向歷史最優飛行的權重。
方案4:讓小鳥向全局最優飛行的系數C2線性遞減。
小鳥們的飛行過程與之前好像沒什麼變化,我甚至懷疑我做了假實驗。看看最終結果,0.7267249621552874,這是到目前為止的最差結果。看來這不是一個好方案,讓全局學習因子C2遞減,勢必會降低演算法的收斂效率,而慣性系數還是那麼大,小鳥們依然會圍繞歷史最優位置打轉,畢竟這兩個最優位置是有一定關聯的。所以讓C1線性遞減的實驗也不必做了,其效果應該與方案4相差不大。
看來只要是慣性系數不變怎麼修改C1和C2都不會有太過明顯的效果。為什麼實驗都是參數遞減,卻沒有參數遞增的實驗呢?
1.慣性系數W必須遞減,因為它會影響鳥群的搜索范圍。
2.如果C1和C2遞增,那麼小鳥的慣性速度V勢必會跟著遞增,這與W遞增會產生相同的效果。
上面我們通過一些實驗及理論分析了粒子群演算法的特點及其參數的作用。粒子群作為優化演算法中模型最簡單的演算法,通過修改這幾個簡單的參數也能夠改變演算法的優化性能可以說是一個非常優秀的演算法。
上述實驗中,我們僅分析了單個參數對演算法的影響,實際使用時(創新、發明、寫論文時)也會同時動態改變多個參數,甚至是參數之間產生關聯。
實驗中,為了展現實驗效果,maxV取值較大,一般取值為搜索空間范圍的10%-20%,按上面(-100,100)的范圍maxV應該取值為20-40,在此基礎上,方案1、方案2效果應該會更好。
粒子群演算法是一種概率演算法,所以並不能使用一次實驗結果來判斷演算法的性能,我們需要進行多次實驗,然後看看這些實驗的效果最終來判斷,結果必須使用多次實驗的統計數據來說明,一般我們都會重復實驗30-50次,為了發論文去做實驗的小夥伴們不要偷懶哦。
粒子群演算法的學習目前告一段落,如果有什麼新的發現,後面繼續更新哦!
以下指標純屬個人yy,僅供參考
目錄
上一篇 優化演算法筆記(四)粒子群演算法(2)
下一篇 優化演算法筆記(六)遺傳演算法
⑤ 智能優化演算法:灰狼優化演算法
@[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=