• 沒有找到結果。

介紹基礎本論文使用的類神經網路、基礎理論、軟體驗證。

【第三章】軟體系統架構

【第四章】硬體系統架構

【第五章】實驗數據及分析

【第六章】結論

6

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

2.1 人工智慧介紹

人工智慧的發展可以追溯到二次世界大戰末期,為了解決軍事上情報的問題,

科學家開始發展擁有智慧的機器。1956 年 McCarthy 主持了 Dartmouth 會議,開 啟了人工智慧史。人工智慧的始祖中,最有名的為大家熟知的Alan Mathison Turing,也是奠定電腦科學基礎的科學家。

現代人工智慧的定義是:一個計算機擁有人類的知識與思考能力,並具有學 習、推理判斷問題的能力,而人工智慧的產生過程是:人類對於外界的刺激與面 臨的問題,開始尋找解決的方法,開始推理、學習、最後找到解答的過程,將這 些過程分析拆解後,成為一些簡單的區塊,再分別把這些只有單一功能的區塊編 寫成程式碼,將這些問題模型化讓電腦更有能力與系統化的應付更難的問題。能 夠解決問題的系統,就稱為人工智慧系統。

2.2 類神經網路介紹

為了在語音跟影響辨識擁有與人腦相類似的功能,1940 年起,科學家

開始發展最簡單的類神經網路,經歷了40 年的發展,一度陷入低潮,近年來又

再度復甦。

電腦的功能日益強大,但還是無法完全的達到人腦所能及的地步,尤其在影 像處理與語音辨識尤為困難,證明了人類還沒有完全了解人腦的思考邏輯,而要 如何達到可以跟人腦匹敵的電腦,是科學家的夢想。

類神經網路已經發展多年,嘗試去模仿人類的神經系統,由眾多非線性的神

基礎理論及技術背景

Input Layer

Hidden Layer

Output Layer

經元間連結所組成,模擬生物傳輸訊息的方式,以類似的方式從外部環境或者其 他神經元接收訊息,而神經元通常以平行運算的方式進行,可以平行處理大量的 資料,並自動分析與學習特徵,使得最後能得到正確的輸出,其中在訓練階段需 要不斷的反覆訓練直到精確度達到目標。

本論文使用的類神經網路模型包括了一個Input Layer、中間的 Hidden Layer 與最終的Output Layer,輸入層為一層輸入的數量為 6,隱藏層為一層其中的神

經元數量為32,輸出層為一層輸出的數量為 7,每一層之間的神經元使用可以調

整的權重相互連接。神經網路都需要經過訓練學習階段,藉由學習修正權重讓輸 入能夠正確的被辨識出來。下圖2.2-1 為神經網路的向前傳遞與圖 2.2.-1 RNN 的 神經網路:

圖2.2- 1 Feedforward Neural Network 架構圖

圖2.2- 2 RNN 架構圖

2.3 Recurrent Neural Network

近幾年RNN 的發展,在處理與時間相關問題受到重視,相較其他的神經網

路,遞歸神經網路在針對需要考慮前後文方面的問題有很好的結果。

遞歸神經網絡由Jürgen Schmidhuber 來奠下基礎,Jürgen Schmidhuber 為一

8

位瑞士人工智慧Lab IDSIA 的類神經網路研究者,從 1987 年以來,一直鑽研於 自我改進式(Self-Improving)與問題解決(Problem-Solver)的研究,1991 年,他為了 度學習神經網路的先驅,奠下了非常重要的基礎。

Jürgen Schmidhuber 跟慕尼黑工業大學的實驗室共同合作研發遞歸神經網 路的其中一種分支,技術的革新對手寫體辨識、語音辨識、機器翻譯、與圖片註 釋技術,被現在各大公司所應用。

大多數的神經網路是需要人類給予答案來學習的,依賴著反向傳播來學習,

反向傳播是1970 年 Seppo Linnainmaa 提出的自動鏈式求導方法(Automatic Differentiation, AD),是著名的反向傳播算法的雛形,但是反向傳播對深度學習 與RNN 來說不是很好用,1991 年 Jürgen Schmidhuber 的學生 Sepp Hochreiter 研 究深度學習的時候發現了問題所在,就是梯度消失的問題。後來他們使用了一種 叫做LSTM 的深度學習 RNN 解決了這個問題,到現在 LSTM 已經被廣泛的應 用。

2.4 Long Short-Term Memory

長短期記憶是遞歸神經網路的分支之一,1997 年首次發表,由於獨特的結

構,LSTM 適合處理與測量與時間序列相關或者時間延遲嚴重的問題。作為非線

性模型,LSTM 可以被拿來建構複雜非線性更大型的深度神經網路。

LSTM 使用記憶來輔助決策,使用三個控制閥(Gate)來輔助記憶過去的輸出 的使用,在控制閥的運算後都會經過Sigmoid 函數決定是否要加入。除了影響輸 出外,使用一個控制閥隨著時間的更新,將當前記憶(Memory Cell)以𝑐̃𝑡符號表示,

透過遺忘閥(Forget Gate)來給予上級 Memory Cell(𝑐𝑡−1)權重、輸入閥(Input Gate) 給予這次Memory Cell(𝑐̃𝑡)權重決定要不要加入長期記憶,最後做加權運算成為最

基礎理論及技術背景

