• 沒有找到結果。

第 2 章 基因區域搜尋法

2.1 最佳化演算法簡介

一般而言,最佳化演算法可以被視為求某個函數的極大值(或極 小值),或者可將這些演算法當成搜尋技術,搜尋出較符合我們要求 的答案。所以必須將光學元件上所希望達到的目的,適當轉換成函數 的形式,再利用這些演算法求得此函數的極大值(或極小值)。舉例來 說,如果將所求的函數定義為SNR(Signal Noise Ratio,訊噪比),則 將是求此 SNR 的最大值;如果將函數定義為誤差函數,常用的函數 形式為SSE(Sum Square Error,平方誤差和),則希望誤差越小越好,

所以是求最小值。本章的第一節將介紹一些常使用的演算法,接著在 第二與第三節將仔細說明本文所使用的共軛梯度法與基因演算法。

2.1.1 區域型最佳化演算法

1. 相 位 恢 復 迭 代 法 (Iterative Fourier-Transform algorithms, IFT):

此演算法在 1972 年由 Gerchberg 與 Saxton 首先提出,從輸出入 平面測量兩個光場的照度數值為依據,用來恢復其輸出平面上光場相 位分佈的一種演算法,通常稱為相位恢復迭代法,也稱為G-S 演算法 (G-S algorithms)。該演算法首先選擇初始相位分佈,然後進行富利葉 轉換,再將輸出平面上測量得到的振幅分佈代替計算值,然後再進行

傅力葉轉換,最後於輸入平面上用實際測量值代替計算值,如此反覆 迭代直到達到所預期的目標。在G-S 演算法的計算中是利用快速傅力 葉轉換(Fast Fourier Transform, FFT),所花費的計算時間相當短,但 也經常出現迭代停滯的現象。1989 年 Wyrowski 在 G-S 演算法上發展 出一套稱為高效率量化演算法(efficient quantization algorithms)減少 了迭代停滯的問題。

2. Y-G 演算法(Yan-Gu algorithms):

此演算法是在 1980 年由中國科學院北京物理所的楊國楨(G. Z.

Yang)和顧本源(B. Y. Gu)所提出,所以稱為 Y-G 演算法6。Y-G 法是改 良自 G-S 演算法,所謂的 Y-G 法是在 G-S 法內引入了一非對角元素 矩陣項,以致於整個系統的迭代有內外兩個循環,雖然費時較久,卻 使其適合任意線性變換系統、能量有損耗系統、非么正變換系統,更 具有抗噪訊、易推廣到多波長、多平面系統,以及對初值設定不敏感 等優點。

3. 共軛梯度法(Conjugate Gradient Method):

共軛梯度法是解決非線性規劃問題 7常使用的一種演算法,也是 目前處理無約束最佳化問題(unconstrained optimization problem)中最

置上的梯度(gradient),則我們知道往梯度方向的反方向,是最快的 下降方向,如此,令Xk+1 =Xk − ∇s F X( k),取一個適當的 s 值(稱為步 距),經過多次迭代之後使得F X( k)為 0,則滿足收斂條件。此演算 法僅需要適當的定義出所希望最小化的函數,而此演算法與所求解的 問題的形式無關,且具有快速收斂的特性,所以被大量運用在各種規 劃問題上,包含合金材料的選擇、光學系統的最佳化、排程問題…等,

本文將在本章的第二節詳細介紹此演算法。

4. 實驗設計法(Design of Experiment):

實驗設計法是 1960 年代初期由日本學者田口玄一(Taguchi)所提 出,又稱為田口法。此一方法原本是應用於品質工程的領域中,但近 年來已經陸續應用於許多非品質工程的領域上,例如利用田口法分析 各個參數對於汽車操控性能的影響,藉由直交表(Orthogonal Array, OA)的分析,找出各個參數的影響性,減少實驗(分析)的次數,如此 快速的求出各個參數的最佳化組合。

2.1.2 全域型最佳化演算法

1. 模擬退火法8 (Simulated Annealing, SA):

在冶金學上,如果將金屬緩慢冷卻(後續退火),其金屬結構能自 然的求出最小能量狀態;若將金屬急速冷卻,則無法獲得最小的能 態。而在長晶的過程也是如此,如果急速降溫,則無法獲得好的結晶,

但如果一系列的緩慢退火與淬火過程,則可獲得系統最低能量。科學 家根據仿效、模擬此一物理現象,發展出模擬退火法。

此一演算法在剛開始時,先提升至某一個高溫狀態,此時溫度為

TX 表示目前的狀態,E X( )是為能量函數,試著改變X,可以得到 一個新的能量,如果新的狀態對應的能量比原先來得低,則接受此一 狀態,反之,如果能量比原先來的高(此時能量差∆E為正值),則以 波茲蔓(Boltzmann)分佈機率

1

k k

E E

e kT

+

來決定是否要接受改變成為此一 狀態(k 為波茲蔓常數,T 為溫度),如此不斷迭代直到能量變化不大 時,開始適當的降低一些溫度,並再作前述的迭代,最後當溫度降至 很低時,會趨於收斂,當屋度小於所設定的結束溫度時,演算結束。

此一演算法與下坡搜尋法類似,但加入了隨機的概念,因此可以 得到全域最佳解,而在溫度很低時 T~0 時,改變成為能量較高狀態的 機率非常低(

1

~ 0

k k

E E

e kT

+

),可確保其結果會收斂。此一演算法的流程 圖如圖 2-1:

圖 2-1 模擬退火法流程圖 2. 基因演算法(Genetic Algorithm, GA):

基因演算法 2是在 1975 首先由密西根大學的 John Holland 教授 所提出,是基於達爾文進化論所發展出的一套演算法,此演算法使用 到了「挑選」(Selection)、「交配」(Crossover)、「突變」(Mutation) 等機制,用來模擬自然界演化的現象,由於早年電腦速度較慢,使得 基因演算法的發展受到了限制,近年來,由於電腦科技的進步,使得

基因演算法成為熱烈討論的主題,廣泛的應用於各種問題上,如人工 智慧、決策問題、最佳化問題…等,在稍後的第三節裡頭,將有詳細 的介紹。

2.2 共軛梯度法 2.2.1 最速下降法

最速下降法是無約束多變量函數最小化演算法,將所求的問題的 解,以一個向量X =(x1,x2,x3,x4,...,xn)表示,而此演算法所要最小化的 函數F =F X( )為一個純量函數,其原理如下:

Xk為目前所在的位置,F X( k)為該位置上的梯度(gradient),

d = −∇F X( )為移動的方向,由梯度的幾何上的概念可知,此移動方 向是下降最快速的方向,因此令Xk+1= Xk − ∇s F X( k),取一個很小的 s 值(稱為步距),經過多次迭代之後使得F X( k)為 0,則滿足收斂條 件。此做法稱為最速下降法。其演算法的流程圖如圖 2-2:

目 前 的 位 置

計 算 出 梯 度

梯 度 是 否 為 0

演 算 結 束

計 算 出 新 的 位 置

圖 2-2 最速下降法流程圖 2.2.2 共軛梯度法

共軛梯度法9(Conjugate gradient method)與最速下降法類似,

在最速下降法中,每次移動的步距 s 太小,導致收斂的速度過慢。因 此在選擇步距時,希望使得F X( k+1)=F X( k− ∇s F X( k))最小。故考慮取 一

s

值使得

F

有極小值,因此對

s

取導數為 0,可得

( ( )) 1

[ ( )] ( ) 0

k k

k k

dF X s F X

F X F X

ds

− ∇ +

= − ∇ i = ………(2.1)

由此式可知,−∇F X( k)為第 k 次迭代的前進方向,而−∇F X( k+1)為 下一次的前進方向,兩次前進方向內積為 0,代表著這逐次搜尋的方 向正交,如圖 2-3(b)所示:

0 20 40 60 80 100

12

2 K

K

F β F

+

= ………(2.3)

而移動的方法就變成Xk+1= Xk +sdk,當搜尋方向決定了之後,接 著就必須要決定移動的步距 s,使得F X sd( + )最小。此時所要求的問 題就變成了單變數最小化的問題,在此使用黃金分割比例搜尋法,如 下圖所示:

0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4 4 . 5 5

- 5 - 4 - 3 - 2 - 1 0 1 2 3 4 5

圖 2-4 單變數函數最小化,在[Xa,Xb]求一極小值 在圖 2-4 中,[Xa,Xb]範圍內有一個極小值,任意選擇兩點,x1

x2,三等分此區間。假設xa < <x1 x2 <xb, 若 f x( )1 < f x( )2 則最小值需落於[Xa,X2]內 若 f x( )1 > f x( )2 則最小值需落於[X1,Xb]內

任一最小值座落的範圍需小於區間[Xa,Xb]。區間逐次縮減的過程 可以連續重覆直到發現最小值座落之可接受的小區間。至於如何取x1

x2,數學家提供一種黃金分割比例,如下:

1( 1 5) 0.61803

g=2 − + ≈ ………(2.4)

1 a ( b a)(1 )

x =x + x x g ………(2.5)

