• 沒有找到結果。

中 華 大 學 博 士 論 文

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學 博 士 論 文"

Copied!
64
0
0

加載中.... (立即查看全文)

全文

(1)

i

中 華 大 學 博 士 論 文

題目:以 CMAC 為基礎之高速字串存在屬性過 濾器設計

A CMAC-Based High-Speed Filter Design for Existence Attribute of String Patterns

系 所 別:科 技 管 理 研 究 所 學號姓名: D09503002

蔡 翠 芳 指導教授:馬 恆 博 士

中華民國九十八年八月

(2)

ii

摘 要

本論文提出以CMAC 為基礎的機制用來快速判定某一類別字串是否存在於 一個大型的資料集內,此類型的問題隨著高速網際網路的盛行引起愈來愈多的 注意。所提機制的目標有二:(1)無論資料集的大小,在即時處理某一字串必須 要迅速且一致,與(2)在線上需求的記憶體空間必須符合經濟性。前者顯得重要 因為流通在網路上的資料量正以劇烈的方式成長,而後者則在實作於行動手持 設備時非常有用。本論文針對兩個應用問題分別在不同平台,即 PC 與 PDA,

進行多項實驗用來評估所提機制的表現,實驗結果對上述兩點目標均呈現正面 的效果。

關鍵詞:字串比對、存在屬性、CMAC、神經網路

(3)

iii

Abstract

This dissertation proposes a CMAC-based mechanism for efficiently determining whether a string pattern exists in a large string dataset. This category of problem is drawing increasing attentions as high-speed Internet prevails. The proposed mechanism seeks to achieve the following goals: (1) processing a query string must be efficient as well as uniform in run time regardless of the size of the dataset, and (2) on-line memory requirement must be economic. The former is important as the amount of data is growing in a dramatic fashion, while the latter is useful for implementations on hand-held devices. Several experiments were conducted for two application problems on different platforms, i.e., PC and PDA, for evaluating the proposed mechanism, and the results show favorable performances for the indicated goals.

Keywords: String Matching, Existence Attribute, CMAC, Neural Network

(4)

iv

謝 辭

在博士班這幾年,過的非常的充實,學了很多的專業知識,本論文能夠順 利完成,首先誠摯的感謝我的指導教授馬恆 博士這幾年來對我的諄諄教誨及研 究上的指導。不時的討論並指點我正確的方向,使我在這些年中獲益匪淺。老 師對學問的嚴謹更是我學習的典範。

能順利完成本篇論文,感謝蔡銘箴博士、李際偉博士、李友錚博士、許良 僑博士、以及馬恆博士等口試委員於百忙之中撥空指導,提供諸多寶貴意見,

使得本論文得以更加完善,在此一併致謝。研究期間,亦感謝學長姊、學弟妹 以及同窗好友的關懷。

最後要感謝我的家人與朋友的支持,感激之情非筆墨能形容。最後僅以本 論文獻給曾經關心、照顧我的師長、朋友以及家人。

蔡翠芳 謹識於中華科管所 中華民國98 年 7 月 15 日

(5)

v

目 次

摘 要... i

謝 辭... iv

目 次... v

表 次... vii

圖 次... viii

第一章 緒論... 1

第一節 背景與動機... 1

第二節 問題描述... 3

第三節 研究目標... 5

第四節 論文架構... 8

第二章 文獻探討... 9

第一節 傳統字串比對技術... 9

第二節 網際網路入侵偵測系統... 14

第三節 CMAC 的應用... 17

第三章 字串存在屬性過濾器設計... 23

第一節 字串輸入與雜湊函數... 24

第二節 目標值與接受窗的建立... 29

第三節 誤差回授與權重值修正... 32

第四節 線上即時回想機制... 33

第四章 實驗結果與分析... 36

第一節 應用問題描述... 36

第二節 軟硬體設備與模擬應用問題字串承載量... 37

第三節 字串承載量映射過程... 39

第四節 字串即時回想能力... 41

(6)

vi

第五節 雙層式架構實作... 45 第五章 結論與未來研究... 48 參考文獻... 51

(7)

vii

表 次

表1 不同字串映射位置範例... 26

表2 CASE I 與 CASE II 在 r=1~4 訓練過程的詳細資料... 41

表3 CASE I 與 CASE II 在 r=1~4 測試結果... 42

表4 CASE I 與 CASE II 在 r=5~8 測試結果... 44

表5 本研究所提方法與資料庫即時查詢時間之比較... 45

表6 CASE I 與 CASE II 在 r=1~4 雙層式過濾架構所產生之 FAR ... 47

(8)

viii

圖 次

圖1 本論文探討問題示意圖... 5

圖2 嵌入式元件用於客戶端以減輕網際網路流量... 7

圖3 建構 Suffix Trees 的範例... 11

圖4 典型 Inverted Files 之基本結構... 12

圖5 一個五階的 B-Tree 範例 ... 13

圖6 Suffix Array 的範例... 13

圖7 CMAC 的原始架構 ... 18

圖8 本論文使用之 CMAC 架構... 24

圖9 檢驗映射位置均勻性之樣本字串承載量... 27

圖10 長度為 10 的聯想記憶體層對樣本字串承載量映射狀況... 28

圖11 長度為 20 的聯想記憶體層對樣本字串承載量映射狀況... 28

圖12 CASE I 與 CASE II 之範例字串... 38

圖13 CASE I 在 r=1~4 的訓練過程... 40

圖14 CASE II 在 r=1~4 的訓練過程 ... 40

圖15 CASE I 在 r=5~8 的訓練過程... 43

圖16 CASE II 在 r=5~8 的訓練過程 ... 43

圖17 雙層式過濾架構... 46

(9)

1

第一章 緒論

字串(string)是電腦系統中一種基本且重要的資料型態,因為字串是一種 通用型也是最被廣泛使用於儲存資料的類別,在本研究中所指的字串乃是指 以英文字元(character)為主,加上數字字元與其他特殊符號字元,例如,@、

#、%與+-*/等,形成的特定長度且具特殊含義之文字(word)或文字的組合。

這 樣 的 範 圍 限 制 是 因 為 英 文 與 上 述 其 他 字 元 已 成 為 電 腦 作 業 系 統 (operating system)或網際網路(Internet)之共通語言,不但已經行之有年並且存 在特定經過特殊排列方式的英文字元鍵盤規格。除此之外,英文字元已早有 通用的編碼模式,如ASCII 編碼,而且在很早就已經被廣大不同語言的電腦 使用者接受。無可諱言,由於全世界之語言多達數百種,雖然所謂萬用字元 (UNICODE)目前正在快速發展中或已經被使用在某些系統或網路上,即使如 此,英文字元仍是現今最廣泛使用於網際網路上之文字,其中最主要原因乃 是由於其方便性與廣泛性,另外,在網際網路上的特定網頁格式,或資料傳 輸仍以英文字元組成的字串資料為最大比例,例如網域名稱(Domain Name)、

一致資源定位器(Uniform Resource Locator, URL)、或電子郵件(E-mail)等。本 研究所探討的主題即是定義在上述字元所構成的字串資料為主流之環境下,

即時確認判斷字串之存在屬性。雖然本研究所提方法並不侷限於英文字元字 串,只要能經過適切編碼的文字皆適用,然而本論文中呈現之若干應用問題 仍是以英文字元與ASCII 編碼為主,符合現今環境甚至未來主流以萬用字元 編碼的字串。

第一節 背景與動機

自從個人電腦(PC)普及化後,價格愈來愈低廉,使得一般大眾家庭都可 負擔得起,許多以往紙本資料逐漸轉為數位化儲存格式便於儲存在電腦儲存 設備,例如硬碟,以方便資料的複製與保存,此一轉變帶來很大的便利性,

並且符合現代環保概念,因為傳統紙本資料不但須耗費珍貴的森林資源,而 且紙張容易受自然環境天候與歲月影響而變質,最後可能導致資料的永久遺

(10)

2