後的Memory Cell 以𝑐𝑡表示。輸出閥(Output)決定𝑐𝑡到輸出的權重,而𝑐𝑡是否能夠 加入輸出通常使用Hyperbolic Tangent 函數,數值會落在[-1,1]之間,-1 表示會被

否定不適合加入長期記憶之中。以下的為LSTM 的基本公式:

矩陣W、U 為權重矩陣,𝑥𝑡為輸入序列,𝜎為 Sigmoid 函數,而 b 則為偏移 量,𝑖𝑡、𝑓𝑡、𝑜𝑡分別代表三個控制閥,輸入閥、遺忘閥與輸出閥對應到公式(1)(2)(3):

it = σ(Wixt+ Uiht−1+ bi), (1) ft = σ(Wfxt+ Ufht−1+ bf), (2) ot= σ(Woxt+ Uoht−1+ bo), (3) 𝑐̃𝑡為該次的Memory Cell, tanh 為 Hyperbolic Tangent 函數對應到公式(4):

𝑐̃𝑡 = tanh(𝑊𝑐𝑥𝑡+ 𝑈𝑐𝑡−1+ 𝑏𝑐), (4) 𝑐𝑡−1為上級的Memory Cell,經過加權運算後才會得到𝑐𝑡為最後的記憶 (Memory Cell)對應到公式(5):

𝑐𝑡 = 𝑓𝑡⊙ 𝑐𝑡−1+ 𝑖𝑡⊙ 𝑐̃𝑡, (5) ⊙ 為矩陣內積運算,ℎ𝑡為隱藏層的輸出,最後辨識的結果也是從這裡判斷 對應到公式(6):

𝑡 = 𝑜𝑡⊙ tanh (𝑐𝑡). (6)

2.5 Keras

Keras [5]是基於 Python 程式語言的深度學習庫。Keras 是一個神經網路 API,

Keras 由 Python 編寫,可以選擇 Google 公司開發的 Tensorflow、或者由 de Montréal 大學LISA 實驗室開發的 Theano 與 Microsoft 公司開發的 CNTK 等為後端 (Backend),如圖 2.5-1 所示,Keras 依照選擇的後端搭建設計者的神經網路,所

10

以可以讓Keras 站在巨人的肩膀上發光發熱,提供使用者快速的實驗,能夠把設 計者的idea 迅速實作出來。

Keras

TensorFlow Theano CNTK

圖2.5- 1 Keras Backend Selection

2.6 C 與 JAVA 程式語言

C 語言在 1972 年由貝爾實驗室的 Dennis Ritchie 基於 B 語言設計而來,現今 UNIX 系統的作業系統大部分是由 C 語言設計,而 Windows 作業系統,包括 Office、

各種應用軟體。C 語言擁有語法簡潔,執行效率高,又方便跨平台,運作模式也 較高階語言更接近硬體描述語言,方便硬體電路設計上的驗證。

JAVA [6]語言是一種被廣泛使用的程式語言,優點有跨平台,物件導向,等

特性,常被應用於網頁開發與行動應用程式開發,這也是本論文會使用JAVA 程

式語言,來測試本論文系統Real Time 運算的可能性。

在Keras 平台上,已經驗證了手勢辨識的準確度,符合我們的預期後,同時

也證明了此演算法的可行性,但是由於Keras 使用的是高階語言 Python,並無法 直接的瞭解其內部運算細節。

為了設計硬體架構先打下基礎,選擇使用C 語言來實作手勢辨識系統,因

基礎理論及技術背景

為C 語言與硬體描述語言結構相似,當 C 語言系統建立,硬體電路設計難度將

大幅下降,C 語言系統為了多重驗證 Keras 與演算法的正確性,與可以清楚明瞭 的知道Keras 模型權重的排列與意義。

在瞭解權重的排列與意義後,本論文想嘗試未來的發展性,為了可以達到 Real Time 的及時手勢辨識,由於 Sensor 是使用 Android 手機,因此本論文使用 JAVA 程式語言來重建一次系統,可以讓 Sensor 直接把 Input Data 透過 Wi-Fi 傳 到電腦端坐Real Time 計算,為未來在硬體電路的 Real Time 辨識先奠下基礎。

2.7 FPGA

現今積體電路(Integrated Circuit, IC)設計產業蓬勃發展,不過同時也面臨幾 個大問題,就是現在設計出來的產品生命週期越來越短,複雜度也隨著時間演進 日益複雜,當複雜度提高通專案的大小也跟著提高,因此對於設計者來說有一個 有彈性(Flexibility)的設計平台可以節省大量的人力與時間,因此使用 FPGA 應用 在積體電路設計,FPGA 是一種半定製的電路,給設者一定的彈性來設計電,路 常被使用在驗證硬體電路,可以方便使用者瞭解使用的面積成本、功率消耗與電 路效能。

在硬體電路設計,使用HDL 來設計電路,方便工程師把實際的電路以程式

碼的方式進行設計,且能透過邏輯仿真來驗證電路功能,常見的硬體描述語言包 含Verilog [7]、VHDL 等。

本論文選擇Altera 公司的 FPGA 開發板,其中可以由設計者挑選規格,依照 需求來選擇,本論文使用的是DE 系列母版中 Stratix IV 來實現連續手勢辨識系 統。

12

Keras Keras

Result Testing

Data Model

圖3.1- 1 軟體完整架構圖

相關文件