2 a

x =x +rg………(2.6) 黃 金 分 割 比 例 與 有 名 的 Fibonacci 數 列 有 關 , 這 個 級 數 是 1,1,2,3,5,8,13,…,由下式產生

1 1

k k k

N + =N +N N1=N2 =1………(2.7)

Nk是數列的第 k 項,當 k 趨近於無窮大時,Nk/Nk+1趨近於黃金分割 比例。

給定最大移動步距smax,利用黃金分割比例搜尋法在[0,smax]範圍 內求得移動步距 s 之後,可以利用(2.2)式求得新的位置,如此經過 多次迭代之後使得為梯度的模norm F X(∇ ( ))= ∇F X( ) 變為很小的值,滿 足收斂條件。此做法是由 Fletcher 及 Reeves 所提出,稱為 F-R 共軛 梯度法(Fletcher-Reeves Conjugate Gradient Method)。其演算法 流程如圖 2-5:

一開始令

演算法(Simple Genetic Algorithm, SGA),第二子小節介紹基因演 算法的基本理論—輪廓理論,第三子小節詳細介紹基因演算法的運算 機制。以下列出基因演算法所使用到的關鍵術語:

1. 族 群 (Population) : 一 個 族 群 中 有 許 多 獨 立 的 個 體 (Individual),每一個獨立的個體就代表一個解。

2. 染色體(Chromosome):與個體同意,一個染色體是由一個或多個 基因(Gene)構成,又稱為字串(String)。

3. 基因:代表運算的基本單位,對於二元編碼法來說,一個位元(bit) 就代表一個基因,染色體的長度(Chromosome length)就是指該染 色體具有的基因數目。

4. 適應度函數(Fitness function):用來評估一個染色體的適應度,

給定一個數值(Fitness value)大小代表該染色體的好壞,該值必 須要是一個正數(Positive value)。

5. 選擇運算子(Selection operator):挑選出適應度較大的染色體,

以進行交配的動作。

6. 交配運算子(Crossover operator):將兩個染色體交換彼此的基 因,產生新的染色體。

2.3.1 簡易基因演算法

簡易基因演算法(Simple Genetic Algorithm,SGA)使用:1.二 元 化 編 碼 的 染 色 體 (Binary-coded chromosome)2. 單 切 點 交 配 法 (Single cut-point crossover) 3.輪盤式挑選法(Roulette wheel selection)4.使用標準二元突變運算子(Standard binary mutation operator,意指「反相法」,bit inversion method) 。以下是基本 的架構圖:

11111 11010

00111

11111 11010

10110

11111 11010

00111

11111 11010

圖 2-6 簡易基因演算法架構圖

以下用一個簡單的例子說明簡易基因演算法迭代一次的過程,考 慮有族群內有 4 個獨立的個體(染色體),每個染色體具有 5 個基因,

而每個染色體的適應度以及被挑選的機率如表 2-1 所示:

total i

i

55.8678%

個基因(位元),突變的機率是相等的(突變的機率必須是一個很小的 值,一般而言將會設定在 0.01~0.1 之間),假設突變的機率是pm, 計算的方式就是檢測每一個位元,利用隨機抽取一個 0~1 之間的隨機 亂數(見附錄 B),比較這個亂數是否小於pm,如果小於pm,將該位 元反轉(bit inversion),意即是將 1 變為 0,而將 0 變為 1,也就是 布林(Boolean)代數中的 Not operator,如圖 2-9 所示,此作法稱為 反相法。

0.77 0.92 0.13 0.21 0.67

隨機抽取的亂數 0.77

2.3.2 輪廓理論

基因演算法創始者 John Holland 於 1992 年所提出輪廓理論 (Schemata theorem),此一理論成功的描述了基因演算法之所以會收 斂的原因,奠定了數學上的基礎。為了降低討論基因演算法理論的複 雜性,在此僅考慮簡易基因演算法。在此,首先介紹輪廓(Schemata) 的概念:如果研究基因演算法所產生的字串,會發現族群中常常出現 某些特定的基因字串。高適應度的染色體,通常會有許多共同的基因 字串結構。例如族群中高適應度的個體時常出現以 10 為首,以 010 為尾的字串,或是時常出現中間兩位為 10 的字串,將這些字串以 10*****010 和****10****表示,這些星號表示「外卡」(wild card,

美國職棒大聯盟的術語)元素,外卡的元素的值是不固定的。如此,

便可以利用輪廓(或稱為「相似樣本」,Similarity template,符號

便可以利用輪廓(或稱為「相似樣本」,Similarity template,符號

相關文件