• 沒有找到結果。

將 Quadric Error Metrics 加入面的重要性後的推導公式如下:

    

11

於所有畫格的數量是相對少數的。因此,如何找出符合需求的關鍵畫格,正是我們目前所 要解決的問題。

3.2.1 基因演算法

基因演算法(Genetic Algorithm)是最佳化工程計算常用的一種演算工具,基因演算法源自於 自然界中 "物競天擇,適者生存" 的特性,模擬生物間的競爭,倖存者得以繁衍下一代的 觀念,應用於最佳化工程之計算時,以隨機方式同時產生多組解,較佳的解將被留下運算,

如此多次疊代即可求出最佳解。

圖 2: 基因演算法流程圖

傳統之演算法往往由幾個起始點,依照一定的數學模式產生下一次疊代值,如此反覆計算 求得最佳解;而基因演算法以隨機方式產生許多的點,同時搜尋最佳解,因為在每一次疊 代過程皆是取相對最佳的點,因此只能找到最接近之最佳解。不過因為其他演算可能也只 找到局部最佳解而不能保證是真正的最佳解。所以基因演算法是相當不錯的最佳化運算工 具。

12

圖 3: 基因演算法流程 Pseudo Code

基因演算法是模仿生物進化遺傳的過程,因此基因演算法三個主要的運算子:複製 (Reproduction)、交配(Crossover)、突變(Mutation),應用此基本觀念即可完成演算法之 運算。在下面的章節中,會個別介紹每個步驟詳細的實作方法,包括編碼、交配、突變與 評估。

3.2.2 轉化成最佳化問題

在本研究中,我們將關鍵畫格的提取描述成一個數學上的最佳化問題,並且使用基因演算 法來尋找最佳解。希望能從動態網格所有畫格中,挑出有意義的關鍵畫格。下面的公式為 整個最佳化問題的目標函數:

 

T

  

T

  

T

mberRatio KeyframeNu

1 Error

Fitness 1

 

(12)

上述的公式中,考慮了兩個重要的項目,其中一項為使用關鍵畫格來重構其他非關鍵畫格 後的誤差 (Error)。因為根據觀察,若關鍵畫格能重構出來的誤差值較小的整段動作,則表 示這些關鍵畫格能有意義的表達整段動作。除了誤差值之外,另一個項目為提取出來關鍵 畫格的數量比例,我們希望提取出來的關鍵畫格數量越少越好。因此,若能在誤差與數量 之間取得一個平均,求得目標函數的解,便可以找出一群最具代表性的關鍵畫格。在上面 的目標函數,代表的意義是適應力,因此在最佳化的過程中,要找出的是擁有最大適應力 的解。

13

3.2.3 基因編碼

基因族群由一群基因所組成,每個世代的族群大小是相同的。每個基因代表著本問題的一 組解答,根據此解答的好壞,計算出該基因的適應力,解答較佳的基因適應力較佳。接著 經由 "物競天擇,適者生存" 的規則,逐漸淘汰適應力較低者,也就是解答較差的基因;

另一方面,根據交叉配對與突變的規則,慢慢演化出適應力較佳者,也就是解答較佳的基 因。在不斷地進行疊代後,整體基因的適應力會逐步提升,最後逼近最佳的解答,甚至達 到最佳的解答。

圖 4: 基因編碼示意圖

我們將一組解答使用二元字串來表示,字元的個數為原始總畫格數,每個字元便代表著一 個畫格,由左至右依序代表著第一個畫格至最後一個畫格。若該畫格為關鍵畫格,代表的 字元為 1;若該畫為非關鍵畫格,則代表的字元為 0。

圖 5: 基因族群示意圖

每個基因的表示方式就如同上述的二元字串,使用二元字串來編碼基因,是最簡單也最常 見的編碼方式。

3.2.4 評估標準

在基因族群中的每組基因都代表著一組解,該解的好壞,我們使用上述的適應力 (Fitness)

14

A Frame Deformation A B Distance A B

Frame

 

(13)

15

3.2.5 初始化基因族群

初始化基因族群在整個基因演算法中並非最重要的部份,但如果有著良好的初始化,能大 大的加速逼近最佳解的速度,甚至更進一步的逼近最佳解。但是,若使用一般的逼近法來 解出一些區域最佳解,然後使用這些解來當成初始的基因族群,卻會造成初始化的耗費時 間過高,反而沒辦法以最高速逼近最佳解。正如上所述,因此我們提出一個適合本問題的 特殊初始化方法,可以兼顧品質與速度。整個問題的目標在於關鍵畫格的提取,因此我們 假設,若每間隔一個畫格便提取一個關鍵畫格,能得到一組比經由亂數產生的解還好許多。

因為動畫是連續的,所以相鄰的兩個畫格僅會有些許的差異,若同時被取出來當成關鍵畫 格,通常不是最佳的解。

圖 6: 特殊初始化基因示意圖

在整個初始的基因族群中,百分之八十的基因採用最普遍使用的亂數方法產生,而剩下的 百分之二十,使用上述的基因來填補。經由實驗發現,這種初始化的方式能有效增加逼近 速度,因為能降低相鄰畫格皆被選為關鍵畫格的機率。初始化基因族群的示意圖如下:

圖 7: 初始化基因族群示意圖

3.2.6 複製、交叉配對與突變

在初始化基因族群完成後,基因演算法採用三種運算子來進化至下一個世代。這三種運算 子分別是複製、交叉配對與突變。這種的演化方式與自然界的進化很像,如複製就像是無 性生殖一樣,將上一代的基因完成複製下來;交叉配對便是我們人類交配後所產下的下一

16

代,子代會混合母代的基因;最後的突變也就如同我們自然界的畸形子代一樣,基因會因 為受到環境的影響造成某些地方產生變異的情況。

圖 8:基因複製示意圖

而這三種方式除了複製是直接完整複製基因外,其於兩種運算子的實現方法依問題本身的 定義與基因的編碼方式而會有所不同。本研究所採用的交叉配對為單段交換方式,也就是 一對母代的基因在使用亂數選擇好某一個區段後,便將該區段的基因交叉配對完成新子代 的產生。

圖 9: 基因交叉配對示意圖

在突變的方法上,我們提出了兩種突變法,根據我們的實驗結果,交互使用這兩種突變方 法能達到最佳的結果。第一種突變的方法為單點突變,首先採用亂數選出突變的位置,接 著將該處的字元作反向的變化,也就是 0 變成 1 與 1 變成 0。這種突變方式有著將關鍵畫 格增加或刪除的性質,能調整該組解中關鍵畫格的數量。

圖 10: 第一種基因突變示意圖

而第二種突變的方式,首先亂數的選擇某一個是 1 的字元,接著將該字元往左或往右移動,

17

主要目的在於微調該關鍵畫格的選擇,因為也許他的左邊或右邊會有更適合的畫格。移動 方向的決定採用亂數法,但為了能更快逼近最佳解,我們設定有 3%的機率會經由計算來決 定移動方向,強迫直接選擇最佳的方向。這種突變方法有著調整關鍵畫格位置的性質,能 夠增加最佳解出現的機率,又不會過度介入整個演化的過程。

圖 11: 第二種基因突變示意圖

在定義完成這三種運算子之後,我們便可以使用這些運算子來產生下一世代的基因族群,

持續的進行演化,最後逼近最佳解。

3.2.7 世代演化

演化時要繁殖的母代配對會根據適應力的大小來選出,適應力大的基因越容易被選出來繁 殖,此種選擇的方式被稱為「天擇原理」。接著使用上述的三種運算子來不斷的繁殖與演化,

讓整個演化符合 "物競天擇,適者生存" 的規則。在每個世代演化完成後,我們會根據適 應力挑出最好的基因,也就是該次疊代最佳的解。為了使整個基因演算法進行更流暢,每 世代所挑出的適應力最強基因,會直接複製至下一個世代,這樣便能保證下一個世代適應 力最強的基因不會差於上一個世代,讓整個演化能一直逼近最佳解而不會偏離。在演化開 始前,要先設定交叉配對率(Crossover Rate)與突變率(Mutation Rate),通常突變率是很低的。

如此一代一代的演化下去,將產生適應力值很高的基因,此基因便是我們需要的解。

3.2.8 參數設定與終止條件

在基因演算法進行最佳化問題求解的過程中,需要設定下面的幾個參數。

 族群大小 (Population Size)

18

族群大小將影響整個系統的表現和最佳化的效能。族群大小較小的系統,由於無法提供足 夠關於問題空間的資訊,因而演進結果通常都不佳;反之,族群大小較大者則表現會較好,

且可以防止結果過早收斂至區域最佳解。但族群大小若過大,則將導致收斂速度降慢到不 可接受的地步。

 交配率 (Crossover Rate)

交配率即交配運算元被使用的頻率。交配率若愈大,新的結構將愈快出現於群體中;但交 配率若太高時,則會使得群體中表現優異者在選取步驟發揮前就被改變了;過低的交配率 則會令系統的腳步裹足不前。一般而言交配率設在小於且接近於 1。

 突變率 (Mutation Rate)

突變運算元是為了避免遺失任何重要資訊而特地用來增加群體的變動性。它可增加族群的 變化;但太高的突變率將使整個搜尋過程完全隨機化。因此,一般均將突變率設成很小的 值。為確保實驗的一致性,本研究的實驗結果與數據皆採用固定的參數。族群大小設定為 1000,交配率為 0.95 (95%),突變率為 0.05 (5%)。

在演化終止條件的設定方面,通常是根據題目的需求來設定,例如可設定最佳基因達成預 定的評估值時停止,但是此法不能預估訓練時間,故最常見的做法是設定最大演化代數,

以確保基因演算法在合理的時間內產生一組最佳解。而另一種方法是透過統計資訊,觀察 族群演化的收斂狀況,若族群演化趨於穩定,也就是最佳解的評估值變化在一段連續時間

以確保基因演算法在合理的時間內產生一組最佳解。而另一種方法是透過統計資訊,觀察 族群演化的收斂狀況,若族群演化趨於穩定,也就是最佳解的評估值變化在一段連續時間

相關文件