模擬退火演算法流程圖
㈠ 模擬退火法<sup>[1,]</sup>
模擬退火演算法最早在1953年由 Metropolis等人提出。在地球物理中的最早應用是Rothman在1983年利用模擬退火演算法處理地震資料的剩餘靜校正。模擬退火法也是類似於蒙特卡洛法的隨機搜索方法。但是在產生模型的過程中引入一些規則,能有效地加快搜索速度,有時又稱這類方法為啟發式蒙特卡洛法。
模擬退火法概念源於統計物理學,是模擬固體熔化狀態逐漸緩慢冷卻最終達到能量最小的結晶狀態的物理過程。對於一個熔化的金屬,當處於某個溫度的熱平衡狀態時,它的每一個分子都有它可能所處的狀態,有些分子可能能量高一些,有些分子可能能量低一些,分子處於何種狀態的概率由分子所具有的能量決定。設分子所有可能的能級總數為n(微觀粒子的能量都是量子化的,不連續的),則分子處於某種狀態的概率滿足玻爾茲曼概率分布:
地球物理反演教程
其中:Ei為第i個分子的能量;K為玻爾茲曼常數;T為絕對溫度;n為分子所有可能的能級總數,分母稱為配分因子;pi為第i個分子處於能量Ei的概率。
如果把地球物理反演的模型向量看作分子,把目標函數看作分子的能量,把目標函數的極小值看成分子冷卻結晶的最小能量,反演問題(最優化問題)可以模擬式(8.11)金屬退火的過程,通過緩慢地減小溫度進行反演,使目標函數(能量)逐漸達到極小值,這時所對應的模型(分子狀態)就是反演結果。
為了改善於蒙特卡洛法的隨機搜索方法,1953年 Metropolis等人在產生模型的過程中引入Metropolis接受准則,模型產生並不是完全隨機,而是以前一個模型為基礎隨機產生。對能量減小的模型完全接受,對能量增加的模型按一定的概率接受,這樣能有效地加快搜索速度,同時又有可能跳出局部極小值。具體如下:
設原來模型向量為mi,新的模型為mi+1(在mi基礎上隨機修改產生),各自的能量(目標函數)為E(mi)和E(mi+1)。如果E(mi+1)<E(mi),則目標函數在減小,新模型可以接受。如果E(mi+1)>E(mi),則目標函數在增加,按照一定概率來確定是否接受新的模型。具體規則見式(8.12):
E(mi+1)<E(mi) 完全接受mi+1為新模型
地球物理反演教程
式(8.12)就是Metropolis接受准則。它使得反演過程可以接受使目標函數增加的模型,因此也就使得模擬退火法有可能跳出局部極小,收斂於全局極小值點。由於玻爾茲曼常數K只是起到尺度因子的作用,在實際計算中K可取為1來簡化公式。從式(8.12)可以看出,當溫度較低時,pi+1/pi較小,因此接受使能量增加的新模型的可能性較小。而一般溫度較低時,目標函數較小,模型比較靠近真實模型,這時基本上只接受使目標函數減小的模型,使模型盡快收斂於極小值點。
在模擬退火反演中,要求溫度T隨著迭代次數的增加而緩慢降溫。常用的溫度函數有兩種。
(1)指數下降型:
Tk=T0·exp(-ck1/N) (8.13)
式中:k為迭代次數;c為衰減因子;N為模型參數的個數;T0為初始溫度。上式也可以改寫為
地球物理反演教程
通常選擇0.7≤α≤1。在實際應用中可採用0.5或1代替式(8.14)的1/N。圖8.4(a)為指數降溫曲線。採用參數為:T0=200℃,α=0.99,1/N=0.9。
(2)雙曲線下降型:
T=T0αk (8.15)
式中:T0為初始溫度;k為迭代次數;α為衰減因子,通常取0.99。初始溫度T0不能取得太高,否則增加計算時間浪費機時;T0也不能太低,否則模型選取不能遍及整個模型空間,只是在初始模型附近選取,不能進行全局尋優。所以T0的確定只有通過實驗計算得到。圖8.4(b)為雙曲線降溫曲線。採用參數為:T0=200℃,α=0.99。從圖8.4可以看出通過對不同溫度曲線和相關參數進行選擇,可以控制溫度下降的方式和速度。
圖8.4 模擬退火法降溫曲線
模擬退火法主要有三種:
(1)MSA演算法(Metropolis Simulated Annealing);
(2)HBSA演算法(Heat Bath Simulated Annealing);
(3)VFSA演算法(Very Fast Simulated Annealing)。
圖8.5 模擬退火MSA演算法程序流程圖
前面介紹的利用 Metropolis接受准則的演算法就是經典的模擬退火法。圖8.5為模擬退火 MSA演算法的程序流程圖。從中可以看出 MSA演算法有一套模型修改准則,依次改變模型參數,每次改變都是在原來模型基礎上改變一個參數,因此容易保持已有搜索成果,持續不斷地向目標函數最小值點接近,因此搜索效率比蒙特卡洛法高。此外,MSA演算法允許接受使目標函數增加的模型,這樣又易於跳出局部極小,達到全局極小。但 MSA演算法在任何溫度下和蒙特卡洛法一樣都是在模型全空間進行搜索,不能根據當前溫度和模型減小搜索空間,此外由於模型的修改全憑運氣,所以不可能像前面介紹的最小二乘法那樣目標函數基本上持續減小,而是呈不規則振盪在宏觀上逐漸減小,因此效率較低。
HBSA演算法與 MSA演算法的不同之處是在模型的修改上。也是首先隨機選擇一個初始M維模型向量m0(它具有M個參數);然後限制各個模型參數可能的取值范圍,對取值離散化。假設每個模型參數都有N個可能的值,首先固定模型第2個參數m0(2)直到第M個參數m0(M)保持不變,只修改第1個參數m0(1);計算m0(1)的所有取值時的目標函數,然後按式(8.16)計算「概率」,它就是式(8.11)配分因子取1的公式。即
地球物理反演教程
選擇「概率」最大的為模型第1個參數的修改值。照此依次對所有模型參數進行修改完成依次迭代計算。在每次迭代計算中保持溫度不變。隨著迭代次數增加,溫度降低,最終達到穩定狀態,獲得最小能量解。這種方法的計算由於要計算某個參數的所有可能值,所以計算量也是很大的。
1989年Ingber提出了VFSA演算法,由於速度較快,最為常用。它使得模擬退火法從理論走向了實際應用。VFSA演算法在流程上與傳統的模擬退火法相同,但是在模型修改、接受概率以及降溫曲線上有所改進。
(1)模型修改:常規模擬退火法採用高斯隨機分布修改模型,在任何溫度下都是在模型全空間進行搜索。而Ingber提出採用依賴於溫度的似cauchy分布產生新的模型。即
地球物理反演教程
yi=Tsgn(u-0.5)[(1+1/T|2u-1|-1](8.18)
其中:mi為當前模型第i個參數,m'i為修改後的模型參數;u為[0,1]的隨機數;[Ai,Bi]為mi和m'i的取值范圍;sgn( )為符號函數。
採用以上方式能在高溫下進行大范圍的搜索,低溫時在當前模型附近搜索,而且由於似cauchy分布具有平坦的「尾巴」,使其易於迅速跳出局部極值。這一改進大大加快了模擬退火法的收斂速度。
(2)接收概率:當E(mi+1)>E(mi)時,VFSA演算法採用如下概率接受公式:
地球物理反演教程
上式當h→1時變為式(8.12)。h通過實驗獲得。
(3)降溫曲線(退火計劃):Ingber在1989年採用式(8.13)得出指數降溫曲線。從圖8.4可知,溫度下降較快。
總之,VFSA演算法在模型修改、接受概率以及降溫曲線上的改進使得模擬退火演算法收斂速度大大加快。後人在此基礎上還有很多的改進,讀者可以參考相關文獻。
模擬退火法的優點:由於不需要計算偏導數矩陣,不需要解線性方程組(當然正演計算的除外),結構簡單,易於編程;此外,由於它搜索范圍大,能接受較差模型,因此易於達到全局極小。缺點:隨機搜索,計算量巨大,往往要計算成百上千次正演,這與前面的最小二乘法十幾次的正演計算相比反演時間太長,因此一般應用在一維反演之中,在二維、三維等高維反演中應用較少。
㈡ 求一個模擬退火演算法優化BP神經網路的一個程序(MATLAB)
「模擬退火」演算法是源於對熱力學中退火過程的模擬,在某一給定初溫下,通過緩慢下降溫度參數,使演算法能夠在多項式時間內給出一個近似最優解。退火與冶金學上的『退火』相似,而與冶金學的淬火有很大區別,前者是溫度緩慢下降,後者是溫度迅速下降。
「模擬退火」的原理也和金屬退火的原理近似:我們將熱力學的理論套用到統計學上,將搜尋空間內每一點想像成空氣內的分子;分子的能量,就是它本身的動能;而搜尋空間內的每一點,也像空氣分子一樣帶有「能量」,以表示該點對命題的合適程度。演算法先以搜尋空間內一個任意點作起始:每一步先選擇一個「鄰居」,然後再計算從現有位置到達「鄰居」的概率。
這個演算法已經很多人做過,可以優化BP神經網路初始權值。附件是解決TSP問題的matlab代碼,可供參考。看懂了就可以自己編程與bp代碼結合。