• 沒有找到結果。

1.4 全文架構

本篇論文共分為五個章節,以下為各章的內容概述:

【第一章】緒論

說明本論文的研究背景、動機、目的及本文架構。

【第二章】基礎理論及技術背景介紹

簡介所使用之演算法及本篇論文使用的理論基礎以及技術背景。

【第三章】Memetic Algorithm 之硬體電路實現

介紹所提出的向量量化器電路設計架構,並提出相關的討論與說明。

【第四章】實驗數據與效能比較

包含了系統環境的說明、相關實驗數據分析以及軟硬體效能比較。

【第五章】結論

對於所提出之向量量化器架構以及實驗的結果做一個總結,及未來發展方向。

7

其中我們以一個成本函數來計算以y 取代i x 後,資料量降低所造成的平均失真值 (average distortion)。公式如下:

=

2.2 Memetic Algorithm 名詞介紹及運算程序

MA 演算法是一種混合式演算法,其中包含了基因演算法與一個局部最佳化(local

第二章 基礎理論及技術背景介紹

8

由 w 維所構成的的向量。

2. 染色體(Chromosome):

由多個遺傳因子所組成,便是所謂的染色體;在不同應用上,染色體會由有不同的 編碼方式組成,於本論文中相當於向量量化器中的碼簿。

3. 族群(Population):

由多個染色體所組成的集合,便稱之為族群。在基因演算法中,族群所代表的意義 為針對問題的解,經由演化的程序找出一個最佳的群;但是基因演算法並無法保證找到 的每個染色體一定是最好的,只能說找到的解是接近於最佳解的近似值。

4. 世代(Generations):

完成一次的演化程序,稱之為一個世代,而世代次數代表著搜尋的次數,世代的次 數的多寡對於找到解的好壞品質會有影響。

2.2.2 基因演算法簡易分類

基因演算法在分類上是屬於搜尋演算法(search techniques)的範疇,它是採用隨機搜 尋方式,就是在搜尋的步驟中有隨機的因素,因此不會被侷限在區域解;基因演算法一 般來說,可以分為循序式(sequential)以及平行式(parallel),循序式基因演算法和平行式 基因演算法的不同點在於,是單純針對一個族群或同時對多個族群進行演化,以找出問

9

題的最佳解;而循序式的基因演算法又可以分兩種架構:generational GAs、steady-state GAs,此二種方式是相似的,但是在應用上,其處理的速度有著極大差異,以下詳細說 明:

(1) Generational Genetic Algorithms:

Generational GAs 在演化過程中具有世代觀念,在此世代是指母代進行演化和子代 的產生;當世代交替時,新產生的子代族群會完全取代母代族群,因此即使舊世代存在 良好基因也將被取代掉,這種行為增加了收斂的困難,而使得處理速度變慢。

(2) Steady-State Genetic Algorithms;

而在 steady-state GAs 中,並不存在世代的觀念,取而代之的是親子代共存的現象;

親代與子代共同競爭,結果由優秀的個體存活淘汰最差的基因,這會加快找出最佳基因 的速度,也讓演算法收斂可以更快達成,因而收斂速度上較 generational GAs 快。

2.2.3 Memetic Algorithm 運算程序

在基因演算法中,我們令S(k)和D(k)分別表示,為經過 k 次演化後所得到 P 組基 因序列的集合與目前最小失真值 D ;且令S 表示在演化過程中目前最佳的基因序列。* 在初始的步驟中,首先使D(0)=∞且S 為空字串 (Null),並隨機地從訓練向量中選取數* 筆向量做為S(0)中的碼字。

11

一次再生,只會有一個基因序列被選擇,而被選擇到的基因序列將會被複製出一份 一模一樣的基因序列,這個新產生出來的基因序列將會進行交配和突變的程序。基因演 算法中,再生的程序會執行 P 次,產生 P 個新的再生基因序列。

交配(Crossover):在每一個再生的基因序列 r,{y1,…,yN}r中,以一個機率值 Pc

為判斷是否進行單點交配。並且隨機地從整個族群中選擇出另一個母代序列 r

{z1,…,zN}r’。接著產生一個在 1 到 N 之間的亂數 n,以此亂數做為交配點,在這兩個序 列位置 n 的地方將其分割為兩部分,並相互交換{yn+1 ,..., yN}和{zn+1,...,zN}的部分,產 生新的基因序列{y1 ,...,yn,zn+1,...,zN}與{z1,...,zn,yn+1,...,yN},完成交配程序,如圖 2.2 所示。

圖 2.2 單點交配

y1 y2 … … … yn+1 yN 母代序列 r

z1 z2 … … … zn+1zN 母代序列 r

y1 y2 … … … zn+1zN 子代序列 1

子代序列 2

z1 z2 … … … yn+1 yN

第二章 基礎理論及技術背景介紹

12

突變(Mutation):在突變步驟中,基因序列中的每個碼字都會根據一個機率值 Pm 決定突變與否。假設目前有一個即將進行突變步驟的基因序列 r={y1,…,yN}r,我們會隨 機地從 N 個碼字中選擇一個碼字 y,並且隨機從碼字 y 中的 w 個元素(element)選擇一個 出來;接著產生一個亂數 b,將被選到元素的加上或減掉這個亂數值,也就是+b 或-b 來 達到突變的目的,如圖 2.3 所示。

圖 2.3 突變運算

由於我們將 MA 演算法應用在 VQ 的設計上,因此 GA 演化程序中由 P 組基因序列 構成的族群 S ,事實上為 VQ 中 P 組碼簿的集合,其中的每組碼簿是由N個碼字組成。

在 MA 演算法中,上述再生、交配、突變的 3 個步驟為基因演算法的演化程序,完成所 得到的 P 組碼簿,則代表基因演算法的搜尋結果。接下來,將對 GA 演算法演化後所得 到的 P 組結果,進行局部最佳化步驟。

y1 y2 … … … yn+1yN 原始基因序列 r

i1 i2 … … … … … iw 碼字 yi

隨機選取碼字 yi

突變後碼字 i1 i2 it±b … … … iw

隨機選取元素 it 亂數 b

13

局部最佳化(Local refinement):針對 VQ 的應用,我們採用 C-means 演算法做為在 MA 演算法中的局部最佳化步驟;其中在突變程序完成後,族群中的每一個基因序列 r,

會做為 C-means 演算法的初始碼簿進行訓練。C-means 演算法的輸出,為碼簿 r 在經過 局部微調後訓練出的結果。經過局部最佳化步驟後的 P 組基因序列會成為S(k),而每一 個在S(k)中的基因序列所計算出的平均失真值,會被用來更新D(k)

在 MA 演算法中,演化會持續進行直到D(k)數列收斂為止。在實際上,透過持續 觀察D(k)的變化,我們以連續的 L 次演化產生的D(k)皆相同做為收斂條件,換言之 D(k)

= D(k−1) = … = D(k −L+1),則 MA 演算法停止。經過 MA 演算法收斂後得到的目前最 佳序列 S*,即是我們所追求之最佳碼簿。

我們把由上述步驟所構成的 MA 演算法以 MA( I )表示 。如圖 2.4 所示,為 MA( I ) 演算法流程圖。然而要在硬體上實現 MA( I )演算法電路是有困難的。首先,在 MA( I ) 演算法中,需要使用兩塊族群記憶體,分別用來儲存母代族群基因序列與再生之後的基 因序列;第二點,在執行再生程序時所使用的輪盤法則,也會成為在硬體實現上的瓶頸;

除了上述兩點困難之外,交配、突變與 C-means 程序也必須對 P 組再生後的基因序列進 行運算,相對的在實現硬體電路設計的複雜度將會非常高。因此我們將提出一個新的 MA 演算法架構來解決這些問題,為了有所區分將以 MA( II )表示。

第二章 基礎理論及技術背景介紹

14

圖 2.4 MA( I )演算法流程圖

15

2.3 FPGA 系統設計

FPGA 是在 1984 年由 Xilinx 公司所發明,從簡單的膠合邏輯 (Glue logic) 晶片,

演變為可取代客制的特定應用積體電路 (ASIC) 與處理器,適用於各種訊號處理與控制 的應用。最近幾年來,積體電路(IC)產品的發展速度愈來愈快,功能也越來越趨複雜化。

於是,由於 FPGA 的完全可程式化性質,我們可以透過預先建立的邏輯區塊與可程式化 路由資源,不需要花費如使用 ASIC 般大量的時間金錢,即可設定這些晶片以建置客制 化硬體功能,來進行快速的產品研發;當使用者重新編譯不同的電路設定時,可立刻擁 有不同的特性,能快速地在 FPGA 上進行測試。除此之外,FPGA 在系統的開發上也提 供了軟體與硬體共同設計的方式,讓使用者能夠更方便的達成系統化的 IC 設計,具有 開發時間短及系統容易修改的優點。

Altera 公司根據不同使用者的需求,開發出許多不同系列的 FPGA 開發板,本篇論 文是在 NIOS development kit 中的 Stratix EP2S60 系統開發板上實現我們提出的 MA( II ) 演算法硬體架構。在 NIOS 系統中提供了一套專門給 NIOS 處理器使用的匯流排(Avalon Bus),使用者設計出的電路在 NIOS 系統中做為一客製化電路(Custom User Logic),透過 此匯流排上的各種訊號線,使用者的電路可以和整個系統相互傳遞資料。除此之外,開 發板上也提供 Flash memory、SDRAM、Ethernet controller 與 I/O 設備等等,供使用者使 用。整個系統的軟硬體設計流程,如圖 2.5 所示

第二章 基礎理論及技術背景介紹

16

圖 2.5 系統設計流程圖[11]

NIOS 系統擁有下列優點:

1. Altera 公司提供使用者一個視窗介面的開發工具:NIOSⅡ IDE。設計者在 NIOS II IDE 介面上撰寫程式碼,提供編譯及除錯的功能並可以透過提供的介面輸入 指令與觀看程式執行結果。此程式除了支援 C 語言的函式庫之外,更進一步的 提供 HAL(hardware abstraction layer)函式庫。其中 HAL 函式庫提供設計者呼叫 系統相關裝置的 API,如圖 2.6;設計者可以撰寫 C 語言程式並透過 HAL API 呼叫來驅動特定的裝置運作。

17

圖 2.6 HAL API[11]

2. 提供了 Compact Flash 卡(以下簡稱 CF 卡)存取功能,讓設計者可以將資料置於 CF 卡中,並透過 HAL API 讓設計者進行讀與寫的動作。

3. 提供 DMA(direct memory access)機制讓設計者可加速資料在記憶體與系統周邊 元件的傳輸速度且不佔用 CPU 資源。

4. 提供 lwIP、NicheStack 等基本的網路功能,除了符合嵌入式系統最基本的簡單、

快速、不佔據過多系統資源之外,也讓設計者更容易修改或增刪想要的功能。

5. 設計者依照自己的需求增加或修改想要的電路功能,只需要簡單的重新 build 系 統並將之後燒錄至開發板即可。

19

中適應值最差的母代序列,並以此子代序列取代之。

特別要注意的是,在本論文中是以向量量化器的設計做為應用,所以實際上的一個 基因序列就是一組碼簿,因此序列檢索(string retrieval)的動作將會花費很多的記憶體存 取時間(Memory Access Time)。必然地,對 r1和 r2的檢索對整體執行效能會造成某種程 度的時間耗損。為了降低記憶體存取時間,我們在 MA( II )演算法中使用了一個替代方 案,將上一個世代挑選出的 r1當作新的 r2,然後再從 S 中隨機選出新的 r1;比起每次都 去讀取新的 r1、r2的方法,可以省掉約一半的記憶體存取時間[14]。

當選擇(Selection)、交配(Crossover)、突變(Mutation)、局部改善(Local refinement) 和生存(Survival)與取代(Replacement)等演化程序不斷進行時,族群整體的適應性將會提 升,使得愈晚產生的子代序列的存活率(survival rate)將會愈來愈低,一直演化到某個世 代,新子代的存活率將降低到零。此時,將會停止演化而使演算法終止。

當選擇(Selection)、交配(Crossover)、突變(Mutation)、局部改善(Local refinement) 和生存(Survival)與取代(Replacement)等演化程序不斷進行時,族群整體的適應性將會提 升,使得愈晚產生的子代序列的存活率(survival rate)將會愈來愈低,一直演化到某個世 代,新子代的存活率將降低到零。此時,將會停止演化而使演算法終止。

相關文件