失。在網際網路涵蓋率愈來愈高的同時,透過網際網路傳輸的資料傳輸變得 快速且便利。近年來,由於資料庫(database)技術的進一步突破,更使得大量 資料可以儲存於同一檔案,並且進而可以定義資料與資料間的關聯性,於是 不同型態的資料,例如數值、字串、與日期資料等,可以儲存於同一個資料 庫內,如此一來,資料查詢透過網際網路變得舉手可得,迅速且精確。由於 上述的演化,大量同質性資料,例如戶籍、車籍、身份證字號與信用卡號碼 等,得以數位化且儲存於資料庫內並加以定義其關聯,例如,某車籍號碼是 屬於某身份證字號的人所擁有、或某身份證字號的人是居住於某戶籍編號的 所在,如此模式已經成為現代人們對資訊即時查詢不可或缺且十分仰賴的一 部份,尤其可透過網際網路查詢時,也因此網際網路上的搜尋引擎(Search Engine)自然而然地興起,而且讓使用者面對網際網路上龐大的資料來源有了 起點(portal),因為在這些具有搜尋引擎功能的入口網站,只要鍵入少許的關 鍵字(keywords),相關的資訊在頃刻間即可出現在電腦螢幕上,而另一方面,

由於龐大的資料不斷地湧上與網際網路連結的資料庫伺服器(server)或網頁 (Web page)上,搜尋引擎的技術也不斷地推陳出新,其目的也在於因應由於 龐大的資料正在以很快的速度增加到網際網路,使得網際網路成為現代蘊藏 量最豐富的圖書館,而這些搜尋引擎創新技術最主要的目標就是如何以更快 速的演算法則,來更精確地擷取使用者要求的資訊並加以呈現。

就以上所描述的事實不難發覺,在這個資料與網際網路連結爆炸的時 代,如何以更有效且更快速的方式來查詢使用者想要得到的資料,已經成為 一個值得探討的研究主題,因為如果資料查詢的過程愈是準確且迅速,不但 能節省使用者時間,更能大幅降低網際網路這個公眾通路的成本,其中包含 連結網際網路伺服器(server)的負載,以及網路頻寬(bandwidth)的充份利用。

通常在以網際網路資料庫查詢資料的過程中,最基本的即是所謂的存在查詢 (existence query),例如帳號名稱、身份證字號、信用卡號碼,及車牌號碼等,

這些資料通常是以字串資料型態呈現與儲存,而且大部份都是作為識別用途 的資料,這些資料通常具有非常龐大的數目,例如一百萬以上,且有時字串 長度長短不一,例如電子郵件帳號,使得判定某一筆字串資料是否存在於非 常龐大數量的資料集內,必須耗費一定程度的運算時間才可以達成,而如果

(11)

3

這些資料是儲存於現代知名的資料庫內,例如Microsoft SQL Server,通常這 些資料庫會增加所謂索引值(index)空間來加快搜尋速度,如此作法不但增加 記憶體空間的負荷,而且因為資料庫是允許多使用者同時進行查詢作業,因 此網際網路使用者或來自所謂代理人(agent)軟體進入資料庫的數量很大時,

也勢必影響資料庫的查詢效能。

另一方面,如果龐大數量的資料不是儲存於資料庫內,而是使用傳統順 序性的檔案儲存,如果將檔案內字串資料根據字元的順序經過排序後,使用 二元樹(binary tree)搜尋模式作查詢時,在最壞狀況下(worst case),亦即最長 的查詢時間,如果不考慮排序時間,其運算複雜度為O(log2(m)+1),其中 O( ) 表複雜度函數,log2( )為底數為 2 的對數函數,m 表資料集內字串資料總筆

數,亦即m 的大小會影響查詢時間。如果大部份此類查詢都是確定存在的話,

例如帳號名稱,則使用二元樹搜尋模式作查詢所運用的方法,應屬於可接受 的範圍,例如假如資料集存在一百萬筆資料,則log2(1,000,000)+1 約為 21,

所以平均而言,約在21 次以內的完全字串比對過程之內即可判定該字串是否 存在於該資料集內。然而,如果此類查詢是用於字串資料過濾用途,例如網 路封包(packet)過濾,或不當網頁攔截,則可預期的是,大部份的查詢字串都 不存在於資料集內,亦即大部份的查詢都屬於最壞狀況,如此一來,勢必影 響整個過濾或攔截系統的效能,特別是當資料集內的字串資料筆數很大時,

在一般的狀況下,超過一百萬筆的資料是很常見的情形,因此,如何進行一 穩定,例如查詢時間與存在資料集內的字串資料筆數無關,且高效能,例如 速度快且所需的記憶體空間小,這種查詢模式是這些過濾或攔截系統在面對 資料量持續快速增加的環境,所必須具有的功能。

第二節 問題描述

本節對本論文所要探討的問題作一個正式的定義如下:已知某字串類型 集合Σ 包含近乎無窮多筆不同字串資料其數量為 n,令 T 為 Σ 的一個子集合 且含有m 筆字串資料,其中 n>>m,表 n 非常大於 m,如果 P 是來自 Σ 之任 一個字串資料,決定P 是否包含於 T 之內。如圖 1 所示,Σ 為一龐大之字串

(12)

4

資料類型集合,如果以車牌號碼字串資料為例,T 表示在此龐大集合內具有 某特殊意義之子集合,例如遭竊車牌號碼,P 表 Σ 內任一個車牌號碼,以圖 1 為例,P 並不是遭竊車牌號碼。

此探討問題的重點是,當某字串資料的數量非常龐大時,其中具有某特 殊含義的子集合也有夠大數量的字串資料,當隨機抽取一筆字串資料,如何 在最迅速與最節省記憶體空間的限制下,決定該筆字串資料是否存在於那個 具有某特殊含義的子集合內。例如,台灣目前汽機車登記有案的數量遠超過 一千萬部,而目前登記失竊的數量平均約在五十萬部,目標是如何確定某車 牌號碼是否屬於這五十萬部之內。如果失竊的數量不大,例如 1,000 部,那 以目前個人電腦的速度,可以逐筆比對就可以獲得準確的結果,而且比對所 需的時間,以目前的中央處理器(CPU)而言,比對 1,000 筆字串資料應是在瞬 間可完成,然而如果比對五十萬筆字串資料,所需時間相較於比對 1,000 筆 字串資料應該有某些程度的落差,因此本論文所要探討的問題,n 可以趨近 無窮大,而m 雖然遠小於 n,也不應太小,因為太小的 m 無法顯露出本論文 所提方法的優勢。又如果另外舉一例來說,目前信用卡發行數量已趨近無法 數計,那信用不良或有積欠款項記錄的用戶的數量亦非常可觀,本論文所提 方法亦可應用於即時偵測這些信用不良的用戶或有積欠款項記錄的用戶。

(13)

5

n→?

P outside T Σ

T

m<<n

1 本論文探討問題示意圖

第三節 研究目標

就上節描述的問題而言,本論文探討的問題可以說是一種特殊的字串比 對(string matching)問題(Navarro, 2001),傳統字串比對問題已被探討了超過三 十年,許多學者提出不同的方法作了很大的貢獻,然而,傳統的字串比對是 針對查詢字串,在一篇或多篇無特定格式的文章中,例如過去文字模式的文 章或現今網際網路上的網頁,尋找查詢字串所存在的位置或其出現的頻率,

來判斷這些文章與查詢字串(通常為關鍵字)的關聯性,其目標也是在於判斷 的運算速度快慢且是否有效節省記憶體空間。這些學者所提的方法將於下一 章文獻探討中做更詳盡的描述,而許多學者多年來的研究成果也對現今網際 網路的環境下,無可數計的網頁內容關鍵字搜尋技術,產生極大的影響。

本論文所探討的問題有別於傳統的字串比對問題乃在於本研究搜尋的內 容標的物是由龐大筆數同質性之字串資料所組成,而這些字串基本上具有唯 一性,換言之,每筆字串資料的內容均不相同,雖然在實作上,由於資料量 的龐大可能在內容標的存在相同的字串,但對本研究欲達成的目標並不影 響,因為判定查詢字串的存在屬性並不包含存在數量,簡言之,這些重複的

(14)

6

資料只會造成運算上多餘的負擔,對查詢的結果,亦即存在或不存在,並不 會導致判定結果的不同或相反。相對上,本論文所探討的問題,比較類似於 入侵偵測系統(Intrusion Detection Systems)所使用的過濾機制(Tuck et al., 2004),此類型的過濾機制主要是在資料快速傳輸的網際網路環境下,快速地 偵測傳輸控制協定(Transmission Control Protocol, TCP)封包內是否存在已知 的駭客(hackers)入侵特徵字串,並進而加以攔截。然而,通常這些過濾機制 所承載的特徵字串數量無法非常龐大,方可應付傳輸速度與日俱增的網際網 路,因為龐大數量的特徵字串通常會導致整個過濾機制效率的下降,最後非 常可能影響過濾的效果。

基於以上所述,欲過濾的字串資料承載量(payload)的大小如果與過濾的 時間呈正相關,一旦承載量過大,終究會影響其效能,因此本研究欲尋求無 論承載量大小為何,其過濾時間均接近常數,也就是說其運算複雜度為O(1),

而且此常數必須非常微小,才可顯現其效能,如此一來此常數僅與運算器之 運算速度相關,在運算器速度愈來愈快的環境下,過濾時間只會愈來愈短而 不會增加。其次,本研究欲尋求之過濾機制其運算部份所需的記憶體空間,

為了減輕網際網路客戶-伺服(client-server)架構流量的負荷,理想上應該要夠 小,因為如果這些基本的存在屬性查詢皆發生於伺服端(server),如圖 2 上方 所示,如果每一個來自客戶端存在屬性查詢的需求,都必須經過網際網路至 伺服端詢問的話,由於此類查詢數量相當龐大,所以不但耗費網路資源,而 且如果伺服端處於忙碌狀態,將導致使用者的查詢時間增長甚至等待的缺 點;相對上,如果過濾機制所佔據的記憶體空間可以縮小到實作於一個嵌入 式元件(embedded component)常駐於客戶端(client),如圖 2 下方所示,如此一 來其優點如下:(1)分散運算時間於客戶端,有效降低網際網路負載、(2)客戶 端由於在本機進行運算,提高過濾效率,與(3)當字串承載量內容發生異動,

僅需由伺服端發出異動部份至客戶端。舉例來說,根據 PC Magazine,目前 全世界色情網站總數約三億七千萬個,約佔據所有網站之12%,且以每日新 增約266 個的速度成長,由於數量龐大,如果使用者有過濾的需求,在伺服 端作查詢不僅需仰賴網路流量,且容易造成伺服端很大的負擔,但是如果過 濾機制可移至客戶端,不但過濾速度因為使用的是客戶端的運算器而加快,

(15)

7

伺服端只要定期更新有變動之網站URL 承載量內容至客戶端,對網路流量的 負荷也會有效地減輕。

2 嵌入式元件用於客戶端以減輕網際網路流量

綜合以上所論,神經網路(neural network)以其結構簡潔、運算速度快且 具記憶(memorization)能力,是本研究所欲達成目標具潛力的核心機制,而 CMAC (Cerebellar Model Articulation Controller) 以其單層的聯想記憶體 (associative memory)模式與局部權重修正可達快速回想之能力,更符合本研 究於字串過濾機制的目標。Albus (1975a, b) 提出此一模式時,目標是作為機

(16)

8

器手臂的控制器用途,其輸入(Input)與輸出(Output)分別為機器手臂的目標位 置與關節致動器的電壓,雖然當時並無神經網路此一名詞,但因CMAC 在原 始 設 計 下 , 藉 由 Albus 所 提 的 連 鎖 法 (concatenation method) 亦 具 推 導 (generalization)能力,此推導能力係指根據已學習過之輸入與輸出值之間的關 係來決定未學習過的輸入其對應的輸出為何,是神經網路重要特徵之一,因 此在後來CMAC 亦被視為神經網路之一類。然而,本研究欲達成的目標並不 需要這種推導能力,而是其記憶能力與其快速的回想能力,因此CMAC 在原 始 設 計 在 本 研 究 被 加 以 修 正 , 亦 即 在 輸 入 層 與 聯 想 記 憶 體 之 間 的 映 射 (mapping),摒除 Albus 所使用為推導能力設計的連鎖(concatenation)法,而另 外以專為字串資料而設計的雜湊函數(hash function)取代,藉以節省聯想記憶 體空間並維持其記憶能力,這也是為本研究最主要的貢獻。

第四節 論文架構

本論文的架構共分五章,除了本章緒論外,第二章文獻探討針對傳統的 字串比對技術作詳細探討,並呈現近年來由於網際網路的興起,學者所提入 侵偵測系統的描述,此外也探討CMAC 的原始設計以及其用於若干領域的應 用。第三章詳述應用修改後的CMAC 作為字串資料過濾器的設計,其中包含 輸入字串資料的編碼,輸入層與聯想記憶體層透過本研究所提出的雜湊函數 映射的過程與原理,此外各字串資料目標值的設定與接受窗的設計,是本研 究為了因應面對龐大字串資料在訓練過程中,提出用以決定訓練過程是否正 常或呈現鈍化的指標。第五章實驗與結果除了描述用於本研究實驗的兩個應 用問題,包含垃圾電子郵件發送人帳號攔截,與以行動設備判定被竊車牌號 碼外,也呈現兩個呈現應用問題在訓練過程的收斂狀況,與線上即時過濾之 效率,以及為了降低誤判率所提出的雙層式序列過濾架構。第六章為結論與 未來研究方向。

(17)

9

第二章 文獻探討

承緒論所述,本論文探討的問題可以說是一種特殊的字串比對問題,且 字串比對問題已被探討了超過三十年,因此在第一節將探討對此領域具代表 性的文獻,其中包括以啟發式搜尋法則與建構索引值的資料結構。另外,由 於本論文目標在於快速的字串過濾機制,相對類似於網際網路入侵偵測系統 所使用的過濾機制,這類的過濾機制主要是在資料快速傳輸的網際網路環境 下,快速地偵測封包內是否存在已知的駭客入侵特徵字串,所以在第二節將 呈現近年來相關的文獻。此外,本論文藉由修改CMAC 的原始設計,而使之 成為專為字串過濾的機制,因此在第三節除了對CMAC 的原始設計作一個詳 盡介紹,同時也探討CMAC 應用的文獻。

第一節 傳統字串比對技術

一 般 而 言 , 字 串 比 對 可 分 為 精 確 比 對(Exact Matching) 與 逼 近 比 對 (Approximate Matching)兩種。所謂精確比對是指具某些含義與特定長度的文 字(word),且其前後不包含其它的字元,進行全部字元的完全比對,比對的 文字必須與目標文字完全一致。另一種所謂逼近比對乃指針對字串或其一部 份(子字串),進行某些字元組合的比對字元。此兩者的差異在於逼近比對的 目標字串通常無實質含義且允許誤差發生,而兩者的應用大都在於無特殊格 式的文章中,在可容忍的時間內,尋找其欲比對的字串,除了字串所在的位 置外,並計算字串發生的頻率。

就上述所論,具代表性的文獻如:(Aho & Corasick, 1975)、(Boyer & Moore, 1977),與 (Knuth, Morris, & Pratt, 1977),Aho and Corasick 使用 automata 演 算法首次對精確比對描述一簡單線性的複雜度(在最壞狀況下),此法在當時 已被UNIX 作業系統採用作為字串擷取的工具函數的核心。Boyer and Moore 提出一種跳躍搜尋的方法,可以跳過大部份無須比對的字串,雖然此法也屬 簡單線性的複雜度,但在當時就大部份的字串搜尋問題而言,其搜尋速度可 超過其他同屬線性複雜度的方法,而後來也被很多學者引用甚至衍生改良後

(18)

10

的演算法。Knuth et al.利用當字串比對失敗發生時,可透過機率決定後續搜 尋時的起始位置來縮短搜尋時間,此法大都用於字串發生的頻率計算上。

上述若干文獻上提出的方法,均是屬於直接對目標文章,進行啟發式 (heuristic)的搜尋,當電腦的運算能力愈來愈強,以及主要記憶體空間的擴 充,開始有學者提出不同的資料結構機制,使用更充份的記憶體空間來達到 更有效率的字串搜尋過程。其中具代表性的文獻如,Suffix Tree (Weiner , 1973) (McCreight, 1976) (Apostolico & Galil, 1985) ( Ukkonen, 1992, 1995)、the Inverted Files (Moffat & Zobel, 1996)、the B-tree (Ferragina & Grossi, 1999)、以 及Suffix Arrays (Manber & Myers, 1993),基本這些方法都是以建立索引值的 模式,以不同的資料結構,來加快搜尋速度,然而,建立索引值大都需要龐 大的記憶體空間,有時除了主要記憶體,也會用到外部記憶體,對系統造成 極大的負擔,尤其是實作在行動設備上更是困難,然而,以上所提的資料結 構對後續在電腦科學中資料搜尋方面的研究產生很大的影響,因此在以下作 更詳細的描述。

Suffix Tree 是一種資料結構用來應用於許多類型的字串處理的問題,這 些應用包含子字串搜尋、最長重複子字串,與在兩個字串找出最常相同子字 串等。假設一個字串s 由 n 個字元組成,那 s 可被表示成 s=c1c2c3…cn,如此 針對s 可定義一個從 i 個字元起始的字串尾字串 Ti=cici+1ci+2…cn。例如,假設 s=taiwan,那字串尾字串包含 T1=taiwan、T2=aiwan、T3=iwan、T4=wan、T5=an、

T6=n。

由以上的子字串可發現有些子字串具有相同的串首字元,目前的串首字 元包含t,a,i,w,n,因此在建構 Suffix Trees 時可將這些子字串置於同一個分支,

圖3 可看出其建構後的結果。

(19)

11

T ree t taiw an

aiw an

a an

iw an i

w an w

n n

3 建構 Suffix Trees 的範例

Inverted Files 是一種搜尋精確比對字串的串列(list)結構與流程,它利用 兩個指標來迅速找出某一個字串存在的位置與頻率。這兩個指標包含:(1) 文 字頻率(term frequency, TF) 所指的是一個文字(term or word) 在一個文件中 所出現的頻率;(2) 文件頻率 (document frequency, DF) 所指的是包含該文字 的文件數目。在實際應用上每一個文字都形成一個串列,其中包含該文字出 現的文件代號與其在該文件出現的頻率(TF),在整個串列之前,利用該文字 內容與其出現在所有文件的頻率(DF),作為一個索引檔案,此檔案可以先經 過排序或使用雜湊函數來達成快速索引的效果,圖4 呈現典型的 Inverted Files 之基本結構。

(20)

12

false

true true

The query string

The logarithmic function with the base of 10

The logarithmic function with the base of 2

4 典型 Inverted Files 之基本結構

B-Tree 可以被視為一種多階的二元樹,最主要被用於資料的搜尋、新增 與刪除,因此被廣泛應用於資料庫系統與檔案系統內的搜尋機制。B-Tree 的 子節點都位於同樣的深度,因此當資料被新增或刪除時,指向節點的指標作 局部的更改,所以可以節省很多運算上所需的時間,但是這樣的結構會耗費 許多記憶體空間,也因此 B-Tree 經常須要與次要記憶體結合使用,例如建 立節點在硬碟上。B-Tree 的另一項特徵是節點數必須事先就決定,而且每個 節點包含的內容,必須在事先設定好的範圍內,也因此經常會有母節點沒有 指向任何子節點的現象發生,所以使用者必須非常清楚應用問題可能產生結 果的極限為何,以免過度浪費空間,雖然如此,它的快速搜尋能力仍是其最 大的優點,圖 5 表示一個五階(節點數為五)的 B-Tree,其中由於母階層只包 含兩個元素,亦即8 與 27,因此在子階層有三個分支,亦即第一分支包含小 於8 的元素,第二分支的元素是介於 8 與 27 之間,而第三分支則是包含大於 27 的元素。

(21)

13

8 27

11 25

2 3 5 7 30 33 39

5 一個五階的 B-Tree 範例

Suffix Arrays 是一種經過字元順序排序後的字尾字串的陣列結構,其最 主要的應用乃在於扮演一個索引的角色,快速地計算在目標文章內,包含某 查詢字串或其子字串出現的次數。如果以前述Suffix Tree 的 s=taiwan 為例,

則其所構成的 Suffix Array 就如圖 6 所示,其索引值就是該字尾字串的第一 個字元在該字串的位置,而排序是根據字尾字串的第一個字元而定。

6 Suffix Array 的範例

Index Sorted Suffix aiwan

2

an 5

iwan n taiwan wan 3

6 1 4

(22)

14

因此,有一些學者以上述資料結構進行改善,目的在於不影響其搜尋效 能下,使用到更精簡的記憶體空間資源,例如,Bentley and Sedgewick 在 1997 提出的混合式排序法(hybrid sorting algorithm),Colussi and De Col 在 1996 提 出擴充式(augmented)的 suffix array,Abouelhoda et al.在 2002 年利用階層式的 suffix array 進行字串精確比對,壓縮法(compression)已被視為未來在此領域 的主流方法(Ziviani et al., 2000),例如:De Moura et al. 於 2000 年提出對目標 文章分割後再建立索引,以及Grossi and Vitter 於 2005 年提出結合 suffix array 與 suffix tree 達成壓縮的目的。此外,也有學者利用編碼的方式將目標文章 編碼(例如 Huffman coding)後再進行字串搜尋(Pigeon & Bengio, 1998),或者 是以標籤式(Tagged Sub-optimal Code)對目標文章進行定義與插入,然後依據 所定義的標籤進行字串搜尋(Bellaachia & Rassan, 2004)。這些方法對當今的字 串搜尋技術產生很大的影響,但空間與效率間仍存在著無法同時兼顧的窘境。

第二節 網際網路入侵偵測系統

近年來,隨著網際網路的普及,與傳輸速率的提升,入侵偵測系統(IDS) 已 成 為 對 在 網 際 網 路 上 傳 送 惡 意 攻 擊 的 封 包 進 行 偵 測 與 攔 截 的 工 具 (Antonatos et al., 2004)。由於 IDS 的運作模式與本研究探討的主題性質相似,

因此在以下,針對近五年來有關IDS 發展或實作的文獻,呈現較深入的探討。

Liu et al. 於 2004 年提出可在 IDS 中平行處理字串比對的方法基於所設 計之雜湊引擎,可有效減少對主要計憶體存取的次數。 DiazGomez and Hougen 於 2005 年提出基因演算法(Genetic Algorithm)中的適用於有音效內 容的適合度函數(Fitness Function),作為降低誤判率之用。 Zhecheva and Nikolova 於 2007 年提出隱藏馬可夫模式(HMM)在訓練時對其參數嚴謹的預 估,可成為強力的有限狀態(finite state)機器,同時也非常利於不同的辨識問 題,並且實作於 IDS 的異常辨識上。Khan et al. 於 2007 年提出以支向機 (Support Vector Machines)為基礎的分類機制,此機制可隨著封包通過速度的 不同,調節分類的精細程度,換言之,當網路流量大時其分類偏於大部分類,

而隨著流量下降時,可做到更精準的分類。Yu et al. 於 2008 年提出可基於系

(23)

15

統操作者對錯誤預測的回饋,微調偵測的模式而提高異常偵測準確率。Ren et al. (2008) 提出以語意(semantic)網路為基礎的 IDS,該方法同時配合中介軟體 技術,可確保不同型態的 IDS 代理人彼此合作,進而降低錯誤接受(false positives)的機會。Massicotte et al. (2008) 對以簽名特徵為基礎的 IDS 進行更 深入的研究,這類型的IDS 通常以蒐集惡意攻擊的入侵者,然後萃取其特徵,

根據這些特徵來判定或過濾可疑的資訊,由於這種方法準確率不高,這些學 者應用了資料挖礦的技術,來自動產生IDS 的確認規則,並經由實驗呈現確 可以降低錯誤率。Zhu and Liao (2008) 也應用支向機來實作 IDS,其支向機 演算法是根據空間區塊與樣本密度來進行,這樣的方式可以減少訓練用所須 的樣本數,並進而加快訓練的速度,準確率也明顯提升。Liu and Li (2008) 提 出分散式IDS 基於代理人模式,此模式採用結合式靜態與動態代理人,其中 動態代理人是用來分散資料的蒐集、分析與回應,這種結合模式使所提方法 可自我調適外,並在實作上對IDS 主要的問題獲得初步解決。Liu and Dong (2008) 提出在平行結構的 IDS 環境下的動態調適性平衡演算法,在平行結構 的IDS 環境中如何有效分散網路流量是重要的議題,其所提方法即針對封包 標頭包含的資訊,分離出不同領域並同時引導不同領域的封包至相對應具有 該領域偵測器的 IDS,進而提升過濾效果。由以上文獻可發現提高準確率是 IDS 非常重要的研究主題,尤其在網際網路的環境下,IDS 每天都必須過濾 龐大的資料量,特別是錯誤接受少數的入侵封包,即可造成嚴重的後果。

更近幾年來,由於網際網路的流量不斷攀升,對於IDS 研究的核心,逐 漸導向模組或系統整合以及多重與複合式架構的探討。Zhang (2009) 提出一 個新的型態比對演算法,型態可包含字串或非字串的資料,也是常在封包中 見到的不同資料型態的組合,作者的研究重心在於開發不同的型態模組於 IDS 內,其中包含資料取得與分析模組、通信協定處理模組、特徵比對模組,

歷史資料模組,與入侵回應模組。Kuchta et al. (2009) 將 IDS 實作於虛擬自 動化網路,虛擬自動化網路是建構在網際網路上具某程度安全性的私有網 路,必須要加裝特定自動化設備,因此也成為許多企業為了安全性考量的選 擇,這些學者針對這些虛擬私有網路安全性的不足,提出防火牆系統,特別 處理文字型態資料或訊息流通上的安全。Zhao et al. (2009) 提出一個以資料

(24)

16

融合為基礎的IDS,這種架構的 IDS 是考量到現今的駭客的侵入方式與邏輯 各不相同,因此這些學者結合多重的安全性保護來因應因人為思考邏輯不同 所產生的影響,多重的偵測模式與標準被融合在同一個IDS 上,進而有效攔 截各不同類型的入侵。Momenzadeh, Javadi, and Dezfouli. (2009) 透過演化式 模糊系統來設計一個高效能的 IDS,其所提方法結合了逼近式推理與演化演 算法中的學習能力,模糊系統是用來對網路流通資料進行分類,經由分類後 的資料再將其應用在不同IDS 的行為上,實驗結果也呈現比一般分類方法達 成更高的準確率。Ahmed et al. (2009) 提出一個以封包為基礎的方法來預防入 侵,這些學者觀察到駭客的行為通常從一般比較無保護而容易受害的伺服器 下手,再藉由這些伺服器入侵與該伺服器有彼此信任的伺服器,因此提出任 何系統終止先前連結的標準,來遏止諸如此類的入侵。Gao and Tian (2009) 提 出使用改良式基因演算法神經網路提出區域型無線感測網路之 IDS,此系統 是由進階式精簡指令集機器資料取得節點、無線點對點網路架構,與控制中 心所組成,資料取得節點使用感測器來蒐集資訊以及應用影像偵測演算法來 進行處理,然後將處理後的資訊傳送到控制中心與無線點對點網路,當有異 常現象發生,此系統自動啟動週邊設備以高準確率來確認異常來源。Sainani and Shyu (2009) 應用多重代理人技術在分散式 IDS 達成資訊交換,這些學者 提出了複合階層式多重代理人架構,來達到低成本與降低代理人反應時間的 通信協定,這種架構對典型分散式IDS 具有正面的助益,例如,系統整體表 現遲緩、過多時間用於處理電力管理,與冗長延遲的經常性發生等。Zaman and Karray (2009) 整合模糊推理模式來改良加強型支向機決策函數,藉由此改良 模式來減少特徵數量、提高系統準確性,並縮短訓練與測試所需的時間,同 時,應用模糊推理過程可容納在支向機決策時產生的誤差,加速特徵選擇程 序與決策過程。Hanaoka et al. (2009) 整合網路上不同性質的 IDS 成為一個系 統來改善整體攔截效能,其所提的系統可以有效減輕負荷量過大的 IDS,其 次可以消除多餘的攔截規則,最大的效益仍在於節省為了設置平行式IDS 所 須耗費的龐大硬體成本。Chou and Chou (2009) 提出複合式分類器系統用於 IDS 上,此系統結合了異常與誤用的偵測,分類器則包含類似特徵選擇分類 器與資料挖礦分類器,前者使用模糊信任度演算法來對不同的特徵集進行分

(25)

17

類,後者則可從網路流通資料自動萃取使用者行為模式,其目標也在於準確 地分辨正常使用或惡意入侵的行動。Paez and Torres (2009) 考量到由於 IDS 的盛行與數量愈來愈多,也很容易成為被入侵或攻擊的目標,因此提出了以 自主性代理人為基礎的保護模式,這些學者使用階層式內部安全機制,可以 在不同層次判斷事件發生的關聯性,並藉此保護核心攔截機制。

就以上的闡述而論,在IDS 的運作上,學者所提出的方法雖針對不同的 應用範圍而有所不同,然而,不難看出在面對龐大資料量的流通下,傳統的 數學模式因缺乏自我調適機制,特別是在網際網路的環境下,因此大都採用 具有自我調適的機制,例如,基因演算法、隱藏馬可夫模式,與支向機等,

均屬於可自我調適的運算機制,亦與本研究所提機制(屬神經網路)不相違背。

第三節 CMAC 的應用

CMAC 是在 1975 年由 Albus 提出,原始文獻的目標是作為機器手臂控制 用途,直到1990 年代才被視為是神經網路的一類模式,因為 CMAC 具備所 有神經網路的特徵,包括:訓練,權重值修正,記憶、推導與回想等能力,

也是本論文針對字串過濾問題採用且修整的核心機制,因此以下針對CMAC 的原始架構與其應用範圍領域作概略敘述。圖7 呈現 CMAC 之原始架構。

(26)

18 a 1 W 1 a 2 W 2 a 3 W 3 a 4 W 4 a 5 W 5 a 6 W 6 a 7 W 7 a 8 W 8 a 9 W 9 a 1 0 W 1 0 a 11 W 11 a 1 2 W 1 2 a 1 3 W 1 3 a 1 4 W 1 4 a 1 5 W 1 5 a 1 6 W 1 6 a 1 7 W 1 7

. .

. .

. .

. .

aM WM

Response cell

S

1

S

2

Set of ALL Possible Input

Vectors

7 CMAC 的原始架構

在圖7 中,Si表輸入向量,可以視為是機器手臂之端末器(End-effecter),

通常是一個夾爪或吸盤,所欲到達的座標位置,以及目前機器手臂各關節的 角度位置,中間的一維陣列內含若干個權重值W 與其對應的陣列位置 a,這 個一維陣列在原始文獻內被稱為聯想記憶體(Associate Memory),其主要的功 能是根據輸入向量,輸出要傳送到各關節的電流訊號。機器手臂的移動軌跡 (Trajectory)是一條連續的 3-D 空間,由機器手臂的各組成部份,藉由各關節 致 動 器(actuator) 的 帶 動 , 在 所 存 在 的 空 間 掃 過 的 不 規 則 狀 空 間 (swept volume),而在控制機器手臂最主要的目標,是如何在不同的時間點輸出適當 的電流訊號,使得機器手臂在移動軌跡上可以順暢地經過,而不產生所謂的 振動(oscillation),且在最理想狀況下,各關節的角度變化必須控制在某一範

(27)

19

圍之內,因此,CMAC 必須在整條移動軌跡上迅速與準確地提供傳送到各關 節的電流訊號。由於座標與關節的角度位置資料可以是非常多數的組合,這 些組合由於數量過於龐大,實作上在聯想記憶體必須耗費相當可觀的記憶體 空間,才可以達成此一目的,因此 Albus 在輸入向量層與聯想記憶體間的映 射設計出所謂的連鎖法(concatenation method), 此法的優點是不必記憶所有 組合的輸出值,而是在訓練時取得具代表性的目標與位置與各關節的角度座 標,在映射前對輸入向量編碼,採用順序性的代碼逐漸取代編碼後輸入向量 的模式,而每次只取代一位編碼,如此一來,當不同的輸入向量非常接近時,

通常可藉由此法取得一個合理的偏移量來計算出輸出值,這樣的話,就無須 將逼近無窮大的座標角度組合全部置於訓練樣本之內,不但減輕記憶體空間 的負荷,也可充分縮短訓練所需的時間,這種概念在現代神經網路的術語被 稱為推導能力(generalization capability),也就是在面對一組從未在訓練期間經 歷過的座標角度組合,仍能輸出一個可靠且精準的訊號,這也是神經網路重 要的特徵之一。圖7 只針對機器手臂某一關節進行訊號輸出,但是通常工業 用等級的機器手臂會包含五個以上的關節,亦即所謂的自由度(degree of freedom),在這種狀況下可使用圖 7 的平行結構,也就是說,運用與關節數 相同的聯想記憶體陣列,在輸入向量層與聯想記憶體間的映射過程中,以平 行的方式進行映射,每一個聯想記憶體陣列的輸出值就代表輸出到某一關節 的電流訊號。

CMAC 的優點乃在於局部修正權重值的特點,在權重值修正部份,Albus 也有所闡釋,權重值與目標值間的誤差不宜全額回授,因為如此作法在訓練 期間將導致收斂值振盪甚至無法收斂,因此較小的回授比例(意指學習率因為 當時並無此一名詞),可以讓訓練過程順暢且避免無法收斂的問題,其前提乃 在於聯想記憶體空間必須足夠大,這種局部修正權重值的特點可使得在接收 到一個輸入向量時,可以很快地將所得到的訊號輸出,而且與訓練時的樣本 輸入向量數目無關,這對於機器手臂的控制非常重要,因為在一條機器手臂 的移動軌跡而言,通常包含一連串各關節致動器的電流變化,如果運算速度 慢,將會導致機器手臂的控制不順暢,這一點尤其在實時(real time)控制上非 常重要。其次,局部修正權重值的特點也可顯著地降低訓練時所需的時間,

(28)

20

因為如果當輸入向量的維度愈大時,如果使用全域式權重修正方式,將使得 訓練過程拉長,全域式權重修正方式通常就包含著推導能力,而CMAC 則運 用輸入向量層與聯想記憶體間的映射過程中,加入特殊編碼模式來達成,雖 然以編碼模式達成的推導能力會因訓練樣本數不足而下降,但CMAC 最主要 的優勢乃在於其快速訓練與快訴輸出的能力,換言之,在節約的記憶體空間 限制下,可以維持高水準的記憶能力,這也是本論文採用修正CMAC 架構來 達成字串快速過濾的主因。

Szabo and Horath (2000) 提出將 CMAC 內權重值二元化,二元化的原因 在於原始的權重值乃是以浮點數值代表,浮點數權重值通常容易導致推導能 力欠佳或誤差過高,二元化後的權重值雖然聯想計憶體的一維陣列長度大幅 增加,然而由於權重值二元化後,其訓練演算法則也同時被加以修正,而其 推導能力經由實驗結果顯示有顯著的改善。Cannady (2000) 針對入侵偵測系 統使用CMAC 作為線上學習的機制,由於傳統的入侵偵測系統必須介入對新 式的攻擊以人工編碼,而且如果應用神經網路方法為其偵測機制,則所有的 入侵或攻擊特徵必須重新訓練,,也會因此導致時間的浪費與新舊特徵值轉 換間的漏洞,此機制可自主性且快速地學習新的攻擊模式,此乃因為應用了 增強式的學習方法在CMAC 內,並充份利用 CMAC 快速訓練的的特質來避 免上述問題的發生。Chen (2003)使用自組織(self-organizing) CMAC 作為在全 球資訊網(WWW)網頁內容漸增性個人化的工具,這是由於在過去網頁內容擷 取通常僅限於高維度資料,再使用平行處理與可擴充的資料挖礦技術達成,

如此作法雖然可以大幅節省時間,可是卻忽視了使用者個別化的需求,因此 在這個研究是針對根據網頁內容對其進行個別化的服務來提升其品質,方法 是運用自組織映射神經網路先對網頁內容加以分類,來達到個別化資訊需求 的目標。Nguyen et al. (2005) 提出自組織高斯(Gaussian)模糊 CMAC,自從 CMAC 被提出以來,許多學者應用了模糊邏輯理論先將輸入向量在映射至聯 想記憶體層前轉換為模糊數,這種作法對CMAC 在分類能力上有所助益,然 而卻可能產生解模糊時的不確定性,此研究乃使用真值(truth value)限制來克 服模糊CMAC 在解模糊時不確定性的問題解。Tang and Yan (2007) 提出模糊 CMAC 為基礎之模式預測控制器,傳統的模式預測控制器,在高度非線性的

(29)

21

環境下,預測效果不佳,但如果使用過多的非線性函數,雖然可以獲得改善 的效果,但是過於繁複的運算過程,很難應用在實務上因為運算時間太長使 得控制器難以實作,這些學者所提模式可解決原始模式運算過程過於繁複的 問題。Man et al. 在 2007 年為了要提升 CMAC 在訓練過程的精度,提出粒子 群聚最佳化為基礎來進行訓練,有效地改善訓練時權重值彼此拉扯所產生誤 差或難以收斂的問題。以上文獻皆是對CMAC 的機制或架構進行修整,來達 到特定問題解決方式的基礎,而本論文則是針對當輸入元素為字串時,其介 於輸入層與聯想記憶體層映射函數的因應改善修正,也是在過去文獻上所沒 有的。

Zheng et al. (2006) 提出使用雙層 CMAC 的架構對鐘擺結構的控制,為了 要加速許多增強型學習的訓練過程,許多逼近式函數被提出代表狀態值,然 而因為使用逼近式函數使得狀態值容易變為不準確,導致增加了收斂的困難 度,此研究乃應用增強型學習對逆轉的鐘擺結構作更精確的控制。Zhao et al.

(2006) 提出對角型循環 CMAC 模式,目的是在控制平行機器手臂於軌跡追 蹤時,取得高精準度的位置控制,此模式乃基於一個離散式的Lyapunov 函數 用來決定不同的學習率參數在穩定度上所造成的影響。Chen (2007) 提出穩健 型自我調適的模糊CMAC 控制器的重新設計,適應性模糊函數被用來估計系 統參數,藉以更逼近理想的控制器,此控制器可對非線性系統消除逼近誤差。

Wang and Ning (2007)應用模糊 CMAC 來控制細線結構的張力問題,此問題 屬高度非線性且隨時間而產生變異,藉由對模糊CMAC 訓練演算式的修正,

學習的效率得以大幅提升。Ortiz et al. (2008) 提出一個針對動態系統非線性 特 定 類 別 的 辨 識 模 式 , 使 用 具 適 應 性 階 層 式 的 模 糊(Hierarchical fuzzy) CMAC,此模式整合了模糊邏輯,其優點為當輸入向量維度很大時,該輸入 向量可被分解為若干個低維度的階層式的模糊CMAC,如此可以穩定在封閉 迴圈(closed loop)在控制上的表現,該所提模式並且適用於實作在實時(real time)對隨時可能變更環境的控制器。Wang et al. (2008) 則應用 CMAC 實作在 水底機器手臂的控制,在水底機器手臂的控制系統的設計比一般系統來的艱 難,原因在於其高度的非線性與動態環境,為了因應在水底如此複雜變動的 環境,這些學者提出了複合式的控制方法,此方法以平行結構整合了傳統PID

(30)

22

控制與CMAC,經由實驗結果顯示,所提方法對於在水底環境下對外界的干 擾可有效地排除。Shi et al. (2009) 應用 CMAC 於車輛的動力方向盤的控制,

由於高度非線性動力方向盤的控制如果使用傳統的PID 控制,控制訊號很難 與真實的軌跡相結合,此控制結合了傳統的PID 控制器與 CMAC 使得動力方 向盤更加穩定,並且縮短了控制反應時間與提升了控制準確度,另一方面的 優點則在於此複合式控制系統對經常變更的參數設定較不敏感,此優點也是 其在控制時較為穩定的原因之一。以上文獻皆是應用CMAC 作為控制器的基 礎,乃是延續CMAC 的原始文獻,並在不同控制領域加以實作或擴充整合其 他在控制理論上具代表性且應用成功的方法。

Hsu et al. (2000) 將 CMAC 實作於 VLSI,由內容定址記憶體 (content addressable memory) 組成,其目的在於完全利用主要記憶體,並記錄比對錯 誤的部份以節省時間。Hoshino et al. (2006) 使用多層的 CMAC 聯想記憶體並 加上新的訓練規則,每一層均有不同的成員 (member),當某層無法回應輸出 時,將藉由其它各層的輸出作一回應。Min et al. (2009) 為了改善原始 CMAC 訓練過程的準確度,使用模糊的成員函數於CMAC 上,意欲在於使用更少的 記憶體空間使其訓練更迅速,並成功地應用於粒子群最佳化的問題。以上之 應用均與節約記憶體有關,與本研究之目標亦相符。

(31)

23

第三章 字串存在屬性過濾器設計

本論文所使用之應用於字串記憶與快速回想之CMAC 架構如圖 8 所示,

其中輸入層接收字串資料 s 後,透過本研究提出之特別為字串資料設計的雜 湊函數 f 映射至聯想記憶體層,輸入字串之每一字元透過 f 映射後將可得到 在聯想記憶體層的相對應的位置,換言之,映射後聯想記憶體層被激發 (activate)的位置數目與輸入字串之長度相同。聯想記憶體層是由一維陣列的 權重值所組成,其長度為A,因此所有權重值存在的位置為 1~A,此長度的 設定與輸入字串資料承載量有關,可以被理解的是字串資料承載量愈大需要 更長的聯想記憶體空間,也就是說需要更多的權重值,如此才可使所有字串 資料承載量可被聯想記憶體層記憶的效果,此部份將於分節中詳細描述。當 字串s 透過 f 映射後,被激發的權重值形成一個集合並以 wactivated 代表之,

例如當輸入字串s=Taiwan,而在聯想記憶體層包含 12 個權重值,w1~w12 分 別為0.31、1.32、-0.83、-3.14、2.63、1.77、-0.24、1.98、0.85、-0.25、1.58、

-0.03 時,如果聯想記憶體層被激發的位置為 2、3、6、8、10、11,則 wactivated={1.32, -0.83,1.77,1.98,-0.25,1.58}。

這些被激發的權重值將在輸出層作一個加總的運算,就上述的例子而 言 , 輸 入 字 串 s 在 輸 出 層 的 輸 出 則 為 1.32+(-0.83)+1.77+1.98+(-0.25)+1.58=5.57,值得注意的是,所有的權重值在 本研究均以16 位元的浮點數呈現,使用 16 位元的浮點數的原因在於節省,

激發的權重值加總後的權重值將與該字串的目標值 T(s)作比較並計算其誤差 值,亦T(s)- Σwactivated,因為此誤差值來自於所有被激發的權重值,如果應 用問題本身需要更精準的浮點數產生的誤差,則更高位元數的權重值,如32 或64 位元,必須被使用。在輸出層計算所得的輸出值與目標值所產生的誤差 值將以學習率η加乘後回授至被激發的權重值,理想上η的設定應將誤差值 平均回授至被激發的權重值,以上述例子來說,η應設定為 1/6 因為有 6 個 權重值被激發,然而,以節省聯想記憶體空間的角度來看,由於雜湊函數的 設計可使每一權重值被多筆不同的輸入字串資料激發,因此如果η以理想上

(32)

24

的狀況設定,將導致誤差值持續上下振盪無法收斂,Albus 對這樣的現象也 有所注意,且具體提出學習率η不應以理想狀況設定,應設定在更小的值,

例如0.01,才有助於誤差值收斂,在以下分節也將針對此一設定加以闡釋。

Input string

from the datasetMapping function

f T(s)

w1 w2 w3 w4 w5 w6 w7 w8 w9

wA

η

Association layer

Σ -1

8 本論文使用之 CMAC 架構

第一節 字串輸入與雜湊函數

在進行字串映射至聯想記憶體層的過程,所有必須被記憶的字串即字串 資料承載量以順序性與循環性的模式,亦即假設有100 筆字串存在於字串資 料承載量內,則訓練的模式是由第一筆開始,每接受一筆資料後在輸出層所 計算得到的誤差值以即時的方式回授,之後順序輸入第二筆、第三筆,一直 到第一百筆,如果還無法滿足訓練停止的條件,則接續由第一筆開始重新另

(33)

25

) 1 . 3 ( ) (

~ 1 1 ) mod ) ) )) ( ( (

(log (

)) ( (

1

i j

k

i base

i j Int Ascii s k k LN A j l s

s

f =

⋅ ⋅ + =

=

一個循環,在神經網路的術語,每一個循環的訓練稱之為一個 epoch,每一 筆訓練字串資料透過雜湊函數 f 決定在聯想記憶體層被激發的權重值位置。

如前所述,本研究摒除 Albus 所使用的連鎖法,此乃因為連鎖法是為其推導 能力而設計,而本研究追求的目標僅在於其快速記憶與回想的能力,因為如 具有推導能力,其結果只會導致誤判的機率增大,所以本研究改以一個專為 字串設計的雜湊函數進行映射,為了節省聯想記憶體層空間,此雜湊函數必 須能均勻地將任一筆字串映射至聯想記憶體層,換言之,所有位於聯想記憶 體層的權重值被激發的頻率應趨於一致,因為如果被激發的頻率大小相距甚 大時,被激發的頻率大的權重值將處於多筆字串資料彼此拉扯的狀況,甚而 導致收斂困難。Ellison (1991) 針對此一狀況建議使用對輸入向量使用對數 (logarithm) 函數,並擷取至小數點後數若干位數的值可得到上述的效果,本 研究採用 Ellison 的研究成果,並定義適用於字串資料類型的雜湊函數如(1) 所示。

其中f (si(j)) 表第 i 個字串中的第 j 個字元在聯想記憶體層的映射位置,

Ascii(si(k))是字元 si(k)的十進位 ASCII 值,LN 是一個很大的整數,A 是聯想 記憶體層的長度,l(si)是字串 si的長度。

在公式(1)中,f (si(j))為一整數值介於 1 與 A 之間,在對數函數內的加總 運算目的在強化字元在字串內所在相對位置的差異性,因為如果無此運算的 話,那字串cmac 與 macc 將激發聯想記憶體層的相同映射位置,使用 LN 的 目的在於避免僅有低位階的權重值被激發,換言之,聯想記憶體層被激發的

範圍因為 LN 而放大,另外一個目的則在於被放大後的值經由聯想記憶體層

的長度A 取餘數後,其值會落在小數點後數若干位數的值,符合 Ellison (1991) 所提的方法,因此LN 值必須夠大,至少大於 A,且不可是一個有因數的值,

例如偶數,因為如果是一個有因數的值,就會造成只有某部份的聯想記憶體 (1)

(34)

26

層權重值位置有被激發的可能,例如 2 的倍數、3 的倍數或 5 的倍數等,因 此本研究採用的LN 值是大於的 A 最小質數,而 A 的設定並無特殊規則,基 本上,A 愈大的話會縮短其誤差值收斂的時間,然而過小的 A 會導致因每一 權重值被激發的頻率太高,產生不同字串在同一權重值互相拉扯的現象而無 法收斂。表1 為不同字串映射位置範例,其中 A=100,LN=101。

表1

不同字串映射位置範例

String c m a c

(1) 99 109 97 99

(2) 99 317 608 1004

(3) 1.996 2.501 2.784 3.002

(4) 201.559 252.607 281.174 303.175

(5) 201 252 281 303

(6) 2 53 82 4

String m a c c

(1) 109 97 99 99

(2) 109 303 600 996

(3) 2.037 2.481 2.778 2.998

(4) 205.78 250.656 280.593 302.824

(5) 205 250 280 302

(6) 6 51 81 3

Operations:

(1) Ascii(si(k)) (2) ΣAscii(si(k)).k (3)log(ΣAscii(si(k)).k) (4)log(ΣAscii(si(k)).k).LN (5) Int(log(ΣAscii(si(k)).k).LN)

為了檢驗公式(1)的均勻性,本研究使用台灣各縣市的英文名,共 16 筆 字串資料為樣本字串承載量如圖9 所示,並使用長度分別為 10 與 20 的聯想

(35)

27

記憶體層進行映射,圖10 與圖 11 分別呈現映射狀況,其中聯想記憶體層各 位置被激發的次數大致上無差異很大或某位置完全沒有被激發的情形。

9 檢驗映射位置均勻性之樣本字串承載量

Taipei Kaohsiung Yilan Taoyuan Hsinchu Miaoli Taichung Changhua Nantou Yunlin Chiayi Tainan Pingtung Hualien Penghu Keelung

(36)

28

10 長度為 10 的聯想記憶體層對樣本字串承載量映射狀況

11 長度為 20 的聯想記憶體層對樣本字串承載量映射狀況

聯想記憶體層是由一維陣列的實數權重值所構成,所有權重值的起始值 均為 0,隨著字串承載量持續以順序且循環式映設至聯想記憶體層,其權重

(37)

29

值均在每一筆字串映射後,被激發的權重值加總後立刻經由輸出層與目標值 相減後所得到的誤差值進行修正,當所有權重值w1~wA組成的權重向量W 穩 定 在 某 一 權 重 向 量 Ws 時 , 此 種 現 象 在 神 經 網 路 的 術 語 稱 之 為 收 斂 (convergence)。由於 CMAC 屬於區域修正權重的模式,不同於一般神經網路 模式,例如倒傳遞演算法(Backpropagation),屬於全域權重修正模式,因此訓 練的時相對節省,加上本研究並不強調其推導能力,因此相較於一般神經網 路訓練下,本研究所提模式可比全域權重修正模式之神經網路在更短的電腦 運算時間內即可達到收斂的效果。

第二節 目標值與接受窗的建立

當字串承載量內第 i 筆輸入字串經過聯想記憶體層映射後,在輸出層加 總被激發的權重值所得到的值O(si)可由公式(2)定義。

) 2 . 3 ( )))

( ( ( )

(

) (

1

=

=l si

j

i

i w f s j

s O

由於CMAC 屬於監督式神經網路型態,意即每一筆輸入字串必須對應到 一個目標值(target value),此目標值可以是一種類別或實際上應輸出的數值訊 號(如 Albus 原始設計用於控制機器手臂的輸出電壓),以本研究所探討的問題 而言,所有的輸入字串均屬於同一種類別,也就是說所有的輸入字串均為需 要CMAC 記憶,以作為即時過濾字串的用途,在實作上此目標值可設定為任 何非零的值,因為所有權重值的起始值均為 0,直覺上,本研究以數值 1 為 所有輸入字串的目標值,然而,當所有輸入字串均有相同長度 l 時,單一目 標值的設定方式可能導致權重值退化(degenerate)的問題,這時候所有的權重 值都會有同樣的值1/l。因此,本研究利用字串映射至聯想記憶體層位置的均 勻性,目標值設定的規則如公式(3)所示。

(2)

(38)

30

) 3 . 3 ) (

2 / ( )) ( / )) ( ( ( 1

) 1 (

) (

1

otherwise

A s

l j s f s if

T

si

l j

i

i

i

=

>

⎩⎨

= +

其中,si表在字串承載量內第i 筆字串資料,T(si)是字串 si的目標值,f (si(j)) 表第i 筆字串中的第 j 個字元在聯想記憶體層的映射位置,l(si)是字串 si的長 度,A 是聯想記憶體層的長度。

從公式(3)可看出,當字串 si的所有字元映射聯想記憶體層的平均位置如 果大於聯想記憶體層長度的一半時,其目標值為 1,否則目標值則設為-1。

在目標值必須是兩個以上且使用雜湊函數作為映射函數的前提下,有一種狀 況有可能導致無法收斂的問題,也就是所謂碰撞(collision)問題,對於此一問 題的描述如下:當分屬不同目標值的兩筆輸入字串,其在聯想記憶體層所激 發的權重值位置完全一致時,那此兩筆輸入字串有所謂的碰撞現象,此乃因 為由聯想記憶體層至輸出層的關係只可為一對一或多對一,而不允許一對多 的狀況發生,因為一對多的關係會使得同一輸入字串經映射後針對不同的目 標值輸出不同的值而無法收斂。雖然碰撞現象可能發生且只會發生在長度相 同的字串上,但在本研究實作上,潛在可能的應用問題,其字串承載量筆數 均為十分龐大,這同時也意味所使用聯想記憶體層的長度A 也相當可觀,如 此一來,碰撞發生的機率可說是非常微小甚至可以忽略。舉例來說,假設字 串承載量筆數為 m,目標值的個數為 V,且字串長度為 l 時,發生碰撞的機 率是如公式(4)所示。

) 4 . 3 ) (

( 1 2

2 A l V

m

c C C

P = C

m=A=100,V=2,且 l=6 的狀況下,Pc約為 0.000002。然而,一般而 言在本研究的應用問題上m 與 A 都是相當大的數,例如十萬以上,而 l 也非 (3)

(4)

(39)

31

常可能大於10,例如 E-mail 帳號,這樣的話 Pc就變為非常微小。雖然如此,

本研究仍建議,在首度訓練或有新增字串至字串承載量前,應先進行碰撞測 試,如有碰撞發生時,可調整聯想記憶體層的長度A 的大小,或將有碰撞的 字串置於獨立檔案中,以作為線上即時回想時對獨立字串作完全比對程序。

事實上,在本研究用以測試的兩個應用問題(如第四章描述),其字串承載量 均無碰撞現象發生。

雖然本研究所使用之CMAC 模式,已將其推導能力移除,但神經網路的 特徵還是會對任一筆輸入字串產生輸出值,雖然未經訓練的輸入字串在回想 時的輸出值,理論上應不會相當接近所設定的目標值,但由於特殊字串類型 集合(圖 1 中的 Σ)內數量龐大,在雜湊函數的應用下,仍有存在若干比例,雖 然在輸入字串承載量(圖 1 中之 T)之外,其在回想時的輸出值也可能相當接近 所設定的目標值,使得回想時無法準確判斷這些字串的存在屬性,這種類型 的誤差,一般稱之為錯誤接受率(False Acceptance Rate, FAR),因此,為了降 低FAR,且建立一訓練時停止條件的指標,本研究提出在訓練過程中,根據 輸入字串承載量輸出值與目標值的最大差異範圍,對每一目標值建立上界與 下界,兩個界限的範圍在本研究稱之為接受窗(acceptance window),上界與下 界的建立方式可如公式(5)所定義。

) 5 . 3

~ ( 1 ))

( ) ( ( ))

( (

~ 1 ))

( ) ( ( ))

( (

⎩⎨

=

=

=

=

m i

s T s O Min s

T L

m i

s T s O Max s

T U

i i

i

i i

i

其中 U(T(si))表字串 si目標值的上界,而 L(T(si))則表其下界,m 表字串 承載量總筆數。

接受窗可以被想像為圍繞在某目標值的可通過區段,當一筆輸入字串經 過映射後的輸出值可通過此區段,則代表該輸入字串是存在於字串承載量之 內,由於接受窗是由在字串承載量之內同屬某目標值的所有字串資料所建 立,因此同屬某目標值的所有字串資料經過映射後的輸出值都可通過此區 (5)

(40)

32

段。建立接受窗的優點有二:(1)在訓練階段,接受窗的寬度變化可視為訓練 是否已達收斂狀態的指標,依本章第一節對收斂狀態的描述,是以判定權重 值向量 W 是否以趨近穩定權重值向量 Ws,然而當權重值向量維度相當大 時,此判定過程勢必增加電腦運算上的負擔,相對上,使用接受窗的寬度是 否趨於穩定只對單一值進行判斷,有助於訓練過程的效率;(2)在即時過濾階 段,接受窗的建立可非常迅速判定輸入字串的存在屬性,且其寬度大小可代 表訓練過程是否正常,以及可大致推算誤判的比例(FAR)。

第三節 誤差回授與權重值修正

當每一筆輸入字串的目標值根據公式(3)確立後,訓練的過程即是將輸入 字串承載量內的字串一筆一筆呈現至本研究所提之CMAC 模式,每一筆字串 在輸出層得到一輸出值後與該字串對應之目標值比較後得到一誤差量,此誤 差量用於兩個部份的修正:(1)根據公式(5)修正該字串目標值之上界與下界,

與(2)此誤差量乘以學習率(learning rate)η 後回授至聯想記憶體層被激發的權 重值如公式(6)所示。

) 6 . 3 ( by

activated all

for )) ( ) ( ( )

( )

(k new wk old T si O si k si

w = +η⋅ −

其中w(k)neww(k)old分別表示所有被輸入字串si激發的修正後與修正前 之權重值,η 為學習率,T(si)為對應 si之目標值,O(si)該字串經過 CMAC 映 射後在輸出層加總後所得的輸出值。

由公式(6)可知,修正後的權重值是由修正前之權重值加上該字串回授的 誤差量乘上一個特定比例η 所得,如本章起始所述,在理想狀況下,即每個 權重值經過所有在承載量內的字串一個循環(epoch)的訓練後都僅被激發一 次,η 的設定值應為 1/l(si),然而為了節省聯想記憶體層的使用空間,透過雜 湊函數映射後,每個權重值在一個 epoch 後,可被多筆字串激發,此時應使

用較小的 η,例如 0.01,使得訓練過程可以穩定收斂。然而本研究所提方法

之應用問題均屬大量字串資料的記憶與回想,因此本研究使用更保守之學習 率η,即 0.01/l(si),在初步測試後均可使訓練過程穩定收斂。判定是否收斂的 (6)

參考文獻

相關文件

Secondly then propose a Fuzzy ISM method to taking account the Fuzzy linguistic consideration to fit in with real complicated situation, and then compare difference of the order of

To tackle these problems, this study develops a three-stage approach (i.e., firstly create a correct CAD-oriented explosion graph and then find a graph-based assembly sequence

The International Conference on Innovation and Management 2012 (IAM 2012) is an annual conference on Innovation and management since 1999, organized and sponsored by the

Soille, “Watershed in Digital Spaces: An Efficient Algorithm Based on Immersion Simulations,” IEEE Transactions on Pattern Analysis and Machine Intelligence,

Lange, “An Object-Oriented Design Method for Hypermedia Information Systems”, Proceedings of the Twenty-seventh annual Hawaii International Conference on System Sciences, 1994,

In order to analyze the tourists’ multi-phase recreation experience of railway tourism, this research discusses the dimensions, including customers’ involvement, perceived

To response the increasing competition between banks and it variation in operation, it is an significant issue to upgrade service quality and consolidate customer satisfaction,..

Shih and W.-C.Wang “A 3D Model Retrieval Approach based on The Principal Plane Descriptor” , Proceedings of The 10 Second International Conference on Innovative