TWI525558B - Resilient high - speed hardware reverse transfer and feedback type neural network system - Google Patents

Resilient high - speed hardware reverse transfer and feedback type neural network system Download PDF

Info

Publication number
TWI525558B
TWI525558B TW100101585A TW100101585A TWI525558B TW I525558 B TWI525558 B TW I525558B TW 100101585 A TW100101585 A TW 100101585A TW 100101585 A TW100101585 A TW 100101585A TW I525558 B TWI525558 B TW I525558B
Authority
TW
Taiwan
Prior art keywords
neural
neural network
layer
hardware
network
Prior art date
Application number
TW100101585A
Other languages
English (en)
Other versions
TW201232429A (en
Inventor
Meng-Shen Cai
Yan-Zhi Ye
Ya-Yu Zhan
Original Assignee
Univ Nat Taipei Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Univ Nat Taipei Technology filed Critical Univ Nat Taipei Technology
Priority to TW100101585A priority Critical patent/TWI525558B/zh
Publication of TW201232429A publication Critical patent/TW201232429A/zh
Application granted granted Critical
Publication of TWI525558B publication Critical patent/TWI525558B/zh

Links

Description

具彈性之高速硬體倒傳遞及回饋型類神經網路系統
本發明為類神經網路係使用相互連結的神經元來模仿生物神經網路的特性,其本身為一平行運算的架構,特別是應用於利用硬體電路的平行處理與高速的特性,完成類神經網路學習及回想的運算。
先前技術一,D. Hammerstrom提出X1 Array架構,又稱為CNAPS(Connected Network of Adapted Processors System),該系統採用多重資料匯流排(Single Instruction stream Multiple Data,SIMD)架構,所有節點在同一時脈中所執行的是相同的指令,如圖一所示。其優點在於可藉由匯流排控制每個運算節點中所設計的累加器與乘法器,使得系統整體運算速度更為有效率。然而該架構僅完成類神經網路部分的運算,並沒有硬體架構的活化函數區塊,也不具備完整的學習功能。且由於CNAPS在許多應用上精度不足,且一般類神經網路的輸入、權重、轉移函數等通常都採用浮點的格式,在運算格式轉換時將會造成許多的誤差。
先前技術二,其架構為二維脈動陣列架構(2D-Systolic Arrays,2D-SA),如圖二所示。此架構的各個連結(links)的神經元(neuron)皆具有一個乘法器運算資料與權重值的乘積,資料從上往下經過各個節點與節點裡的權重值做運算,可得到神經元的輸出。此架構中一個縱列的節點才能構成一個神經元的功能,但由於各個節點均包含一個乘法器,將耗費大量的晶片面積,增添硬體的成本。
交通大學電機工程所郭功勳使用VLSI平台開發類神經網路。該系統將各個運算單元與控制器相連結,控制器利用並列匯流排的形式將資料傳至運算單元中進行運算。但當運算單元的個數增多時,更趨龐大的匯流排將需要大量晶片的面積,大幅度的提高了成本,且運算單元的數量會同時影響著控制器的架構,不僅造成移植上的不便,在即時性的應用上更顯得困難。亦為利用VLSI技術作為硬體開發平台設計類神經網路晶片,此架構採用分時運算架構,使一個晶片可以處理數倍的資料量,減少硬體架構的成本。
先前技術三提出改良型的環狀串列架構。從層級的角度來觀看類神經網路架構的運算,且利用記憶體完成透過查表法的硬體活化函數,此開發方式只需針對不同的問題進行控制單元數目上的修改。先前技術四建構出通用型的環狀串列硬體架構,並改良先前許多架構無法用硬體處理到的學習演算法部分。先前技術五採用平行處理的設計方式,但該設計僅將硬體大量的建造出運算單元,在系統的運算時間上雖然相當快速,但需耗費大量的硬體。先前技術六建構出分段計算的硬體架構,唯必須透過軟體方得以達成,一但所面對的應用問題不同,網路架構改變時,硬體就必須重新合成。
由此可見,上述習用物品仍有諸多缺失,實非一良善之設計者,而亟待加以改良。
本案發明人鑑於上述習用技術所衍生的各項缺點,乃亟思加以改良創新,並經多年苦心孤詣潛心研究後,終於成功研發完成本件具彈性架構的高速硬體倒傳遞及回饋型類神經網路。
透過控制器以及善用記憶體將整個硬體的架構得以實現各種不同的類神經網路,增加硬體類神經網路在其應用上的實用性為本發明的重點。
1.1 倒傳遞類神經網路
倒傳遞類神經網路是目前最具代表性的人工類神經網路架構,其架構如圖三所示。倒傳遞類神經網路是目前應用最廣的網路,屬於多層感知器的架構。相較於古典的感知機網路,增加了隱藏層的機制,並且改使用平滑可微分的活化函數。多層感知器學習演算法的基本原理是基於最陡坡降法(The Gradient Steepest Descent Method)的觀念,在學習的過程中,調整網路的權重值,將誤差函數最小化。多層感知器包括輸入層、隱藏層與輸出層,各層的作用如下:
1. 輸入層:用來表示類神經網路根據各個問題從外部所接收的輸入變數,在輸入層中的每一個神經元代表一個輸入變數,由於活化函數的值域限制,不同的輸入之間會影響學習的效果,因此在輸入時需進行適當的轉換,使輸入變數的值域介於0~1之間。
2. 隱藏層:用來處理輸入單元之間的相互影響,其神經元的個數沒有一定的準則,通常需要以經驗法則決定。隱藏層通常使用非線性轉移函數。一般的設計,隱藏層的層數並無限制,但一層或兩層隱藏層便可以處理大部分的問題。
3. 輸出層:用來表示網路的輸出變數,其運算單元的數目依照問題而定。
1.2 活化函數
活化函數(Activation function)又稱為轉移函數(Transfer function),是一模擬生物神經元的門檻值的機制,通常為一非線性函數。輸入數據與權重值運算並加總後稱為集成函數(Summation function)。活化函數的主要功能是將集成函數轉換使網路得以發揮修正權重值的效果。活化函數的特性會影響類神經網路學習非線性的功能,而非線性的函數可以避免神經元在處理輸入資料時遺失非線性特性的可能,這些特性會影響網路學習的功能。常見的活化函數有下列幾種:
1. 對稱硬限函數(Symmetrical Hard Limit function)如圖四:
2. 雙彎曲函數(Sigmoid function)如圖五:
3. 雙曲線正切函數(Hyperbolic Tangent function)如圖六:
4. 線性函數(Linear function)如圖七:
y(v)=kv (1.4)
1.3 時間延遲類神經網路
時間延遲類神經網路(Time-Delay Neural Networks,以下簡稱TDNN)與倒傳遞網路同樣為多層前饋式類神經網路的架構(Multilayer perceptron,MLP),學習演算法亦使用倒傳遞演算法。與倒傳遞類神經網路不同的部分在於TDNN利用將所有可能影響現階段狀態之前幾期影響因子亦全部當作輸入訊號,藉由資料結構訊息的先後得以表現時間前後的關係。
倒傳遞類神經網路的架構在處理有關時序性的問題時,加入前幾筆過去的資訊,將時間序列轉換成空間序列的型態輸入網路中,使類神經網路能夠學習資訊間時間前後的相關特性,即為時間延遲類神經網路。如圖八所示,該網路僅有一筆輸入資料,但每次輸入時會包含該資料現在、前一筆以及前兩筆的資訊。將與網路現在輸出有關的前幾筆擷取不同時間片段的資料,同時輸入至網路。藉由改變輸入資料的結構,令網路能學習有關時序性的問題。
1.4 回饋式類神經網路
回饋式類神經網路(Recurrent Neural Network,RNN)是一種可以處理時序性程序(temporal processes)的動態類神經網路。此架構包括連結輸入層(Concatenated input-output layer)、回饋處理層(Processing layer)與輸出層(Output layer),如圖九所示。承接層中的神經元代表記憶單元,隱藏層的輸入為輸入層與承接層的輸出,其餘皆與倒傳遞類神經網路相同。而所謂的動態是指神經元在網路外進行回饋的行為,與倒傳遞類神經網路是發生在內部神經元或者是利用輸入架構的變形而成的時間延遲類神經網路等靜態神經網路不同。網路透過將現階段的神經元的輸出值回傳(feedback)的方式而達到時間延遲(Time-Delay)的效果,可以藉由資料的結構訊息表現與時間有密切相關的問題。
回饋式神經網路中具有回饋鏈結的神經元稱為動態神經元(dynamic neuron)。回饋式神經網路與靜態倒傳遞類神經網路的不同在於遞迴項網路的輸入與輸出之間並非僅是映射關係(mapping),而是可藉由回傳的方式將現階段訊息處理的結果保留在網路結構中,作為處理下一階段的參考訊息。回饋式神經網路的特性相當適合模擬動態即時性的系統。其優點除學習速度快、網路可塑性高及收斂速度快之外,最重要的是不需要將所有範例全部輸入網路,而可一筆一筆的將資料送上線做即時性的線上學習。
時間延遲類神經網路與回饋式神經網路都具有解決時間相關問題的能力。然而時間延遲類神經網路的延遲個數難以決定。若延遲個數太長,容易造成輸入向量過於龐大使得網路難以訓練。例如:輸入資料有五項,每項延遲三筆資訊,則時間延遲類神經網路就必須具有十五個輸入神經元。雖然時間延遲類神經網路簡單明瞭,但由於網路較為龐大,需有大量的訓練資料,造成訓練時間冗長,網路收斂速度慢的情形,壓縮了在實際應用上的空間。
1.5 誤差學習演算法
誤差學習演算法係將正向運算的結果與目標值比較後得到誤差,透過誤差的大小修正權重而形成的逆向運算部分。正向運算過程中,資料從輸入層經由隱藏層做加權運算得到集成函數,透過活化函數的轉換後,再傳至輸出層計算網路的輸出值。當輸出無法得到目標值時,便會進行逆向運算,將誤差值回傳,期望透過修改各層神經元的權重值使得誤差達到目標值或者是可容忍範圍之內。透過回饋式神經網路者稱為線上學習法,線上學習法則使得網路具有動態且即時性的調整參數的功能。
1.5.1 正向運算
正向運算是將輸入值經過與權重值加權乘積得到集成函數,再透過活化函數將值轉換成處理單元的輸出值,如公式(1.5)、(1.6)。圖十為正向運算單元模型。
bj:具有閥值功能的偏權值(bias)。
n:輸入層神經元數量。
wij:連結加權值。
f(‧):具有處理功能的轉換函數,將輸入處理單元進行加權乘積運算後的總和,轉換成處理單元輸出值的公式。通常為一個具有雙向彎曲的指數函數,根據不同的函數在自變數趨近正負無限大[-∞,+∞]時,函數值趨近的數值將不同。
y j :具有輸出功能的訊號。
1.5.2 逆向運算
多層感知器的學習演算法中,以基於最陡坡降法導出的倒傳遞演算法(Back-propagation,BP)最具代表性。學習演算法的宗旨是降低網路輸出值與目標值的差距。網路的輸出值與訓練目標的輸出值的差距為網路誤差,以誤差函數或稱能量函數(Cost function)表示之,網路的學習是使能量函數最小化的過程,其定義如下:
tj:輸出層第j個輸出單元的理想目標輸出值。
yj:輸出層第j個輸出單元的實際輸出值。
j:輸出層向量數目。
類神經網路的訓練過程為藉由修正連結的權重值,使誤差函數達到最小化的過程,其調整的幅度和誤差函數對該加權值的偏微分值大小成比例,並與學習速率η成正比。
η:最小能量函數的幅度,控制每次加權值修改的步幅,稱為學習速率。
網路在修正與輸出層有關的權重時,隱藏層第j個與輸出層第k個間之連結加權值的偏微分可用微積分的連鎖律(chain rule)得到:
k:類神經網路的輸出層第k個神經元。
δ k :輸出層第k個神經元的誤差量。
j:類神經網路的隱藏層第j個神經元。
網路輸出層與隱藏層連結加權值的修正量為:
當修正權重與網路輸出層不相關時,誤差函數對網路前一層第i個神經元與隱藏層第j個神經元間的連結加權值的偏微分為:
δ j :為隱藏層第j個神經元的誤差量。
網路並非輸出層時,前一層與後一層連接之加權值w ij 的修正量為:
同理,隱藏層神經元的門限值修正量為:
1.6 網路參數
類神經網路通常包含大量權重值需要調整,下列幾種參數會影響學習的過程結果以及效率:
1. 隱藏層層數:若是沒有隱藏層則無法建構問題中輸入與輸出之間的非線性關係,過多的隱藏層數亦會使網路過度複雜,造成收斂的速度減慢。隱藏層的層數為一層或兩層時通常有較佳的收斂性,並足以反應近乎所有問題。
2. 隱藏層神經元數目:隱藏層需要多少個處理單元並沒有一定的規定,通常隱藏層神經元的數目越多收斂速度越慢,但可達到更小的誤差值。過少的隱藏層神經元會因為網路沒有足夠的參數描述問題輸入與輸出之間的非線性關係。過多的隱藏層神經元個數,容易使得網路過度的描述與學習,使得網路學習到輸入的雜訊部分。隱藏層層數以及隱藏層神經元的個數通常是根據實驗,透過經驗法則來決定,或者可參考[31],對式(1.10)、(1.11)擇一,作為隱藏層神經元個數的計算方式:
(1) 隱藏層單元數目=(前一層單元數+後一層單元數)÷2。(1.10)
(2) 隱藏層單元數目=(輸入層單元數×輸出層單元數)1/2。(1.11)
3. 活化函數:倒傳遞類神經網路常用的活化函數為雙彎曲函數,而動態類神經網路較常用的活化函數則為雙彎曲正切函數。可根據問題的性質以及網路的設計而使用不同的活化函數。
4. 誤差函數:誤差函數除了可使用誤差平方和之外,亦可取立方和甚至其他的函數來表達網路輸出與目標輸出值的差距,改善學習品質。
5. 學習速率(Learning Rate):學習速率過大或過小皆對網路的收斂性質不利。雖然越大的學習速率有較明顯的網路加權值修正量,可較快逼近誤差函數最小值,但容易造成誤差震盪的現象。學習速率過小則會造成收斂速度過慢。因此可採用變動的學習速率,在網路初始時可先採取較大的學習速率,隨著網路的訓練過程中逐漸減小的方式,一般適當的學習率約在0.6到0.8之間。若是採變動的學習速率則在每一組訓練循環完畢時將學習速率乘以一個小於1.0的係數,逐漸縮小學習速率,但可設一個下限值不可小於此數值。但仍有些問題的適當學習速率可能低到0.1以下。
6. 慣性項(Momentum):慣性量的加入主要是將每一代權重的更新趨近於前一代的方向,如此可改善學習過程中不穩定的震盪雜訊以及對平滑的目標值可放大搜尋方向達到收斂的效果。慣性因子太大或太小對網路的收斂性均不佳,因此慣性因子可採與學習速率相同的方式調整。
7. 批次學習(Batch Learning):標準的倒傳遞類神經網路的學習演算法是每載入一組訓練範例即更新一次權重值,稱為「逐例學習」。而批次學習則是將所有的訓練樣本載入後,將每一筆的修正量加總並做處理後再更新權重的改變量。
隨機擾動量:類神經網路的學習在於使誤差最小化,但最陡坡降法有會陷入局部最小值(local minimum)的情形,使得收斂的結果並不完善。為了解決此問題,可以結合科西機器(Cauchy machine)增加搜尋跳脫區域解的能力,如公式(1.12)。
w n +1=w n w+Ω (1.12)
Ω:隨機擾動量,[-0.001,+0.001]之間。
8. 權重初始化:權重初始值的範圍在[-2-1,+2-1]之間的隨機亂數,有較好的收斂效果。當權重範圍在[-p,p]中,將類神經網路的權重範圍設為[-d,d],d的公式如下(1.13)。
n:輸入層輸入的個數。
p:權重範圍,需為整數。
9. 正規化(Normalize):由於不同活化函數具有不同值域的範圍,若是輸入的值過大,將造成神經元輸出皆為活化函數的飽和值,未能感受到各筆資料的差異而無法完善的學習,因此可將輸入輸出配合不同的活化函數做正規化,使數值介於活化函數的定義域範圍內。
10. 處理單元飽和:活化函數不論是用雙彎曲函數或雙彎曲正切函數在自變數趨近於相當大的數時,函數微分值會趨近於零,使得網路無法發揮修正連結加權值的效果。為了避免處理單元飽和的問題,可在活化函數微分值加上一個小的數值。
本發明透過片段線性法實現類神經網路最常用的雙彎曲函數及雙彎曲正切函數硬體架構,提升網路的多樣性。並以環狀串列搭配高速管線設計方式及分段計算網路架構,將硬體陣列部分訊號共用,設計出可以讓使用者隨著問題改變網路種類的硬體架構,取代需要冗長計算的軟體。
2.1 硬體架構與原理
2.1.1 前向硬體架構
倒傳遞類神經網路和回饋式神經網路的架構皆為多層感知機架構,每一層運算皆有前後層的層級以及順序相關性。若是硬體也以層數設計的話,則邏輯元件會隨著網路架構增加,成本也會隨之加大。由於類神經網路的順序性,後一層的值必須等到前一層的值運算完畢後,才可進行運算。即使將各層級皆設計為擁有獨立的運算單元,對整體運算速度的增加有限,卻必須耗費倍增的邏輯元件。因此可將類神經網路前一層的資料,經過輸入匯流排傳送,將運算的結果利用記憶體儲存下來,下一層運算時,再將存放值置放於輸入匯流排上,減少硬體的使用量。
本發明採用先前技術之環狀串列架構為基礎,如圖十一所示。此架構可以減少邏輯元件的數目降低成本。前向運算是經由很多運算單元組成,運算單元越多所能計算的神經網路越龐大,但運算單元的數量往往會受到成本及硬體的限制,降低了實際應用上的可能性。因此本發明另採用分段計算的方式,當類神經網路硬體邏輯元件過多或成本過大無法合成時,可經由控制器的設計,將硬體的邏輯元件個數固定並善用記憶體的容量,以有限的神經元個數完成較大的類神經網路運算。
硬體神經網路初始化後,輸入層資料會從輸入匯流排傳入各運算單元內,與運算單元內記憶體中的權重值進行集成函數的運算,運算結果傳至活化函數的硬體區塊,完成活化函數及其微分的計算。運算完畢後,則需將移位訊號(shift)致能,將各個運算單元所計算的值逐一傳送到運算單元外部記憶體中儲存。然後將適才活化函數運算完畢的運算結果當成下一層級的輸入,經由資料匯流排,再進行上述相同的動作。如此重複的使用此架構,即可以完成三層、四層的類神經網路,圖十二為前向運算架構圖。
由於上述環狀串列架構中實際硬體的邏輯元件數目會影響到建立網路的大小,本發明採用分段計算的方式實現整個神經網路。圖十三為分段計算流程圖,假設硬體受限於某些實際的條件下,所能合成出的最大處理單元為2個,但需要運算的類神經網路為5個,則其運算方式為先將前面兩者運算完畢並存入記憶體後,再繼續運算其餘的神經元。
2.1.2 逆向硬體架構
逆向硬體架構主要分為四大區塊,分別為計算輸出層的δ區塊、隱藏層的δ區塊、計算Δw區塊以及更新權重的硬體區塊。前向運算會將所計算的活化函數以及微分後的結果分別儲存在記憶體內。在隱藏層的誤差運算上,由於運算的過程為乘加運算,與正向運算的概念雷同,只是不需經由活化函數的硬體區塊,因此本發明採用正向運算的硬體架構與平行處理的概念,除去正向架構中活化函數的部分完成隱藏層誤差計算的硬體。
當逆向運算開始時,首先會將目標值和經由前向運算所得到輸出層的值與其微分值傳至計算輸出層的δ區塊。在此區塊中,目標值與輸出層的計算結果相減後,並與微分值相乘,即可得到輸出層的差距量,δ。
輸出層的差距量運算完畢後,將繼續隱藏層差距量的運算。由於隱藏層的運算必須將輸出層的δ與處理單元的權重相乘後做累加,因此透過環狀串列的架構完成相乘累加的運算後,將結果與前向運算中各個隱藏層神經元的微分值傳至隱藏層的δ區塊,此區塊只需透過一個乘法器,計算兩者相乘後所得到的值之後,即可得到隱藏層的差距量。若是網路為四層的倒傳遞類神經網路,由於誤差量的運算方式相同,可利用同樣的架構與方法完成第二層隱藏層與第一層隱藏層之間的神經元差距量,不需額外再耗費邏輯元件建置該層的硬體區塊。
各個運算單元的差距量都運算完畢後,接著將利用Δw的區塊運算各個權重值的修正量。輸出層的差距量與隱藏層的差距量存放於同一佇列記憶體內。由於輸出層的差距量是最先被算出的,輸出層的δ會先被讀取出,因此輸出層與隱藏層間的Δw亦會先被計算出來。Δw區塊的輸入包含δ記憶體的輸出值、學習速率以及輸入匯流排。神經網路的架構中各個神經元具有一偏權值,因此Δw區塊中的輸入匯流排會在每次讀取δ記憶體中的值時,將偏權值的權重傳送至Δw區塊的輸入匯流排,接著再將前一層級的輸入傳送至Δw區塊的輸入匯流排,運算每個神經元偏權值權重以及連結加權值權重的修正量。同時並配合時序的控制將前一代資料的權重值與w的值傳至更新權重的硬體區塊,前一代的權重值會在此區塊內與Δw的值相加得到更新後的值,完成一次逆向運算,圖十四為逆向運算架構圖。
2.1.3 運算單元
本發明的前向運算以及逆向運算均使用環狀串列架構,而環狀串列即為將各個運算單元的結果互相串連之。運算單元內部架構主要為記憶體、乘法累加器、移位暫存器以及活化函數等四個部分。這四個部分皆為獨立的硬體區塊,採用高速管線設計方式將運算拆解為獨立運作,可大幅提高效能。
運算單元內部所包含的記憶體是用來儲存計算時所需的權重值,類神經網路必須對每一個輸入值進行加權的運算,因此在運算單元的內部必須設計一個乘法累加器。由於類神經網路的前向運算和逆向運算均包含層級的觀念,對於資料讀寫的順序相當重要,為了簡化控制器的設計並搭配學習過程中能夠以正確的順序讀出相對應的權重,運算單元內部設計具有一佇列(FIFO)架構的記憶體,僅需將寫入的順序加以控制,則讀取時的先後關係將與寫入時相同。每個運算單元中有額外的定址方式,用來將權重匯流排的資料寫入到各個運算單元裡面,即運算單元中記憶體的寫入訊號須與運算單元定址搭配,而其讀取訊號則因平行處理運算資料,故可以共用。由於環狀串列的架構是由運算單元串接而成,所以各個運算單元計算累加運算時是同時進行的。類神經網路在前向運算時,須透過一活化函數轉換輸入訊息,在設計上,每一個運算單元即代表一個神經元,因此運算單元內部各具有獨立的活化函數硬體區塊。活化函數硬體區塊主要分為兩大區塊,包含雙彎曲函數及其微分的區塊以及雙彎曲正切函數及其微分的區塊。資料透過輸入匯流排將輸入值傳至乘法累加器與運算單元中的記憶體做累加,並將累加後的值傳送至兩個活化函數的硬體區塊做運算。而每個運算單元內部具有一條移位的控制訊號,此訊號控制是否將目前運算單元計算的結果輸出到下一個運算單元。當資料輸入且在運算單元內計算完畢後,各個運算單元中的值則利用環狀串列架構,透過移位的方式,將資料傳到下一個運算單元。圖十五為運算單元訊號時序圖。
2.1.4 堆疊、佇列與隨位置存取記憶體
倒傳遞類神經網路與回饋式神經網路在運算的過程中需要存取資料以進行運算,且回饋式神經網路的回饋架構也必須透過將儲存在記憶體中的資料傳送到運算單元中進行運算以達成回饋的行為,因此記憶體的配置相當重要。系統的記憶體存取方式一般都搭配記憶體位址以進行儲存或是讀取,但為了簡化控制器的設計與資料的存放順序,本論文在權重資料儲存方式是採用堆疊(Stack)、佇列(FIFO)以及隨機存取記憶體等三種不同的硬體架構來儲存。而堆疊與佇列硬體架構訊號功能說明如下:
(1) clear:在堆疊架構中表示寫入位置回到最低位置,讀取位置回到最高位置;在佇列架構中則表示寫入與讀取位置都回到最低位置。
(2) hold:在堆疊與佇列架構中表示記錄目前記憶體位置。
(3) restart:此訊號需搭配hold訊號,在堆疊與佇列架構中表示將讀取位置回到先前hold所設定的位置。
(4) rd_addr:讀取資料的記憶體位址
2.1.5 數值系統
數位系統的運算原則都是用二進位數字系統來表示,資料的運算及處理也是必須使用二元性信號的二進位邏輯元件來實現。本發明採用32bits的二進位碼定點有號小數作為本架構的數值編碼方式,而Nios II微處理器小數型態則是採用IEEE 754格式的浮點小數,因此在Nios II下達指令以及網路建構參數時,會經由浮點轉定點轉換器進行數值轉換。如圖十六為定點小數表示圖,本發明的整數位數與小數位數可以依照使用者進行變更。
3.1 活化函數硬體架構
3.1.1 活化函數特性
本架構具有兩種不同的活化函數,其一為雙彎曲函數,另一個為雙彎曲正切函數。雙彎曲函數和雙彎曲正切函數皆具有對稱的性質,如圖十七、圖十八。故透過硬體設計得到右半邊函數後,利用減法器以及多工器的判斷,依照公式(1.14)和公式(1.15)求得左半邊函數。這樣的設計方式可以減少將近一半的邏輯元件使用量,如圖十九和圖二十。
3.1.2 片段線性法
片段線性法是採用Center Linear Approximation(CRI)演算法算出近似雙彎曲函數曲線,如表2所示。其中表內的x代表輸入值,q代表疊代的次數,代表內插的深度(Interpolation Depth)。經測試後,q為2時、設定為0.28094有最佳解。此演算法可算出的部分,其餘部分則利用對稱性質來實現,以減少邏輯元件的使用個數,其硬體架構如圖二十一所示。圖二十二為片段線性法的示意圖,從圖中可以看出片段線性法是採用內插法的方式實現非線性的雙彎曲函數。其原理為先找尋轉折點後,誤差會慢慢的增加,當誤差值達到一個上限時,會找尋新的轉折點。此硬體架構共需817個邏輯元件且須12個時脈得到輸出結果。
片段線性法虛擬碼如下所示:
3.1.3 片段線性法架構修改
q值為2的情形下,利用硬體區塊的重複性以簡化硬體架構。表3.2中片段線性演算法使用公式(1.16)需要一個加法器以及兩個移位暫存器。改使用公式(1.17)後,只需花費一個移位暫存器以及一個加法器,且比前者少一個時脈即可將結果算出。在q為1的第一次運算中,公式(1.18)需使用兩個加法器以及一個移位暫存器,由於g(x)初始值為0,故將公式(3.17)代入後得公式(1.19)。公式(1.19)不僅只需花費一個加法器以及一個移位暫存器,且可將變數值合併。
表3.2的架構是可以透過調整疊代次數q來增加準確度,然而疊代次數越多未必越精確,且也需要更多的運算時間。經測試結果發現疊代兩次是較為平衡的方法。本發明在固定疊代次數q為2的情況下,將公式(1.20)改為一儲存常數的暫存器。不僅可減少原公式所需的邏輯元件和運算時間之外,在Δ不需與第一次運算的數值相關的情形下,將第二次疊代時的公式(1.18)改為公式(1.21),更可以利用調整此常數來增加準確度,如圖二十三所示。此硬體架構僅需333個邏輯元件,且8個時脈即可得到輸出結果。
3.1.4 雙彎曲正切函數架構
雙彎曲正切函數與雙彎曲函數的圖形類似,所不同者在於兩者之間值域的範圍。圖二十四為片段線性法在疊代時g(x)以及h(x)的圖形。由圖二十五可知紅色的線代表g(x)以及h(x)取大者所繪出之圖形。從圖形可看出,片段線性法是一種以內插的方式,交錯而成的非線性圖形。硬體架構中常數的大小以及移位暫存器影響著圖二十四中三角形的角度,也影響著片段線性法所合成出的曲線函數圖形。
因此本發明利用前一小節所完成的片段線性法修改後的架構,調整架構中常數暫存器的數值以及移位暫存器來實現雙彎曲正切函數。雙彎曲正切函數值域在[-1,+1],對稱中心為0。公式(1.17)的0.5代表雙彎曲函數y軸的對稱中心。透過經驗法則調整其餘參數後,實現硬體的雙彎曲正切函數區塊,如圖二十六所示。此硬體架構共需317個邏輯元件,需要9個時脈可以得到輸出結果。
3.1.5 片段線性法相關參數
片段線性法的變數Δ代表演算法中的內差深度。每進行一次疊代運算時,移位暫存器會將Δ右移兩個位元完成除法運算,逐漸減小該數值。而本發明在前一小節中將片段線性法架構就q為2時做修改後,根據演算法架構中Δ影響著線段中截線部分的斜率,調整片段線性法架構修改後的Δ1、Δ2和移位暫存器使活化函數更精確。圖二十七為先前技術中的片段線性法實現圖,而圖二十八則為架構修改後的完成圖。如圖二十九所示,修改後的架構中,在兩次疊代具有各自獨立的Δ1和Δ2的情形下,誤差值較小。圖三十是片段線性法修改後的架構以及表3.2的參數所實現雙彎曲正切函數圖形,圖三十一為其誤差圖。
3.2 控制單元
控制單元是掌握整個系統運算,掌控整個系統的執行序。主要分為四大部分,其中包括權重順序的控制、運算單元位址的控制、目標值的控制以及整體系統流程的控制。控制器的設計方法以有限狀態機為基礎的設計模式。整體系統的控制器除了要控制分段運算,也要控制每個運算單元中活化函數區塊、累加器、平行學習架構、輸出層誤差計算和隱藏層誤差計算等。
3.2.1 權重記憶體管理單元
類神經網路在一次完整的訓練過程中,權重值運用的先後次序會根據網路所進行的步驟而有三種不同的順序。第一種為前向運算時權重值運用的順序,第二種為逆向運算時權重值的順序,第三種則是在更新權重值時的順序。因此本發明設計一個控制權重記憶體的控制器,將三種不同順序的權重位址儲存在記憶體內。儲存權重數值的記憶體會根據不同的情況讀取不同儲存位址的記憶體,即可得到不同的順序。而權重管理單元就是根據這三種不同的情形,控制權重記憶體的位址,改變權重值輸出的順序,簡化系統控制器的複雜度。
若網路架構為四層倒傳遞類神經網路,輸入層神經元個數1個、第一層隱藏層神經元個數2個、第二層隱藏層神經元個數3個、輸出層神經元個數4個,且硬體所能合成最大處理單元2個為例,如圖三十二所示。由於環狀串列架構具有平行特性的關係,當控制器對運算單元內的記憶體下讀取的指令時,所有的運算單元會同時將記憶體中第一個權重傳送出。如圖三十二、圖三十三中,當輸入層的神經元將資料傳送至環狀架構時,會同時將運算單元一記憶體中的w01、w11和運算單元二記憶體中的w02、w22讀取出,並與輸入進行運算。當隱藏層的資料經由活化函數的硬體區塊完成計算後,接著會將隱藏層的兩個神經元輸入,此時由於最大處理單元只有兩個,必須進行分段計算。因此會將運算單元一記憶體中的w13、w23、w33和運算單元二記憶體中的w14、w24、w44讀取出,並進行運算。接著重複讀取第一隱藏層的輸出值,並讀取運算單元一記憶體中的w15、w25、w55,由於運算單元讀取訊號相同,因此必須如圖三十三、圖三十四所示,運算單元二的記憶體中必須與運算單元一相同數量的權重值,如此才不會讀取到運算單元二記憶體後面的w37、w47、w57時,導致整體系統的錯亂。
第一種順序利用佇列記憶體的特性即可將權重依序輸出。當網路開始進行運算時會對所有的硬體初始化,接著權重控制區塊會開始運作,將第二、第三種情形的位址順序寫入到佇列記憶體中。
第二種順序是在類神經網路進行逆向運算中的情形。逆向運算的隱藏層誤差量會透過環狀串列的架構進行運算。此時可將輸出層視為輸入層,第二層隱藏層則視為第一層隱藏層,也就是將整個網路的架構反過來看。因此權重值就必須以w59、w58、w57、w56的順序置放於運算單元一的記憶體中,接著將w49、w48、w47、w46依序放至運算單元二的記憶體中。權重值根據網路初始時的輸入順序而有相對應的存放位址,如圖三十四所示。因此將權重值以記憶體位址30、26、22、18、29、25、21、17讀取出來即為第二種順序。由於逆向運算會採用到環狀串列的架構,如之前所述運算單元可能讀取到下一層運算時所需的權重值,故也必須考量到如圖三十三在每個運算單元的記憶體中補上各層計算時所需相同個數權重值的情形。
第三種情形是類神經網路在更新權重值的時候。由於倒傳遞演算法的更新方式是從網路架構最後面層級的權重往前更新,而更新權重值不需要利用到環狀串列架構,故不需考慮運算單元記憶體中補上各層計算時所需相同個數權重值的情形,因此將記憶體位址31、30、29、…、16、12、11、…等順序儲存至佇列中,使得權重值以倒序的方式讀取出來為第三種順序。
以下是權重記憶體管理單元重要訊號說明:
1. LA_FIFO_clear:此訊號表示將儲存第二種順序的記憶體讀寫位址都回到最低位置。
2. UA_FIFO_clear:此訊號表示將儲存第三種順序的記憶體讀寫位址都回到最低。
3. Initialize:此訊號表示當所有網路的參數設定完畢,初始化時將根據網路的種類、大小以及最大處理單元個數的情形,開始運算管理權重擺放順序的位址。
4. Done:當權重管理單元初始化完畢後,此訊號會產生高電位,方便控制器進行控制。
5. Rd_opcode:當此訊號為”00”時,表示權重值從記憶體輸出的順序為第一種,為”01”時則為第二種順序,”10”時則為網路正在進行更新權重時的第三種順序。
權重管理單元進行第二種情形處理時的程式片段如表3.3所示,而各層間連結權重記憶體位址的計算方式相同,但每次運算時根據網路各層前後關係,修改Forward_Layer_Node、Next_Layer_Node、Next_Layer_Mod以及Address的暫存器,即可計算各層權重記憶體在第二種情形時所需輸出的位址順序。
3.2.2 位址管理單元
環狀串列架構是由許多運算單元串接而成,每個運算單元為一個神經元,各個運算單元具有其獨立的地址。由於權重匯流排和輸入匯流排與每個運算單元相連接,當權重匯流排上的權重值要寫入到某個運算單元內時,會根據地址匯流排上的地址,決定將權重值寫入至指定運算單元的記憶體內。而位址管理單元就是管理運算單元地址的控制器,會根據網路的種類以及可合成最大運算單元的大小,控制運算單元位址的編號,減少系統控制器的負擔。
當網路在使用環狀串列進行運算時,由於根據網路的種類、網路各層神經元個數以及最大處理單元的不同,權重值必須存放於不同的處理單元中。若要把w01、w11寫入到運算單元的記憶體中時,必須如圖三十五所示。當權重w01、w11寫入到權重匯流排上時,且地址匯流排上的信號為1時,便會將權重寫入至第一個運算單元內。接著便將權重w02、w22寫入到權重匯流排,並將地址匯流排調整為2,如圖三十六所示。將所有的權重值依照圖三十七編排,並配合上一小節的權重控制器,即可將所有的權重值儲存在正確的運算單元內部。為了簡化控制器,本發明將地址匯流排的控制器獨立分出。
位址管理單元的程式片段如表3.4所示,而各層運算單元位址的計算方式相同,但每次運算時根據網路各層前後關係,修改Forward_Layer_Node、Next_Layer_Node以及Next_Layer_Mod的暫存器,即可計算各層運算單元位址的順序。
3.2.3 目標值管理單元
由於逆向運算時,倒傳遞學習演算法是先從輸出層的最後一個神經元開始運算。因此目標值若使用佇列記憶體來儲存,則在輸入目標值時必須從輸出層最後一個神經元的目標值開始輸入。由於目標值是存在佇列記憶體中,當網路有多組資料需要訓練時,就必須要從第一組的最後一個資料開始輸入到佇列記憶體中,而訓練資料的輸入是從第一組的第一筆開始,如此方式造成目標值與網路訓練資料的輸入順序相反。為了解決這樣的情況,本發明設計一個目標值的控制器,可使輸入時只須照著第一組第一個神經元、第一組第二個神經元的順序輸入,而控制器會自行判斷該如何寫入至目標值的佇列記憶體中。
若網路輸出層具有四個神經元,而共有三組訓練資料,目標值輸入順序如圖二十六所示。根據倒傳遞學習演算法中目標值將會從第一組中的最後一筆位址3所存放的t14開始運算,接著是位址2、位址1,最後是位址0的目標值。第一組訓練完畢後,接著並換到第二組的最後一筆位址7所存放的t24開始進行第二組的訓練。圖二十七所示為目標值演算法,首先會先將目標值總輸入筆數儲存在暫存器,接著寫入組別從第一組開始,寫入神經元個數亦從第一個計算起。將第一組資料所存放最後一個神經元的記憶體位址寫入至WriteData,當第一組中所有神經元的位址寫入完畢後則將寫入組別換至下一組,直到所有的位址都已從組別由後往前的順序寫入到佇列記憶體中。
以下為目標值管理單元的虛擬碼:
3.2.4 系統控制單元
整個類神經系統的運算是由系統的控制單元掌控。所有的數值都是放入記憶體中,控制器的目的是要配合時序將所儲存在記憶體中的資料寫入或讀取。而控制器的設計方法是以有限狀態機為基礎的設計模式,如圖三十九所示。除了對儲存的記憶體存取外,控制器也要控制整個環狀串列的架構、分段計算、累加器、多工器訊號選擇線以及控制前三小節的控制單元等。
控制器的主要流程及狀態如圖四十所示。流程圖中分成三大區塊,其中初始化產生起始訊號,權重、位址和目標值控制器在接收到起使訊號後,便會依照網路的種類以及大小進行計算。等待系統接受到權重等其管理單元的完成訊號後,便依照權重等管理單元的控制將資料依序擺設到佇列記憶體中,完成系統運作前的準備。
當系統完成準備後便開始進行前向運算的部分。首先控制器會根據第一隱藏層活化函數的類型,調整多工器的訊號選擇線。然後將訓練資料從輸入佇列記憶體中傳送至環狀架構進行運算單元陣列運算。若為回饋式神經網路則在訓練資料寫入後便將承接層的資料也傳送到環狀架構中,運算出第一隱藏層神經元的數值儲存下來後,判斷網路大小是否需要進行分段計算,直到完成第一層隱藏層的運算。根據隱藏層的層數,調整多工器的訊號選擇線。隱藏層及輸出層的運算,都是將前一層利用環狀串列中經過活化函數區塊計算出來後儲存在記憶體中的值,再傳回環狀串列架構中,完成整個前向運算。
系統進行完前向運算後,會根據此時是訓練網路或者是測試網路決定後續的動作。若為網路訓練,則控制器將繼續進行逆向運算;若為網路回想,則將輸出層所得到的數值傳送到結果端輸出資料。逆向運算開始時,控制器會利用目標值控制單元所輸出的數值與前向運算輸出層所得到的值進行隱藏層誤差量的運算,接著透過環狀串列的架構與隱藏層誤差量的區塊進行得到隱藏層誤差量。誤差量都計算完畢後,控制器將誤差量、學習速率以及各神經元前一層級的輸入值,透過權重管理單元配合Δw區塊運算出來的時間,即可得到一組新的權重。最後在判斷訓練資料是否都訓練完畢,且達到設定的疊代次數,完成整個控制器對系統的控制。
環狀串列的架構與隱藏層誤差量的區塊進行得到隱藏層誤差量。誤差量都計算完畢後,控制器將誤差量、學習速率以及各神經元前一層級的輸入值,透過權重管理單元配合Δw區塊運算出來的時間,即可得到一組新的權重。最後在判斷訓練資料是否都訓練完畢,且達到設定的疊代次數,完成整個控制器對系統的控制。
3.3 軟體規劃
本系統的軟體規劃方面,是經由微處理器下達指令至匯流排,經由Avalon匯流排依據暫存區塊的設計,對硬體下達參數命令,如:網路種類、網路大小、活化函數的選擇、訓練資料、權重資料、目標值…等。此設計的好處是當要修改網路的類型、大小時,直接在軟體界面上即可進行設定,不需要對硬體重新設定與編譯。圖四十一為本發明所使用的系統及Nios II的架構圖。由於硬體運算採用定點小數,而Nios II軟體使用的小數型態為以IEEE754格式的浮點小數。為了降低處理器的負擔及增快軟體的速度,因此將浮點轉換定點之轉換器置放於在硬體端。最後當硬體運算完畢後,利用存放資料的定點數位址內容,以有號小數的格式進行轉換,利用二進制特性,左移小數位元數,即可換算得到十進制的浮點數,如此可以減少定點轉換浮點的轉換器,且提高系統的時脈。
圖四十二為軟體規劃流程圖。系統正常運作除了硬體設計外,必須靠軟體下達參數。首先必須由運算碼下達硬體重置的指令,接著定義網路種類、各層活化函數類型、網路架構、網路測試或訓練、權重資料、目標資料、輸入資料、學習速率、訓練迴圈次數,當網路的設定以及資料均給定完畢後,只需下達開始的命令,直到硬體經由Avalon介面回覆軟體運算完成後,即可執行讀取結果的指令。表3.5則是受控端硬體與主控端軟體之間溝通的訊號。
本發明分別以三層以及四層倒傳遞類神經網路進行正弦函數曲線擬合、兩種不同的回饋式神經網路做電池殘餘電量的預測,並且採用分段計算硬體訓練的及未採用分段計算的結果和誤差。而在訓練時間上則是以Nios II下達指令使網路開始訓練到接受回傳訓練完成指令總耗費的時間,與純軟體(MATLAB)做比較。此測試環境作業系統採用的是Windows XP SP3,CPU為Intel CoreTM2 Duo Processor E8400(6M Cache,3.00 GHz,1333 MHz FSB),系統記憶體則為DDRII 2GB。而硬體則是採用Quartus II 9.0(32-Bit)及Nios II 9.0 IDE,訊號模擬則是使用ModelSim-Altera 6.4a(Quartus II 9.0)Starter Edition。本發明所定義的訓練樣本誤差以及測試樣本誤差則是採用均方根誤差(Root Mean Square Error)方式計算,如式(4.1)。
4.1 開發系統
4.1.1 開發軟體
本發明採用超高速積體電路硬體描述語言(Very High Speed Integrated Circuit Hardware Description Language,VHDL)。
4.1.2 開發硬體元件
使用可程式邏輯閘陣列(Field Programmable Gate Array,FPGA),並以Altera的FPGA發展平台Stratix II EP2S60F1020C4進行硬體的開發。系統的工作時脈為100MHz,並透過Avalon匯流排連結到NIOS II嵌入式處理器與使用者邏輯(User Logic)以及其它周邊(I/O)進行系統驗證即實驗數據分析。
4.1.3 Nios II嵌入式處理器
Nios II嵌入式處理器為Altera公司研發的第二代處理器,其為一種軟體核心(Soft-Core)32位元的精簡指令集(Reduced Instruction Set Computing,RISC)處理器。透過Quartus軟體中的SOPC(System On a Programming Chip)Builder開發系統,將FPGA內部邏輯元件(Logic Element,LE)合成產生的Nios II處理器,搭配使用者自行設計的硬體元件、記憶體單元、裝置介面以及各種IP等等,合成出SOC(System On chip)系統,並可燒錄到可程式規劃晶片中。Nios II基於Eclipse的Nios II集成開發環境(Integrated Development Environment,IDE),支援客製化指令(Custom Instruction)並具有分離的程式及資料匯流排,具有大幅度的靈活性,使用者可以在多種系統設置中進行選擇,達到平衡效能、成本的目標。
本發明Nios II負責設定類神經網路的相關參數以及訓練樣本,運算過程由硬體的控制器負責,利用Nios II內建的Avalon匯流排將軟硬體連結。Nios II硬體架構,如圖四十三所示。
4.1.4 Avalon匯流排
Nios II採用Avalon匯流排,主要的功能是用於連結系統處理器與週邊介面,其描述了主從式架構間連接埠的連接關係,以及元件間通訊的時序關係。如圖四十四所示。Avalon匯流排具有以下特點:
1. 時脈同步:在Avalon Bus上的訊號都與Avalon clock同步,其優點是可以簡化時序控制,不需要交握(Handshaking)及回覆收到(Acknowledge)機制,也因此可以避免時序上的限制方便高速裝置的傳輸。
2. 訊號分開:在Avalon Bus上的控制訊號、資料訊號、位置訊號採用分開的通訊埠,其特點為可以簡化傳輸介面的設計。
3. 動態寬度:在Avalon Bus上,Master與Slave之間可以傳輸8、16、32位元的資料,其特點為在設計上具有相當大的靈活度。
4. 仲裁技術:在Avalon Bus上,Master與Slave之間可同時使用匯流排傳輸,其特點為減少頻寬限制並且可以處理多個訊號。
5. 記憶體映射(Memory-mapped):在Avalon Bus上可利用記憶體映射的方式對受控端進行控制,其特點為Chipselect訊號可以忽略所有外部訊號。
Avalon Bus上主控端對受控端的寫入與讀取訊號,如圖四十五及圖四十六所示。其中Chipselect是用來致能想要進行存取的受控端,由於Avalon使用記憶體映射方式對受控端資料做存取動作,所以除了Write訊號及Read訊號用來控制資料的讀取及寫入外,仍須透過Address Bus對受控端內部資料做存取的動作。
4.2 實驗結果
4.2.1 曲線擬合
為了驗證本發明所提出之系統架構是否正確以及精確度是否精準,本實驗採用正弦函數曲線擬合問題來進行實驗,實驗的參數如表4.1所示。本實驗採用1*5*1的網路架構,訓練擬和一個正弦函數變化的問題,方程式為式(4.1)。此實驗的權重為隨機亂數取[-0.5,0.5]間,實驗結果如圖四十七~圖四十九,圖四十七中藍色代表相同權重下硬體訓練結果,綠色代表軟體訓練結果,紅色則為實際曲線圖。實驗結果分析如表4.2。
4.2.2 函式逼近
本實驗為使用本發明架構中的四層倒傳遞類神經網路擬合各種不同函式的問題,方程式為式(4.2)~(4.5)。本實驗的訓練資料的範圍是在[0~6.28]採隨機分佈,測試的資料則為在這期間採均勻分布,軟硬體各個權重值相同的情形下,其他所設定的參數如表4.3。實驗結果如圖五十~五十二,藍色表示公式一、紅色為公式二、綠色表示公式三而紫色表示公式四。表4.4為各個不同系統實驗後效能與精準度的分析表。
4.2.3 電池殘餘電量預測
本實驗為使用時間延遲神經網路以及回饋式神經網路,以加百欲公司實際量測所得到的電池放電資料進行殘餘電量的預測。此資料是電池在40℃持續以2.4安培的電流放電所記錄而得的資料。本實驗將測量所得的電壓、電流以及電池溫度進行不同的處理如公式(4.6)~(4.8),如同正規化的方式讓輸入的數值在[0,1]間,如圖五十四至五十六所示,左邊為原始資料,右邊為經過公式處理後的資料。其他所設定的參數如表4.5及表4.6所示。實驗結果如圖五十七至圖六十所示。圖五十七和圖五十九分別為兩個網路所預測出的結果與實際資料的情形,圖中的藍色為預測出的結果曲線,紅色為實際放電曲線。表4.7為兩種不同的網路實驗後效能與精準度的分析表。
v=v÷13 (4.6)
i=(i+2.5)÷3 (4.7)
t=t÷56 (4.8)
表4.6 電池殘餘電量實驗回饋式神經網路相關參數設定
上列詳細說明係針對本發明之一可行實施例之具體說明,惟該實施例並非用以限制本發明之專利範圍,凡未脫離本發明技藝精神所為之等效實施或變更,均應包含於本案之專利範圍中。
綜上所述,本案不但在空間型態上確屬創新,並能較習用物品增進上述多項功效,應已充分符合新穎性及進步性之法定發明專利要件,爰依法提出申請,懇請 貴局核准本件發明專利申請案,以勵發明,至感德便。
圖一為CNAPS架構圖;
圖二為二維脈動陣列架構運算示意圖;
圖三為倒傳遞類神經網路架構圖;
圖四為對稱硬限函數圖;
圖五為雙彎曲函數圖;
圖六為雙彎曲正切函數圖;
圖七為線性函數圖;
圖八為時間延遲類神經網路示意圖;
圖九為回饋式類神經網路架構圖;
圖十為正向運算單元模型圖;
圖十一為環狀架構示意圖;
圖十二為前向運算架構圖;
圖十三為分段計算流程圖;
圖十四為逆向運算架構圖;
圖十五為運算單元訊號時序圖;
圖十六為定點小數表示圖;
圖十七為雙曲線函數對稱性值圖;
圖十八為雙彎曲正切函數對稱性值圖;
圖十九為雙彎曲函數對稱性值硬體架構圖;
圖二十為雙彎曲正切函數對稱性值硬體架構圖;
圖二十一為片段線性法硬體架構圖;
圖二十二為片段線性法示意圖;
圖二十三為片段線性法修改後架構圖;
圖二十四為片段線性法疊代示意圖(1);
圖二十五為片段線性法疊代示意圖(2);
圖二十六為雙彎曲正切函數架構圖;
圖二十七為片段線性法原始圖;
圖二十八為修改後片段線性法圖;
圖二十九為片段線性法誤差比較圖;
圖三十為PWL雙彎曲正切函數圖;
圖三十一為PWL雙彎曲正切函數誤差圖;
圖三十二為倒傳遞類神經網路1-2-3-4架構圖;
圖三十三為運算單元記憶體補值圖;
圖三十四為權重記憶體資料配置圖;
圖三十五為權重值儲存圖(1);
圖三十六為權重值儲存圖(2);
圖三十七為運算單元搭配地址示意圖;
圖三十八為目標值示意圖;
圖三十九為控制單元有限狀態機圖;
圖四十為控制單元流程圖;
圖四十一為硬體及Nios II架構圖;
圖四十二為軟體規劃流程圖;
圖四十三為Nios II嵌入式處理器硬體架構圖;
圖四十四為Avalon架構圖;
圖四十五為Avalon寫入訊號圖;
圖四十六為Avalon讀取訊號圖;
圖四十七為正弦函數曲線擬合實驗透過類神經網路輸出訓練結果圖;
圖四十八為正弦函數實際曲線與軟體及硬體擬合曲線對照圖;
圖四十九為正弦函數曲線誤差分析圖;
圖五十為函式逼近實驗測試資料透過不需分段硬體神經網路輸出結果圖;
圖五十一為函式逼近實驗硬體測試資料誤差分析圖;
圖五十二為函式逼近實驗測試資料透過軟體類神經網路輸出結果圖;
圖五十三為函式逼近實驗軟體及硬體相同權重下測試資料誤差分析圖;
圖五十四為電池電壓原始圖形與變化後輸入圖;
圖五十五為電池電流原始圖形與變化後輸入圖;
圖五十六為電池溫度原始圖形與變化後輸入圖;
圖五十七為以TDNN預測電池放電曲線結果比較圖;
圖五十八為以TDNN預測電池放電曲線誤差結果圖;
圖五十九為以回饋式神經網路預測電池放電曲線結果比較圖;
圖六十為以回饋式神經網路預測電池放電曲線誤差結果圖;

Claims (10)

  1. 一種具彈性之高速硬體倒傳遞及回饋型類神經網路系統,包含:複數個硬體神經運算單元,該些硬體神經運算單元係串列連接;一匯流排組;一記憶單元;以及一控制單元,該控制單元依據一類神經網路模式以判斷執行一分段作業,該類神經網路模式係包含一多層類神經運算單元網路,該分段作業係依據該類神經網路模式之類型以及層數,來判斷所需之運算類神經網路單元之數量,並於所需之該運算類神經網路單元之數量多於該些硬體神經運算單元之數量即透過該匯流排組來彈性配置該些硬體神經運算單元以進行分段運算,並把由該等硬體神經運算單元運算完畢之該運算神經單元之結果存入該記憶單元,以虛擬替代所缺少之該運算類神經網路單元,據以等效合成該多層類神經運算單元網路所需之該運算類神經網路單元之數量。
  2. 如請求項1所述之類神經網路系統,其中該類神經網路模式包含三層倒傳遞類神經網路模式、四層倒傳遞類神經網路模式、標準回饋式類神經網路模式或回饋權重值可修正之回饋式類神經網路模式其中之一,或擇二以上之組合。
  3. 如請求項1所述之類神經網路系統,其中該分段作業係將一輸入層資料經由該匯流排組傳入各該硬體神經運算單元,各該硬體神經運算單元更將該輸入層資料與內含之權重值進行一集成函數運算,該集成函數運算更包含一活化函數運算以及一微分運算,該分段作業 於完成該集成函數運即把各該硬體神經運算單元之運算結果儲存於該記憶單元,並又將各該硬體神經運算單元之運結果作為該多層類神經運算單元網路下一層級之輸入,以茲合成出該類神經網路模式設定之該多層類神經運算單元網路。
  4. 如請求項1所述之類神經網路系統,其中該類神經網路模式之運算模式更包含一前向運算模式、一逆向運算模式、一更新權重運算模式其中之一、或擇二以上之組合,以等效合成該多層類神經運算單元網路;其中,該前向運算模式係將該等權重值依據輸出,並在開始運算時對硬體進行初始化設定;其中,該逆向運算模式係對該多層類神經運算單元網路進行逆向運算;其中,該更新權重運算模式係提供該多層類神經運算單元網路進行權重更新。
  5. 如請求項4所述之類神經網路系統,其中該控制單元更包含一權重記憶體管理單元,該權重記憶體管理單元更包含複數個權重值,該控制單元更依據該等權重值配置特定之該硬體神經運算單元,以形成所需之該運算模式。
  6. 如請求項5所述之類神經網路系統,其中該控制單元更包含一位址管理單元以及一目標值管理單元,該位址管理單元係提供該等硬體神經運算單元之存取位址,以讓該控制單元依各該硬體神經運算單元之該存取位址進行控制;該目標值管理單元係配置複數個目標值 之存取順序。
  7. 如請求項6所述之類神經網路系統,其中該控制單元更包含一系統控制單元,該系統控制單元係透過多工器控制該匯流排組、該記憶單元、以及該等硬體神經運算單元。
  8. 如請求項7所述之類神經網路系統,其中該系統控制單元更於進行該前向運算模式即根據該多層類神經運算單元網路之第一隱藏層活化函數之類型調整該多工器,以把訓練資料從輸入佇列記憶體中傳送至該等硬體神經運算單元進行運算。
  9. 如請求項8所述之類神經網路系統,其中該系統控制單元更於執行網路訓練動作即進行逆向運算模式,並將該目標值控制單元所輸出的數值與該前向運算輸出層所得到的值進行隱藏層誤差量之運算,接著透過隱藏層誤差量的區塊進行得到隱藏層誤差量,並於誤差量都計算完畢後,再將誤差量、學習速率以及各該運算類神經網路單元前一層級的輸入值,透過該權重管理單元取得一組新的權重,並判斷訓練資料是否都訓練完畢,且達到設定的疊代次數。
  10. 如請求項8所述之類神經網路系統,其中該系統控制單元更於執行網路回想動作即將該多層類神經運算單元網路之輸出層所得到的數值傳送到結果端輸出資料。
TW100101585A 2011-01-17 2011-01-17 Resilient high - speed hardware reverse transfer and feedback type neural network system TWI525558B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW100101585A TWI525558B (zh) 2011-01-17 2011-01-17 Resilient high - speed hardware reverse transfer and feedback type neural network system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW100101585A TWI525558B (zh) 2011-01-17 2011-01-17 Resilient high - speed hardware reverse transfer and feedback type neural network system

Publications (2)

Publication Number Publication Date
TW201232429A TW201232429A (en) 2012-08-01
TWI525558B true TWI525558B (zh) 2016-03-11

Family

ID=47069602

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100101585A TWI525558B (zh) 2011-01-17 2011-01-17 Resilient high - speed hardware reverse transfer and feedback type neural network system

Country Status (1)

Country Link
TW (1) TWI525558B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10438117B1 (en) 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US9805303B2 (en) 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10650303B2 (en) 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
US11068775B2 (en) * 2017-03-29 2021-07-20 British Cayman Islands Intelligo Technology Inc. Processing apparatus and method for artificial neuron
US10019668B1 (en) * 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
JP7229686B2 (ja) * 2017-10-06 2023-02-28 キヤノン株式会社 制御装置、リソグラフィ装置、測定装置、加工装置、平坦化装置及び物品製造方法
TWI684141B (zh) * 2017-10-12 2020-02-01 英屬開曼群島商意騰科技股份有限公司 人工神經元中以非零封包加速乘法運算的裝置及方法
US10601960B2 (en) 2018-02-14 2020-03-24 Eingot Llc Zero-knowledge environment based networking engine
CN110673824B (zh) * 2018-07-03 2022-08-19 赛灵思公司 矩阵向量乘电路以及循环神经网络硬件加速器

Also Published As

Publication number Publication date
TW201232429A (en) 2012-08-01

Similar Documents

Publication Publication Date Title
TWI525558B (zh) Resilient high - speed hardware reverse transfer and feedback type neural network system
US20240118892A1 (en) Apparatuses, methods, and systems for neural networks
TW201331855A (zh) 具自由回饋節點的高速硬體倒傳遞及回饋型類神經網路
CN111542826A (zh) 支持模拟协处理器的数字架构
US20190042909A1 (en) Reconfigurable neuro-synaptic cores for spiking neural network
Bank-Tavakoli et al. Polar: A pipelined/overlapped fpga-based lstm accelerator
EP2122542A1 (en) Architecture, system and method for artificial neural network implementation
TW202143067A (zh) 用於記憶體內運算的可縮擴陣列架構
TWI417797B (zh) A Parallel Learning Architecture and Its Method for Transferred Neural Network
CN111105023B (zh) 数据流重构方法及可重构数据流处理器
Savich et al. A scalable pipelined architecture for real-time computation of MLP-BP neural networks
Jain et al. Neural network accelerator design with resistive crossbars: Opportunities and challenges
Mikaitis et al. Approximate fixed-point elementary function accelerator for the SpiNNaker-2 neuromorphic chip
Klein et al. Alpine: Analog in-memory acceleration with tight processor integration for deep learning
Geng et al. CQNN: a CGRA-based QNN framework
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
Santos et al. Artificial neural network acceleration on FPGA using custom instruction
Karadeniz et al. TALIPOT: Energy-Efficient DNN Booster Employing Hybrid Bit Parallel-Serial Processing in MSB-First Fashion
Su et al. Processing element architecture design for deep reinforcement learning with flexible block floating point exploiting signal statistics
Wu et al. Special session: When dataflows converge: Reconfigurable and approximate computing for emerging neural networks
Dey et al. An application specific processor architecture with 3D integration for recurrent neural networks
WO2020008643A1 (ja) データ処理装置、データ処理回路およびデータ処理方法
Huang et al. A generic FPGA-based hardware architecture for recursive least mean p-power extreme learning machine
Jarrah et al. Optimized parallel architecture of evolutionary neural network for mass spectrometry data processing
Kang et al. PROMISE: A DIMA-Based Accelerator

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees