蒙特卡洛:大量隨機抽樣下的比對,最后結果就是在當前抽樣數量下篩選出的一定是最想要的那個結果。舉例:假如籃子里有1000個蘋果(你定的測試集)怕品,讓你 每次閉著眼睛找一個最大的野舶,可以不限制挑選次數易迹;于是,你可以閉著眼隨機拿了一個平道,然后再隨機拿一個與第一個比睹欲,留下大的;再隨機拿一個,與前次留下的比較窘疮,又 可以留下大的袋哼;循環(huán)往復這樣:拿的次數越多,挑出最大蘋果的可能性也就越大!但除非你把1000個蘋果都挑一遍闸衫,否則你無法肯定最終挑出來的就是最大的一個涛贯。如果有 10000個蘋果的話,繼續(xù)如此說不定就能找到更大的蔚出!
模擬退火:“漸漸”清楚自己的目標是什么弟翘!并不斷朝“越發(fā)”明確的目標邁進,“越來越”不被誘惑干擾骄酗。舉例:為了找出地球上最高的山稀余,一只兔子在開始并沒有 合適的策略,它隨機地跳了很長時間趋翻!在這期間滚躯,它可能走向高處,也可能踏入平地或溝壑嘿歌。但是掸掏,隨著時間的流逝,它“漸漸清醒”! 并“直直地”朝著最高的方向跳去宙帝, 最后就到達了珠穆朗瑪峰丧凤。
粒子群:信息的社會共享,以一個團隊的形式來搜索步脓!團隊里成員信息共享愿待,共同進步;避免一個人工作時出現目光短淺靴患,沒有全局意識仍侥。舉例:就像下圍棋,只 專注于一個角落的戰(zhàn)斗不一定能獲取最終的勝利鸳君,只有放眼全局农渊,把所有己方的棋子都盤活,相互間彼此幫助或颊,才能獲得最后勝利砸紊。
蟻群:和粒子群算法有些相似,都是靠團隊的力量共同去找目標囱挑!蟻群算法中特殊的是它的"信息素"揮發(fā)! 這個效果是其他算法中沒有的醉顽!
以上所有的最優(yōu)化算法都很難做到極高的精度,這是必然的:一是因為全局搜索已經耗費了大量的時間和資源平挑,再過分強調精度有些不經濟游添;二是因為全局搜索得到的最值可以理解為一精確最值的一個準確范圍系草!即進入這個范圍再進行精確的搜索一定可以找到精確最值;但是唆涝,全局最優(yōu)的核心是隨機/概率悄但,當進入一個準確范圍時,這個范圍肯定是很小的石抡,如果之后精確搜索還用全局搜索的概率參數(此時來說波動范圍太大了)檐嚣,很可能又會跳出這個好不容易找到的精確區(qū)域!
因此:全局最優(yōu)算法與局部最優(yōu)算法是要相結合的啰扛!全局最優(yōu)算法負責劃定最值所在的一個精確的嚎京、較小的范圍內,即告訴局部最優(yōu)算法在這個范圍內繼續(xù)找一定可以找到精確解隐解;局部最優(yōu)算法按照較小的步長鞍帝、較高的精度繼續(xù)搜索精確最值。
常用全局最優(yōu)算法:蒙特卡洛(MC)煞茫、模擬退火(SA)帕涌、粒子群(PSO)、蟻群(AG)续徽;
常用局部最優(yōu)算法:梯度下降法蚓曼、牛頓法、阻尼牛頓法钦扭、共軛梯度法纫版;
推薦搭配1:蒙特卡洛
推薦搭配2:粒子群 + 梯度下降
推薦搭配3:蟻群 + 梯度下降 + 重檢機制
以上提到算法的“程序 + 詳細使用說明”參考以下地址: