智能安全鍵盤軟硬件完整方案
關于 delta 規(guī)則
本文引用地址:http://www.butianyuan.cn/article/265780.htmdelta 規(guī)則是基于梯度降落這樣一種思路的。在權系數的調整中,神經網絡將會找到一種將誤差減少到最小的權系數的分配方式。
將我們的網絡限制為沒有隱藏節(jié)點,但是可能會有不止一個的輸出節(jié)點,設p是一組學習中的一個元素,t(p,n)是相應的輸出節(jié)點n的目標。設y(p,n)由以上提到的squash函數s決定,這里a(p,n)是與p相關的n的激活函數,或者用(p,n)=s(a(p,n))表示為與p相關的節(jié)點n的squash過的激活函數。為網絡設定權系數(每個Wi),也為每個p和n建立t(p,n)與y(p,n)的差分,這就意味著為每個p設定了網絡全部的誤差。因此對于每組權系數來說有一個平均誤差。但是delta規(guī)則取決于求平均值方法的精確度以及誤差。對于每個Wi,平均誤差定義如下:
sum = 0
FOR p = 1 TO M: # M is number of training vectors
FOR n = 1 TO N: # N is number of output nodes
sum = sum + (1/2 * (t(p,n)-y(p,n))^2)
average = 1/M * sum
delta規(guī)則就是依據這個誤差的定義來定義的。因為誤差是依據那些學習向量來說明的,delta規(guī)則是一種獲取一個特殊的權系數集以及一個特殊的向量的算法。而改變權系數將會使神經網絡的誤差最小化。任何Wi發(fā)生的變化都如下所示:alpha*s'(a(p,n))*(t(p,n)-y(p,n))*X(p,i,n)。
X(p,i,n)是輸入到節(jié)點n的p中的第i個元素,alpha是已知的學習率。最后s'(a(p,n))是與p相關的第n個節(jié)點激活的squashing函數的變化(派生)率,這就是delta規(guī)則,并且當alpha非常小的時候,權系數向量接近某個將誤差最小化的向量。用于權系數調節(jié)的基于delta規(guī)則的算法就是如此。
梯度降落(直到誤差小到適當的程度為止)如下:
step 1: for each training vector, p, find a(p)
step 2: for each i, change Wi by:
alpha * s'(a(p,n)) * (t(p,n)-y(p,n)) * X(p,i,n)
delta規(guī)則算法總是在權系數上調整,而且這是建立在相對輸出的激活方式上,不一定適用于存在隱藏節(jié)點的網絡。
反向傳播
反向傳播這一算法把支持delta規(guī)則的分析擴展到了帶有隱藏節(jié)點的神經網絡。當輸出節(jié)點從隱藏節(jié)點獲得輸入,網絡發(fā)現出現了誤差,權系數的調整可以通過一個算法來找出整個誤差是由多少不同的節(jié)點造成的,具體方法如下:
![“代碼識別”反向傳播的神經網絡](http://editerupload.eepw.com.cn/201411/369159cd39a5925029ced6f03a76a46b.jpg)
“代碼識別”反向傳播的神經網絡
反向傳播算法同樣來源于梯度降落原理,在權系數調整分析中的唯一不同是涉及到t(p,n)與y(p,n)的差分。通常來說Wi的改變在于:
alpha * s'(a(p,n)) * d(n) * X(p,i,n)
其中d(n)是隱藏節(jié)點n的函數。一方面,n影響輸出節(jié)點越多,n造成網絡整體的誤差也越多。另一方面,如果輸出節(jié)點影響網絡整體的誤差越少,n對輸出節(jié)點的影響也相應減少。這里d(j)是對網絡的整體誤差的基值,W(n,j)是n對j造成的影響,d(j)*W(n,j)是這兩種影響的總和。但是n幾乎總是影響多個輸出節(jié)點,也許會影響每一個輸出結點,這樣,d(n)可以表示為:SUM(d(j)*W(n,j))
這里j是一個從n獲得輸入的輸出節(jié)點,聯系起來,我們就得到了一個學習規(guī)則。
第1部分:在隱藏節(jié)點n和輸出節(jié)點j之間權系數改變,如下所示:
alpha * s'(a(p,n))*(t(p,n) - y(p,n)) * X(p,n,j)
第2部分:在輸入節(jié)點i和輸出節(jié)點n之間權系數改變,如下所示:
alpha * s'(a(p,n)) * sum(d(j) * W(n,j)) * X(p,i,n)
這里每個從n接收輸入的輸出節(jié)點j都不同。關于反向傳播算法的基本情況大致如此。
將Wi初始化為小的隨機值。
使誤差小到適當的程度要遵循的步驟如下:
第1步:輸入學習向量;
第2步:計算隱藏節(jié)點的輸出;
第3步:在第2步的基礎上計算輸出節(jié)點的輸出;
第4步:計算第3步所得的結果和期望值之間的差;
第5步:把第4步的結果填入學習規(guī)則的第1部分;
第6步:對于每個隱藏節(jié)點n,計算d(n);
第7步:把第6步的結果填入學習規(guī)則的第2部分。
通常把第1步到第3步稱為正向傳播,把第4步到第7步稱為反向傳播。
至此,我們已經成功地通過神經網絡算法對用戶需要分類的術語示例進行了正向學習,對用戶需要驗證的數據進行了識別,并且對經過驗證的數據進行了反向傳播學習。
(二)實現原理
使用Xilinx Spartan 3E Starter-kit的開發(fā)板開發(fā)應用程序的過程大致分為兩部分——硬件和軟件。
?、庇布糠?。借助Xilinx Platform Studio 9.1i with SP2(一下簡稱為XPS)良好的界面和易用性,我們借助其自帶的IP核實現大部分開發(fā)板上設備的驅動,但是由于我們的項目要用到PS/2鍵盤、A/D轉換器以及CC2420射頻板等相應的IP核并沒有附帶在XPS中的設備,因此我們正在完成這些設備的IP核的設計,以便搭起我們所需要的硬件平臺。
⒉軟件部分。通過XPS中附帶的Xilinx Platform Studio SDK(以下簡稱為XPSSDK)組件,我們使用C語言完成我們的項目的核心部分的設計。XPSSDK的外殼實際上使用的是開源軟件Eclipse,其友好的界面可以極大方便我們的項目的開發(fā)。軟件核心部分分為信號處理模塊和密碼處理模塊。其中,信號處理模塊采用神經網絡算法,密碼處理模塊采用混沌算法。
?、判盘柼幚砟K
信號采集部分主要采集三個系數:按鍵時間長短、按鍵時間間隔和力感模擬信號。其中前兩個系數可以通過按鍵產生的通碼和斷碼得到(每個通碼和下一個斷碼之間構成一個按鍵時間長短,每個斷碼與下一個通碼之間構成一個按鍵時間間隔),力感模擬信號可以通過綁定在每個按鍵下面的力度傳感器采集到。
若用TH(i)表示第i個鍵按下的持續(xù)時間(Hold-time,即按鍵時間長短),則TH(i)=Trelease(i) -Tpress(i),Tpress(i)表示第i個鍵的按下時刻,Trelease(i)表示第i個鍵抬起的時刻。令TL(i,i+1)表示連續(xù)敲擊第i個鍵和第i+1個鍵的時間間隔。則TL(i,i+1)=Tpress(i+1) -Trelease(i)。對于我們采集到的力感系數,每按鍵一次產生一個相關力度模擬信號,經Spartan 3E開發(fā)板上的A/D轉換器將其轉化為數字信號,得到相應的力感值TM(i)。若用戶口令由n個字符組成,則最后我們得到一個3n-1維的信號采集特征向量[TH(1), TM(1),TL(1,2),TH(2), TM(2),TL(2,3),TH(3), TM(3),……,TL(n-1,n),TH(n) , TM(n)]。
然后我們將這些特征向量作為BP神經網絡的輸入層神經元,使用BP算法通過一邊向后傳播誤差,一邊修正誤差的方法來不斷調節(jié)網絡參數(權值或閾值),以實現或逼近所希望的輸入輸出映射關系,最后得以對合法用戶的身份進行辨別。
DIY機械鍵盤相關社區(qū):機械鍵盤DIY
評論