第二章 研究方法
2.3 鄰域演算法 (Neighborhood Algorithm, NA)
NA 的模型參數空間由 CEM 假設下的震源數與測站數之個數總和決定。每一 個參數 (fc 或是 t*) 都代表參數空間內的一個基底。以單一震源-測站對 (fc - t* pair) 舉例,即展開一個 2 維的參數空間。這個 2 維平面上的任一點都可能是這個震源-測站對的模型解。若使用格點搜尋法 (grid search),土法煉鋼地計算每個模型點與 資料之間的殘差值 (misfit),不僅整體計算速度緩慢,還會消耗大量資源。
為了解決此種計算效率不彰的難題,Sambrige (1999a,b) 提出一種優化的演算 法,利用隨機均勻分布在參數空間內的少數模型點,先計算其與資料的殘差值,
再利用兩兩模型點中垂線切割參數空間,將每個切割出來的區域 (voronoi cell) 內 的殘差值由已經取樣的模型點代表 (圖 2.7)。這樣就可以大略知道整個參數空間內 的殘差值變化。藉由分辨殘差值的大小,在殘差值小的區域給予更多的採樣點,
以減少無效率的計算。此種先求得參數空間大略殘差值分布 (misfit surface),再給 予不同數量採樣點的作法,便稱為鄰域演算法 (參閱附錄 A)。格點搜尋法依然可 以得到相似的結果,只是計算效率較差。
圖 2.7、 鄰域演算法示意圖。 (a)藍色點及紅色點為已採樣的模型點,參數空間被 切割為不同大小的區域 (voronoi cell)。灰色區域內的所有模型殘差值由紅點代表。
藉此勾勒出參數空間大略的殘差分布。 (b) 圖(a)中的灰色區域生成 7 個新模型,
並重新切割整個參數空間。由此找出最符合資料的模型解。 [修改自 Sambridge, 1999a]
NA 做為一個有效率的全域搜尋演算法 (圖 2.8),僅有 2 個控制參數: nr (每 次迭代較小殘差值的 nr 個區域) 以及 ns (每次迭代總共要新取樣 ns 個點)。每次迭 代生成新取樣點時,將新取樣點分布在殘差值較小的 nr 個區域,避免最佳解被局 限在區域最小值 (local minimum) 內。藉由 nr 與 ns 的互相搭配,即可有效率的在 廣大的參數空間內找出最符合資料的解。
本論文中,使用 nr = 100、ns = 500 與迭代次數 50 次。NA 的操作步驟如下:
(1) 在參數空間內隨機給予 1000 個初始模型,將參數空間切割成 1000 個區域。
計算初始模型與資料之間的殘差值。
(2) 在殘差值最小的 100 個區域內,平均分配 500 個新模型,即每個區域需要隨 機取樣 50 個新模型點。
(3) 將整個參數空間內重新切割成 1000+500×(目前迭代次數)個區域。
(4) 回到步驟 (2),直到結果收斂或是迭代次數結束。(圖 2.9)
圖 2.8、NA 迭代與殘差值的關係。此群組共有 4 個測站與 4 個震源,參數空間維 度為 8。在迭代 20 次後,殘差值基本上呈現穩定狀態,顯示 NA 的效率。為了確 保不同維度也可以達到收斂的情形,本論文將迭代次數定為 50 次。紅線為全區殘 差最小值,淺藍線則為每次迭代中模型的殘差最小值,若比目前全區最小值小,
則會取代成為全區最小值。綠線為每次迭代新產生模型的殘差值平均,若趨於一 定值,代表 ns 個點均生成在相似的位置,即收斂之意。
圖 2.9、NA 的收斂情形。第一次迭代時採用隨機均勻採樣。第二次迭代後,進行 NA 的計算流程,隨著迭代次數增加,模型解逐漸收斂在一個區域內。