演算法pso
❶ pso的演算法結構
對微粒群演算法結構的改進方案有很多種,對其可分類為:採用多個子種群;改進微粒學習對象的選取策略;修改微粒更新迭代公式;修改速度更新策略;修改速度限制方法、位置限制方法和動態確定搜索空間;與其他搜索技術相結合;以及針對多模問題所作的改進。
第一類方案是採用多個子種群。柯晶考慮優化問題對收斂速度和尋優精度的雙重要求並借鑒多群體進化演算法的思想,將尋優微粒分成兩組,一組微粒採用壓縮因子的局部模式PSO演算法,另一組微粒採用慣性權重的全局模式PSO演算法,兩組微粒之間採用環形拓撲結構。對於高維優化問題,PSO演算法需要的微粒個數很多,導致計算復雜度常常很高,並且很難得到好的解。因此,出現了一種協作微粒群演算法(Cooperative ParticleSwarm Optimizer, CPSO-H),將輸入向量拆分成多個子向量,並對每個子向量使用一個微粒群來進行優化。雖然CPSO-H演算法使用一維群體來分別搜索每一維,但是這些搜索結果被一個全局群體集成起來之後,在多模問題上的性能與原始PSO演算法相比有很大的改進。Chow使用多個互相交互的子群,並引入相鄰群參考速度。馮奇峰提出將搜索區域分區,使用多個子群並通過微粒間的距離來保持多樣性。陳國初將微粒分成飛行方向不同的兩個分群,其中一分群朝最優微粒飛行,另一分群微粒朝相反方向飛行;飛行時,每一微粒不僅受到微粒本身飛行經驗和本分群最優微粒的影響,還受到全群最優微粒的影響。Niu在PSO演算法中引入主—從子群模式,提出一種多種群協作PSO演算法。Seo提出一種多組PSO演算法(Multigrouped PSO),使用N組微粒來同時搜索多模問題的N個峰。Selleri使用多個獨立的子群,在微粒速度的更新方程中添加了一些新項,分別使得微粒向子群歷史最優位置運動,或者遠離其他子群的重心。王俊年借鑒遞階編碼的思想,構造出一種多種群協同進化PSO演算法。高鷹借鑒生態學中環境和種群競爭的關系,提出一種基於種群密度的多種群PSO演算法。
第二類方案是改進微粒學習對象的選取策略。Al-kazemi提出多階段PSO演算法,將微粒按不同階段的臨時搜索目標分組,這些臨時目標允許微粒向著或背著它自己或全局最好位置移動。Ting對每個微粒的pBest進行操作,每一維從其他隨機確定的維度學習,之後如果新的pBest更好則替換原pBest;該文還比較了多種不同學習方式對應的PSO演算法的性能。Liang提出一種新穎的學習策略CLPSO,利用所有其他微粒的歷史最優信息來更新微粒的速度;每個微粒可以向不同的微粒學習,並且微粒的每一維可以向不同的微粒學習。該策略能夠保持群體的多樣性,防止早熟收斂,可以提高PSO演算法在多模問題上的性能;通過實驗將該演算法與其它幾種PSO演算法的變種進行比較,實驗結果表明該演算法在解決多模復雜問題時效果很好。Zhao在PSO演算法中使用適應值最好的n個值來代替速度更新公式中的gBest。Abdelbar提出一種模糊度量,從而使得每個鄰域中有多個適應值最好的微粒可以影響其它微粒。Wang也採用多個適應值最好的微粒信息來更新微粒速度,並提出一種模糊規則來自適應地確定參數。崔志華提出一種動態調整的改進PSO演算法,在運行過程中動態調整極限位置,使得每個微粒的極限位置在其所經歷的最好位置與整體最好位置所形成的動態圓中分布。與原始PSO演算法相反,有一類方法是遠離最差位置而非飛向最優位置。Yang提出在演算法中記錄最差位置而非最優位置,所有微粒都遠離這些最差位置。與此類似,Leontitsis在微粒群演算法中引入排斥子的概念,在使用個體最優位置和群體最優位置信息的同時,在演算法中記錄當前的個體最差位置和群體最差位置,並利用它們將微粒排斥到最優位置,從而讓微粒群更快地到達最優位置。孟建良提出一種改進的PSO演算法,在進化的初期,微粒以較大的概率向種群中其他微粒的個體最優學習;在進化後期,微粒以較大的概率向當前全局最優個體學習。Yang在PSO演算法中引入輪盤選擇技術來確定gBest,使得所有個體在進化早期都有機會引領搜索方向,從而避免早熟。
第三類方案是修改微粒更新公式。Hendtlass在速度更新方程中給每個微粒添加了記憶能力。He在速度更新方程中引入被動聚集機制。曾建潮通過對PSO演算法的速度進化迭代方程進行修正,提出一種保證全局收斂的隨機PSO演算法。Zeng在PSO演算法中引入加速度項,使得PSO演算法從一個二階隨機系統變為一個三階隨機系統,並使用PID控制器來控制演算法的演化。為了改進PSO演算法的全局搜索能力,Ho提出一種新的微粒速度和位置更新公式,並引入壽命(Age)變數。
第四類方案是修改速度更新策略。Liu認為過於頻繁的速度更新會弱化微粒的局部開采能力並減慢收斂,因此提出一種鬆弛速度更新(RVU)策略,僅當微粒使用原速度不能進一步提高適應值時才更新速度,並通過試驗證明該策略可以大大減小計算量並加速收斂。羅建宏對同步模式和非同步模式的PSO演算法進行了對比研究,試驗結果表明非同步模式收斂速度顯著提高,同時尋優效果更好。Yang在微粒的更新規則中引入感情心理模型。Liu採用一個最小速度閾值來控制微粒的速度,並使用一個模糊邏輯控制器來自適應地調節該最小速度閾值。張利彪提出了對PSO演算法增加更新概率,對一定比例的微粒並不按照原更新公式更新,而是再次隨機初始化。Dioan利用遺傳演算法(GA)來演化PSO演算法的結構,即微粒群中各微粒更新的順序和頻率。
第五類方案是修改速度限制方法、位置限制方法和動態確定搜索空間。Stacey提出一種重新隨機化速度的速度限制和一種重新隨機化位置的位置限制。Liu在[76]的基礎上,在PSO演算法中引入動量因子,來將微粒位置限制在可行范圍內。陳炳瑞提出一種根據微粒群的最佳適應值動態壓縮微粒群的搜索空間與微粒群飛行速度范圍的改進PSO演算法。
第六類方案是通過將PSO演算法與一些其他的搜索技術進行結合來提高PSO演算法的性能,主要目的有二,其一是提高種群多樣性,避免早熟;其二是提高演算法局部搜索能力。這些混合演算法包括將各種遺傳運算元如選擇、交叉、變異引入PSO演算法,來增加種群的多樣性並提高逃離局部最小的能力。Krink通過解決微粒間的沖突和聚集來增強種群多樣性,提出一種空間擴展PSO演算法(Spatial ExtensionPSO,SEPSO);但是SEPSO演算法的參數比較難以調節,為此Monson提出一種自適應調節參數的方法。用以提高種群多樣性的其他方法或模型還包括「吸引—排斥」、捕食—被捕食模型、耗散模型、自組織模型、生命周期模型(LifeCycle model)、貝葉斯優化模型、避免沖突機制、擁擠迴避(Crowd Avoidance)、層次化公平競爭(HFC)、外部記憶、梯度下降技術、線性搜索、單純形法運算元、爬山法、勞動分工、主成分分析技術、卡爾曼濾波、遺傳演算法、隨機搜索演算法、模擬退火、禁忌搜索、蟻群演算法(ACO)、人工免疫演算法、混沌演算法、微分演化、遺傳規劃等。還有人將PSO演算法在量子空間進行了擴展。Zhao將多主體系統(MAS)與PSO演算法集成起來,提出MAPSO演算法。Medasani借鑒概率C均值和概率論中的思想對PSO演算法進行擴展,提出一種概率PSO演算法,讓演算法分勘探和開發兩個階段運行。
第七類方案專門針對多模問題,希望能夠找到多個較優解。為了能使PSO演算法一次獲得待優化問題的多個較優解,Parsopoulos使用了偏轉(Deflection)、拉伸(Stretching)和排斥(Repulsion)等技術,通過防止微粒運動到之前已經發現的最小區域,來找到盡可能多的最小點。但是這種方法會在檢測到的局部最優點兩端產生一些新的局部最優點,可能會導致優化演算法陷入這些局部最小點。為此,Jin提出一種新的函數變換形式,可以避免該缺點。基於類似思想,熊勇提出一種旋轉曲面變換方法。
保持種群多樣性最簡單的方法,是在多樣性過小的時候,重置某些微粒或整個微粒群。Lvbjerg在PSO演算法中採用自組織臨界性作為一種度量,來描述微粒群中微粒相互之間的接近程度,來確定是否需要重新初始化微粒的位置。Clerc提出了一種「Re-Hope」方法,當搜索空間變得相當小但是仍未找到解時(No-Hope),重置微粒群。Fu提出一種帶C-Pg變異的PSO演算法,微粒按照一定概率飛向擾動點而非Pg。赫然提出了一種自適應逃逸微粒群演算法,限制微粒在搜索空間內的飛行速度並給出速度的自適應策略。
另一種變種是小生境PSO演算法,同時使用多個子種群來定位和跟蹤多個最優解。Brits還研究了一種通過調整適應值計算方式的方法來同時找到多個最優解。Li在PSO演算法中引入適應值共享技術來求解多模問題。Zhang在PSO演算法中採用順序生境(SequentialNiching)技術。在小生境PSO演算法的基礎上,還可以使用向量點積運算來確定各個小生境中的候選解及其邊界,並使該過程並行化,以獲得更好的結果。但是,各種小生境PSO演算法存在一個共同的問題,即需要確定一個小生境半徑,且演算法性能對該參數很敏感。為解決該問題,Bird提出一種自適應確定niching參數的方法。
Hendtlass在PSO演算法中引入短程力的概念,並基於此提出一種WoSP演算法,可以同時確定多個最優點。劉宇提出一種多模態PSO演算法,用聚類演算法對微粒進行聚類,動態地將種群劃分成幾個類,並且使用微粒所屬類的最優微粒而非整個種群的最好微粒來更新微粒的速度,從而可以同時得到多個近似最優解。Li在PSO演算法中引入物種的概念,但是由於其使用的物種間距是固定的,該方法只適用於均勻分布的多模問題;為此,Yuan對該演算法進行擴展,採用多尺度搜索方法對物種間距加以自適應的調整。
此外,也有研究者將PSO演算法的思想引入其他演算法中,如將PSO演算法中微粒的運動規則嵌入到進化規劃中,用PSO演算法中的運動規則來替代演化演算法中交叉運算元的功能。
❷ 如何用粒子群優化(PSO)演算法實現多目標優化
粒子群演算法,也稱粒子群優化演算法(ParticleSwarmOptimization),縮寫為PSO,是近年來發展起來的一種新的進化演算法(EvolutionaryAlgorithm-EA)。PSO演算法屬於進化演算法的一種,和模擬退火演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover)和「變異」(Mutation)操作,它通過追隨當前搜索到的最優值來尋找全局最優。這種演算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性。粒子群演算法是一種並行演算法。
❸ 二進制PSO演算法
PSO演算法中每一粒子都被看是潛在的最優解,具體實現思路是先將粒子初始化,對於每個粒子都有一個當前位置以及根據適應度值做粒子更新的速度(Kennedy et al.,1995),通過迭代計算得到最優解。PSO粒子速度計算和對應位置更新的原理如式(8.1)、式(8.2)所示:
高光譜遙感影像信息提取技術
式中:xid是粒子;c1,c2是學習因子;w是慣性因子,是粒子速度保持更新之前粒子速度的能力;pid是目前單個粒子最優位置;pgd是整個粒子群目前得到的最優位置;rand是0~1之間的隨機數。
二進制PSO首先將粒子初始化為0和1組成的序列。二進制PSO演算法是對式(8.2)作些改變,其位置更新如式(8.3)所示(程志剛等,2007):
高光譜遙感影像信息提取技術
式中: 是 Sigmoid 函數。
❹ pso的優化求解
PSO演算法被廣泛應用於各種優化問題,並且已經成為優化領域中的一個有效演算法。除了普通函數優化之外,還包括如下方面。
混合整數非線性規劃
很多求解整數規劃的演算法是在採用實數域的演算法進行優化後,再將結果取整作為整數規劃的近似解。這種做法常常導致不滿足約束或遠離最優解。譚瑛提出一種在整數空間中直接進行進化計算的PSO演算法。劉釗針對混合整數非線性規劃中可行解產生代價較高的問題,建立了保證都是合法解的備用微粒庫,並提出微粒遷移策略,幫助微粒跳出局部最優。
雜訊和動態環境
動態系統的狀態會經常改變,甚至可能會連續變化。許多實際系統都會涉及到動態環境。例如,由於顧客的優先順序、意外的設備維護等導致的變化,調度系統中大多數計算時間都被用來進行重新調度。在實際應用中,這些系統狀態的變化就需要經常進行重新優化。
最初使用微粒群演算法跟蹤動態系統的工作由Carlisle提出,通過周期性地重置所有微粒的記憶來跟蹤動態系統。Eberhart也採用類似想法;之後Hu提出一種自適應PSO演算法,能夠自動跟蹤動態系統中的不同變化,並在拋物線benchmark函數上對不同的環境檢測和響應技術進行了實驗,其中使用的檢測方法是監控種群中最優微粒的行為。後來Carlisle使用搜索空間中的一個隨機點來確定環境是否發生變化,但是這需要集中控制,與PSO演算法的分布式處理模型不符。為此Cui提出TDPSO演算法,讓最優歷史位置的適應值隨著時間減小,從而不再需要集中控制。Blackwell在微粒的更新公式中添加了一項懲罰項,來保持微粒處於一個擴展的群中,以應對快速變化的動態環境,該方法中不需要檢測最優點是否發生變化。
Parsopoulos等的試驗表明,基本PSO演算法就可以有效而穩定地在雜訊環境中工作,且在很多情況下,雜訊的存在還可以幫助PSO演算法避免陷入局部最優。Parsopoulos還通過試驗研究了UPSO演算法在動態環境中的性能。Pugh提出一種抗雜訊的PSO演算法。Pan將假設檢驗和最優計算預算分配(OCBA)技術引入微粒群演算法,提出PSOOHT演算法,來解決雜訊環境下的函數優化問題。
上述工作的研究對象都是簡單的動態系統,所採用的實驗函數是簡單的單模函數,並且所涉及的變化都是簡單環境下的均勻變化(即固定步長)。而事實上,實際的動態系統經常是非線性的,並在復雜的多模搜索空間中非均勻變化。Li採用四個PSO模型,對一系列不同的動態環境進行了對比研究。
上述方法均是針對僅跟蹤單個最優點的情況,
❺ 怎樣用PSO演算法求解一個簡單的函數
約束優化
約束優化問題的目標是在滿足一組線性或非線性約束的條件下,找到使得適應值函數最優的解。對於約束優化問題,需要對原始PSO演算法進行改進來處理約束。 一種簡單的方法是,所有的微粒初始化時都從可行解開始,在更新過程中,僅需記住在可行空間中的位置,拋棄那些不可行解即可。該方法的缺點是對於某些問題,初始的可行解集很難找到。或者,當微粒位置超出可行范圍時,可將微粒位置重置為之前找到的最好位置,這種簡單的修正就能成功找到一系列Benchmark問題的最優解。Paquet讓微粒在運動過程中保持線性約束,從而得到一種可以解決線性約束優化問題的PSO演算法。Pulido引入擾動運算元和約束處理機制來處理約束優化問題。Park提出一種改進的PSO演算法來處理等式約束和不等式約束。 另一種簡單的方法是使用懲罰函數將約束優化問題轉變為無約束優化問題,之後再使用PSO演算法來進行求解。Shi將約束優化問題轉化為最小—最大問題,並使用兩個共同進化的微粒群來對其求解。譚瑛提出一種雙微粒群的PSO演算法,通過在微粒群間引入目標信息與約束信息項來解決在滿足約束條件下求解目標函數的最優化問題。Zavala在PSO演算法中引入兩個擾動運算元,用來解決單目標約束優化問題。 第三種方法是採用修復策略,將微粒發現的違反約束的解修復為滿足約束的解。
約束滿足問題
PSO演算法設計的初衷是用來求解連續問題,但近年來對於可滿足性問題PSO演算法的研究也不斷得到人們的重視。Schoofs提出用PSO演算法求解二元約束滿足問題,對微粒的位置和速度計算公式進行了重新定義,使用變數和它的關聯變數存在的沖突數作為微粒的適應度函數,並指出該演算法在求解約束滿足問題上具有一定優勢。Lin在Schoofs工作的基礎上研究了使用PSO演算法來求解通用的n元約束滿足問題。楊輕雲在Schoofs工作的基礎上對適應度函數進行了改進,把最大度靜態變數序列引入到適應度函數的計算中。
❻ 粒子群優化演算法的PSO
演化計算可以用來研究神經網路的三個方面:網路連接權重,網路結構(網路拓撲結構,傳遞函數),網路學習演算法。
不過大多數這方面的工作都集中在網路連接權重,和網路拓撲結構上。在GA中,網路權重和/或拓撲結構一般編碼為染色體(Chromosome),適應函數(fitness function)的選擇一般根據研究目的確定。例如在分類問題中,錯誤分類的比率可以用來作為適應值。 這里用一個簡單的例子說明PSO訓練神經網路的過程。這個例子使用分類問題的基準函數 (Benchmark function)IRIS數據集。(Iris 是一種鳶尾屬植物) 在數據記錄中,每組數據包含Iris花的四種屬性:萼片長度,萼片寬度,花瓣長度,和花瓣寬度,三種不同的花各有50組數據. 這樣總共有150組數據或模式。
我們用3層的神經網路來做分類。現在有四個輸入和三個輸出。所以神經網路的輸入層有4個節點,輸出層有3個節點我們也可以動態調節隱含層節點的數目,不過這里我們假定隱含層有6個節點。我們也可以訓練神經網路中其他的參數。不過這里我們只是來確定網路權重。粒子就表示神經網路的一組權重,應該是4*6+6*3=42個參數。權重的范圍設定為[-100,100] (這只是一個例子,在實際情況中可能需要試驗調整).在完成編碼以後,我們需要確定適應函數。對於分類問題,我們把所有的數據送入神經網路,網路的權重有粒子的參數決定。然後記錄所有的錯誤分類的數目作為那個粒子的適應值。現在我們就利用PSO來訓練神經網路來獲得盡可能低的錯誤分類數目。PSO本身並沒有很多的參數需要調整。所以在實驗中只需要調整隱含層的節點數目和權重的范圍以取得較好的分類效果。
❼ pso的並行演算法
與大多數隨機優化演算法相似,當適應值評價函數的計算量比較大時,PSO演算法的計算量會很大。為了解決該問題,研究者提出了並行PSO演算法。與並行遺傳演算法類似,並行PSO演算法也可以有三種並行群體模型:主從並行模型、島嶼群體模型和鄰接模型。
Schutte採用同步實現方式,在計算完一代中所有點的適應值之後才進入下一代。這種並行方法雖然實現簡單,但常常會導致並行效率很差。故而有人提出非同步方式的並行演算法,可以在對數值精度影響不大的條件下提高PSO演算法的並行性能。這兩種方式採用的都是主從並行模型,其中非同步方式在求解上耦合性更高,更容易產生通信瓶頸。
Baskar提出一種兩個子種群並行演化的並發PSO演算法,其中一個子種群採用原始的PSO演算法,另一個子種群採用基於適應值距離比的PSO演算法(FDR-PSO);兩個子種群之間頻繁地進行信息交換。而El-Abd研究了在子種群中採用局部鄰域版本的協作PSO演算法,並研究了多種信息交換的方式及其對演算法性能的影響。黃芳提出一種基於島嶼群體模型的並行PSO演算法,並引入一種集中式遷移策略,提高了求解效率,同時改善了早收斂現象。
Li提出延遲交換信息的並行演算法屬於鄰接模型,該演算法可以提高速度,但可能使得解的質量變差。
❽ pso的離散演算法
很多優化問題涉及到離散或二值的變數,典型的例子包括調度問題或路由問題。而PSO演算法的更新公式和過程是面向連續空間並為其設計的,因此需要做一些修改使之適應離散空間的情況。編碼的修改可能很簡單,難點在於定義速度的意義和確定軌跡的變化。
Kennedy定義了第一個離散二進製版本的PSO演算法。微粒使用二進制字元串進行編碼。通過使用sigmoid函數,速度被限制在[0, 1]區間之內,並被解釋為「概率的變化」。Yang對該方法在量子空間進行了擴展。
Mohan提出了幾種二進制方法(直接方法、量子方法、正則方法、偏差向量方法以及混合方法),但是從有限的實驗中沒有得出什麼結論。Clerc對一些專用於某些約束優化問題如TSP問題的PSO演算法變種進行了試驗,結果顯示該方法比較有前途。Pang使用模糊矩陣來表示微粒的位置和速度,對PSO演算法的算符進行了重定義,並將其應用到TSP問題的求解。Pampara將PSO演算法與信號處理中的角調制技術結合起來,將高維二進制問題降維為一個在連續空間中定義的四維問題,並通過求解該四維問題來獲得原問題的解。Afshinmanesh重新定義了離散PSO演算法中的加法與乘法,並使用人工免疫系統中的陰性選擇來實現速度限制Vmax。
Hu提出了一種改進PSO演算法來處理排列問題。微粒被定義為一組特定值的排列,速度基於兩個微粒的相似度重新定義,微粒根據由它們的速度所定義的隨機率來變換到一個新的排列。引入了一個變異因子來防止當前的pBest陷入局部最小。在n皇後問題上的初步研究顯示改進的PSO演算法在解決約束滿意問題方面很有前途。
Migliore對原始的二進制PSO演算法進行了一些改進,提出了可變行為二進制微粒群演算法(VB-BPSO)和可變動態特性二進制微粒群演算法(VD-BPSO)。VB-BPSO演算法按照連續PSO演算法的速度更新公式的思想設計了一個新的速度更新公式,用來確定微粒位置向量每一位為1的概率。而VD-BPSO演算法則是根據一定規則在兩組不同參數確定的VB-BPSO演算法之間切換。Migliore應用該演算法設計出一種簡單魯棒的自適應無源天線。
Parsopoulos以標准函數為例測試微粒群優化演算法解決整數規劃問題的能力。Salman將任務分配問題抽象為整數規劃模型並提出基於微粒群優化演算法的解決方法。兩者對迭代產生的連續解均進行舍尾取整後評價其質量。但是PSO演算法生成的連續解與整數規劃問題的目標函數評價值之間存在多對一的映射,以整型變數表示的目標函數不能准確反映演算法中連續解的質量,而由此導致的冗餘解空間與相應的冗餘搜索降低了演算法的收斂效率。
高尚採用交叉策略和變異策略,將PSO演算法用來解決集合劃分問題。趙傳信重新定義了微粒群位置和速度的加法與乘法操作,並將PSO演算法應用到0/1背包問題求解中。EL-Gallad在PSO演算法中引入探索和勘探兩個運算元,用於求解排序問題。Firpi提出了BPSO演算法的一種保證收斂的版本(但是並未證明其保證收斂性),並將其應用到特徵選擇問題。
上述離散PSO演算法都是間接的優化策略,根據概率而非演算法本身確定二進制變數,未能充分利用PSO演算法的性能。在處理整數變數時,PSO演算法有時候很容易陷入局部最小。原始PSO演算法的思想是從個體和同伴的經驗進行學習,離散PSO演算法也應該借鑒該思想。高海兵基於傳統演算法的速度—位移更新操作,在分析微粒群優化機理的基礎上提出了廣義微粒群優化模型(GPSO),使其適用於解決離散及組合優化問題。GPSO 模型本質仍然符合微粒群優化機理,但是其微粒更新策略既可根據優化問題的特點設計,也可實現與已有方法的融合。基於類似的想法,Goldbarg將局部搜索和路徑重連過程定義為速度運算元,來求解TSP問題。
❾ Tent映射與PSO演算法用於波段尋優的思想
高光譜遙感對地物光譜特徵進行了細致的刻畫,提高了地物識別的可靠性,但是隨著光譜維數增加也帶來了大量冗餘數據,給高光譜數據處理與信息識別等增添了負擔,同時也會影響地物識別的精度,故地物識別時對高光譜數據進行降維、選取特徵波段就顯得非常重要。支持向量機(Support Vector Machine,SVM)是一種機器學習演算法,由美國貝爾實驗室Vapnik針對分類和回歸問題,為適合小樣本學習問題首先提出來的(Vapnik,1995),SVM具有很好的泛化能力,並在一定程度上克服了機器學習的維數災難。近年來,SVM以及基於其他演算法改進的SVM用於高光譜影像的分類得到了廣泛應用,並取得了很好的分類精度(Melgani et al.,2004;李祖傳等,2011)。但針對高光譜數據冗餘性,粒子群優化(Particle Swarm Optimization,PSO)演算法在尋找最優特徵波段組合與進一步提高SVM分類精度方面具有較好的優勢。
PSO演算法是一種通過個體與群體之間的協作來尋找最優解的機器學習演算法,具有自適應,自組織以及快速得到最優解的能力。PSO演算法首先由Kennedy和Eberhart提出來的,後來為了使PSO有更廣泛的應用范圍,他們又提出了二進制PSO演算法(Kennedy et al.,1995,1997;Khanesar et al.,2007;張浩等,2008)。自從PSO演算法提出以來,該演算法已經在各個研究領域得到了廣泛的關注。在高光譜遙感應用方面,Monteiro和Kosugi(2007)提出基於PSO的高光譜影像最佳波段組合和最佳波段數的選取方法,並通過實驗和傳統波段選取方法相比較,證明了基於PSO進行特徵波段選取的優越性。丁勝等(2010)提出一種PSO-BSSVM分類模型,用於高光譜影像特徵波段的選取以及對SVM的參數尋優,通過和其他方法的實驗比較得出該模型可以提高分類精度。李林宜和李德仁(2011)也在模糊特徵的選取中也用了PSO演算法。總之PSO在高光譜影像分類的特徵波段選取中應用比較成功,但由於PSO容易早熟,陷入局部最優,所以針對這點以及為獲得更高的SVM分類精度,對PSO加以改進是非常有意義的。Tent映射是混沌理論中典型的混沌映射例子,Tent映射具有隨機性和遍歷性,所以把Tent映射加入PSO可以對PSO演算法容易陷入局部最優的狀況進行改善。本章就主要通過改進Tent映射後運用於二進制PSO演算法進行尋優,尋找高光譜影像SVM分類的最優特徵波段組合。
❿ PSO優化方向
1. PSO收斂快,特別是在演算法的早期,但存在著精度較低,易發散等缺點。加速系數、最大速度等參數太大,粒子可能錯過最優解--------------->不收斂; 收斂的情況下,由於所有粒子都向最優的方向飛去,所有粒子趨向同一化(失去多樣性)--------->使得 後期收斂速度明顯變慢,搜索能力變弱 ,同時演算法收斂到一定精度時,無法繼續優化。
2. 缺乏數學理論支持,PSO演算法本質上是一種隨機搜索演算法,因此可靠性上讓人存疑;
3. 尋找一種好的拓撲結構,加強PSO演算法的泛化能力;
4. 平衡全局搜索和局部搜索能力;
(1)粒子群初始化:粒子群初始化對演算法性能有一定的影響,分為粒子位置初始化和速度初始化。
粒子群 位置 初始化的理想效果:初始種群盡可能 均勻覆蓋整個 搜索空間。
一、不推薦的初始化 :a. 均勻分布隨機數
缺點:1. 對搜索空間的覆蓋不夠好;
2. 當維度D增大時候,所有的粒子都傾向於靠近搜索空間的邊緣:
b. 偽隨機數初始化:造成粒子在參數空間的不均勻分布和聚集效應;
二、推薦的初始化 :a. 基於centroidal voronoi tessellations (CVTs)的種群初始化方法(這東西是啥沒搞懂);
b. 採用正交設計方法對種群進行初始化;
c. 類隨機采樣方法中的sobol序列:使得粒子群在參數空間更加均勻;
d. Hammersley方法:感覺這個類似於類隨機采樣方法(具體我也沒搞清楚);
e. 將粒子建立為帶電(positive charged)的模型,通過建立一個平衡方程,求解該方程的最小解獲得粒子初始化位置;
f. 設置偏向的隨機分布(推薦) :即:我們通過對評價函數等一系列先驗信息進行分析,得出最優解的可能存在空間范圍,然後在這些范圍內,著重撒點。就算再不濟,也可以根據評價函數遵循Nearer is Better class(最優解更加可能在搜索空間的中心位置准則),在搜索空間的中心位置著重撒點。比如:
粒子群 速度 初始化:主要有如下五種方式:(根據實驗表明,One-rand的效果最好。喂!!!這里One-rand的表達式是不是寫錯了啊?)
(2)領域拓撲:粒子的拓撲,決定了粒子所接受到的信息來源。
一、全局模型gbest:最早的粒子群優化版本是全局PSO,使用全局拓撲結構,社會 只能 通過種群中, 最優的那個粒子 ,對每個粒子施加影響。
1. 優點:具有較快的收斂速度。
2. 缺點:粒子間的交流不夠充分,但更容易陷入局部極值。
二、局部模型lbest:採用每個粒子僅在一定的鄰域內進行信息交換,,粒子之間的交流相對比較緩慢。
1. 優點:粒子更容易搜索問題空間中的不同地區。
2. 缺點:信息傳遞緩慢,設計相對復雜。
3. 分類:被動模型:微觀領域、宏觀領域、維度劃分;主動模型。
(1)微觀鄰域:細分到每個粒子。空間鄰域(spatial neighborhood)、性能空間(performance space)鄰域、社會關系鄰域(sociometric neighborhood)。
a. 空間鄰域:直接在搜索空間按粒子間的距離(如歐式距離)進行劃分。在搜索初始階段,將鄰域定義為每個粒子自身;隨著迭代次數的增加,將鄰域范圍逐漸擴展到整個種群。
b. 性能空間領域:根據性能指標(如適應度、目標函數值)劃分的鄰域,如:適應度距離比值(fitness-distance-ratio)來選擇粒子的相鄰粒子。
c. 社會關系鄰域: 按粒子存儲陣列的索引編號進行劃分,主要有:環形拓撲(ring or circle topology)、輪形拓撲(wheel topology)或星形拓撲(star topology)、塔形拓撲(pyramid topology)、馮-諾以曼拓撲(Von Neumann topology)以及隨機拓撲(random topology)等。(隨機拓撲往往對大多數問題能表現出較好的性能,其次是馮-諾以曼拓撲。)
(2)宏觀鄰域:對群體進行劃分。比如:使用簇分析將整個粒子群劃分為多個簇,然後用簇中心代替帶收縮因子PSO中的粒子歷史最佳位置或群體歷史最佳位置;根據粒子相似性動態地將粒子群體按種類劃分為多個子種群,再以每個子種群的最佳個體作為每個粒子的鄰域最佳位置;劃分一個主群體,多個仆群體,仆群體進行獨立的搜索,主群體在仆群體提供的最佳位置基礎上開展搜索;每間隔一定代數將整個群體隨機地重新劃分;每個粒子除了自身和鄰域最佳歷史位置外,還學習鄰域內其他粒子的 成功經驗(只學好的,不學壞的) 等等;
(3)維度劃分:想法源自於:搜索空間維數較高時往往容易遭受「維數災」的困擾。假設粒子群的整體維度為D,則可以將D劃分成不同的部分,比如劃分成k份,使用不同的群體,分別優化不同的維度。
(4)主動模型:主動改變粒子鄰域空間,避免碰撞和擁擠。比如:將粒子分為帶電粒子和自然粒子,帶電粒子接近會產生排斥;為每個粒子引入與鄰近粒子距離成反比的自組織危險度,距離越近危險度越高,當危險度達到一定閾值,對粒子進行重新初始化,或者彈開;為粒子賦一個半徑,以檢測兩個粒子是否會發生碰撞,並且採取碰撞-彈開方式將其分離。
(3)參數選擇:三種參數:慣性權重或收斂因子、最大速度、兩個加速因子。
一、慣性權重:
a. 慣性權重大:加強PSO 全局 搜索能力;慣性權重小:加強PSO 局部 搜索能力;
b. 矛盾點:初始慣性權重大,局部搜索能力差,可能錯過最優點;後期,慣性權重小,全局搜索能力不行,導致整個粒子群就陷入局部最優解。
c. 優化方向:在適當的時候降低權重w,平衡全局和局部搜索能力;
d. 優化建議:w隨著更新代數的增加從0.9線性遞減到0.4;
二、壓縮因子:
a. 優勢:慣性常數方法通常採用慣性權值隨更新代數增加而遞減的策略,演算法後期由於慣性權值過小,會失去探索新區域的能力,而收縮因子方法則不存在此不足
b. 優化建議:通常φ取4.1,χ得0.729。
三、最大速度的選擇:為了抑制粒子更新的無規律的跳動,速度往往被限制在[-Vm,Vm]
a. Vm增大,有利於全局 探索(exploration) ,但可能越過全局最優解;Vm減小,有利於局部 開發(exploitation) ,但可能陷入局部最優;
b. 優化建議:一般設定為問題空間的10%~20%;或者動態調整Vm,比如:根據群體最佳適應和最差適應來進行調整;
四、兩個加速常數:加速常數C1和C2分別用於控制粒子指向自身或鄰域最佳位置的運動。
a. C1增大,粒子全局搜索能力好;C2增大,粒子向著最優靠攏局部能力好,但粒子會過早收斂;
b. 優化建議:C1 = C2 = 2.0,並且C1+C2 <= 4.0;或者根據自適應調整,比如隨著迭代次數增加,減小C1增大C2;
(4)混合法:PSO與其他方法結合。
這點我覺得,主要根據個人的學習積累來操作。考慮方向:增加粒子群的局部搜索能力。