新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 智能安全键盘软硬件完整方案

智能安全键盘软硬件完整方案

作者:时间:2014-11-23来源:网络收藏

  关于 规则

本文引用地址:http://www.eepw.com.cn/article/265780.htm

   规则是基于梯度降落这样一种思路的。在权系数的调整中,神经网络将会找到一种将误差减少到最小的权系数的分配方式。

  将我们的网络限制为没有隐藏节点,但是可能会有不止一个的输出节点,设p是一组学习中的一个元素,t(p,n)是相应的输出节点n的目标。设y(p,n)由以上提到的squash函数s决定,这里a(p,n)是与p相关的n的激活函数,或者用(p,n)=s(a(p,n))表示为与p相关的节点n的squash过的激活函数。为网络设定权系数(每个Wi),也为每个p和n建立t(p,n)与y(p,n)的差分,这就意味着为每个p设定了网络全部的误差。因此对于每组权系数来说有一个平均误差。但是规则取决于求平均值方法的精确度以及误差。对于每个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规则就是依据这个误差的定义来定义的。因为误差是依据那些学习向量来说明的,delta规则是一种获取一个特殊的权系数集以及一个特殊的向量的算法。而改变权系数将会使神经网络的误差最小化。任何Wi发生的变化都如下所示:alpha*s'(a(p,n))*(t(p,n)-y(p,n))*X(p,i,n)。

  X(p,i,n)是输入到节点n的p中的第i个元素,alpha是已知的学习率。最后s'(a(p,n))是与p相关的第n个节点激活的squashing函数的变化(派生)率,这就是delta规则,并且当alpha非常小的时候,权系数向量接近某个将误差最小化的向量。用于权系数调节的基于delta规则的算法就是如此。

  梯度降落(直到误差小到适当的程度为止)如下:

  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规则算法总是在权系数上调整,而且这是建立在相对输出的激活方式上,不一定适用于存在隐藏节点的网络。

  反向传播

  反向传播这一算法把支持delta规则的分析扩展到了带有隐藏节点的神经网络。当输出节点从隐藏节点获得输入,网络发现出现了误差,权系数的调整可以通过一个算法来找出整个误差是由多少不同的节点造成的,具体方法如下:

  

“代码识别”反向传播的神经网络

 

  “代码识别”反向传播的神经网络

  反向传播算法同样来源于梯度降落原理,在权系数调整分析中的唯一不同是涉及到t(p,n)与y(p,n)的差分。通常来说Wi的改变在于:

  alpha * s'(a(p,n)) * d(n) * X(p,i,n)

  其中d(n)是隐藏节点n的函数。一方面,n影响输出节点越多,n造成网络整体的误差也越多。另一方面,如果输出节点影响网络整体的误差越少,n对输出节点的影响也相应减少。这里d(j)是对网络的整体误差的基值,W(n,j)是n对j造成的影响,d(j)*W(n,j)是这两种影响的总和。但是n几乎总是影响多个输出节点,也许会影响每一个输出结点,这样,d(n)可以表示为:SUM(d(j)*W(n,j))

  这里j是一个从n获得输入的输出节点,联系起来,我们就得到了一个学习规则。

  第1部分:在隐藏节点n和输出节点j之间权系数改变,如下所示:

  alpha * s'(a(p,n))*(t(p,n) - y(p,n)) * X(p,n,j)

  第2部分:在输入节点i和输出节点n之间权系数改变,如下所示:

  alpha * s'(a(p,n)) * sum(d(j) * W(n,j)) * X(p,i,n)

  这里每个从n接收输入的输出节点j都不同。关于反向传播算法的基本情况大致如此。

  将Wi初始化为小的随机值。

  使误差小到适当的程度要遵循的步骤如下:

  第1步:输入学习向量;

  第2步:计算隐藏节点的输出;

  第3步:在第2步的基础上计算输出节点的输出;

  第4步:计算第3步所得的结果和期望值之间的差;

  第5步:把第4步的结果填入学习规则的第1部分;

  第6步:对于每个隐藏节点n,计算d(n);

  第7步:把第6步的结果填入学习规则的第2部分。

  通常把第1步到第3步称为正向传播,把第4步到第7步称为反向传播。

  至此,我们已经成功地通过神经网络算法对用户需要分类的术语示例进行了正向学习,对用户需要验证的数据进行了识别,并且对经过验证的数据进行了反向传播学习。

  (二)实现原理

  使用Xilinx Spartan 3E Starter-kit的开发板开发应用程序的过程大致分为两部分——硬件和软件。

  ⒈硬件部分。借助Xilinx Platform Studio 9.1i with SP2(一下简称为XPS)良好的界面和易用性,我们借助其自带的IP核实现大部分开发板上设备的驱动,但是由于我们的项目要用到PS/2、A/D转换器以及CC2420射频板等相应的IP核并没有附带在XPS中的设备,因此我们正在完成这些设备的IP核的设计,以便搭起我们所需要的硬件平台。

  ⒉软件部分。通过XPS中附带的Xilinx Platform Studio SDK(以下简称为XPSSDK)组件,我们使用C语言完成我们的项目的核心部分的设计。XPSSDK的外壳实际上使用的是开源软件Eclipse,其友好的界面可以极大方便我们的项目的开发。软件核心部分分为信号处理模块和密码处理模块。其中,信号处理模块采用神经网络算法,密码处理模块采用混沌算法。

  ⑴信号处理模块

  信号采集部分主要采集三个系数:按键时间长短、按键时间间隔和力感模拟信号。其中前两个系数可以通过按键产生的通码和断码得到(每个通码和下一个断码之间构成一个按键时间长短,每个断码与下一个通码之间构成一个按键时间间隔),力感模拟信号可以通过绑定在每个按键下面的力度传感器采集到。

  若用TH(i)表示第i个键按下的持续时间(Hold-time,即按键时间长短),则TH(i)=Trelease(i) -Tpress(i),Tpress(i)表示第i个键的按下时刻,Trelease(i)表示第i个键抬起的时刻。令TL(i,i+1)表示连续敲击第i个键和第i+1个键的时间间隔。则TL(i,i+1)=Tpress(i+1) -Trelease(i)。对于我们采集到的力感系数,每按键一次产生一个相关力度模拟信号,经Spartan 3E开发板上的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算法通过一边向后传播误差,一边修正误差的方法来不断调节网络参数(权值或阈值),以实现或逼近所希望的输入输出映射关系,最后得以对合法用户的身份进行辨别。

DIY机械键盘相关社区:机械键盘DIY




关键词: 键盘 TLU delta

评论


相关推荐

技术专区

关闭