小科普:機器學習中的粒子群優化演算法!

格伯納發表於2018-07-24

“梯度下降不會讓你成為機器學習的專家”

小科普:機器學習中的粒子群優化演算法!

可能您遇到的大多數的簡單線性迴歸和神經網路的文章都會談論到梯度下降。在本文中,我將向您介紹一種技術,即粒子群優化(PSO)演算法。毫無疑問,梯度下降是一種很好的優化技術,它適用於凸函式和低維空間,但是你還是可以期待一下PSO的

結果。

PSO被認為是蟻群演算法、魚群演算法之外的一種群體智慧的優化演算法。後來它被簡化並用於解決優化問題。

PSO使用了一堆叫做蜂群的粒子,這些粒子可以四處移動並探索搜尋空間。

這些粒子的運動方向是-

  1. 粒子自身的先前速度(慣性)

  2. 與單個粒子最佳已知位置的距離(認知力)

  3. 遠離人群最知名的位置(社會力量)

小科普:機器學習中的粒子群優化演算法!

粒子運動被運動的方向所壓倒

基本上,粒子彼此間的共同通訊會使它們聚得更快。該群集不能完全探索搜尋空間,但可能會找到更好的解決方案。

小科普:機器學習中的粒子群優化演算法!

粒子群搜尋函式的全域性最小值

有趣的是,當粒子的個體最佳狀態優於群體最佳時,群體運動的總體方向可以在任何時間點改變。這使得許多無序和更多機會接近成本函式的全域性最小值。

現在回到現實,PSO相對來說非常容易。

與梯度下降不同,成本函式不可微分的。這是Python中用於模擬這些群粒子的簡單實現。令人驚訝的是,你不需要很多數學。它只是簡單確定三種不同的速度並計算粒子的適應度。我們儘可能多地迭代。

全居最佳或群體最佳將得到最優價值。

每個粒子都描述一組引數值和初始速度(向量)。我們只需在成本函式中插入這些值來計算適應度。這將給出我們粒子的適應度。

在每次迭代中,我們計算每個粒子的適應度。獲得了群體的最佳適應值,現在我們只需簡單地更新速度,即我們之前討論過的初始速度、認知力和社會力量的結果。

這是一個可以幫助您實現它的程式碼段。

小科普:機器學習中的粒子群優化演算法!


群體粒子的初始位置是任意的。 為了獲得最佳效果,您可以在搜尋空間的不同位置生成多個群,以獲得最佳效果。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2158395/,如需轉載,請註明出處,否則將追究法律責任。

相關文章