基于VHDL语言的神经网络激活函数随机运算的实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 8卷第 2期 2009年 4月
Journa l
of
江 南 大 学 学 报 (自 J ian gnan Un iver sity(
然 科 学 版) Na tura l Sc ien ce
Ed it ion )
Vo l. Ap
8 No. 2 r. 2009
基于 VHDL 语言的神经网络 激活函数随机运算的实现
随机运算的原理可以归结为以下 3个步骤 : 1) 随机化过程 :即将所有的实数输入转换成二 进制随机脉冲序列 ,用序列中“1”的概率 P 表示该 实数 。图 1表示了随机化过程 。如果 X是编码数 , P是 随机脉冲序列中“1”的概率 , 则根据实数的范围可
以有以下 3种表现形式 :
a) - ∞ ≤ X ≤ + ∞,则 X = p
可节省大量硬件乘法器 ,有效缩短设计周期 ,满足了神经网络超大规模集成电路的需要 。
关键词 : 激活函数 ;随机算法 ;状态机 ;硬件描述语言
中图分类号 : TP 183
文献标识码 : A
文章编号 : 1671 - 7147 (2009) 02 - 0154 - 05
Im plem en ta t ion of A c t iva ted Func t ion of Neura l Ne tworks w ith Stocha st ic A r ithm e t ic Theory Ba sed on VHDL
8级移位寄存器实现伪随机码 ,设其工作时钟周期
为 100 n s,该网络产生周期为 255的伪随机码 。输入
经过一系列变化后与伪随机码相比较 ,即可得出随
பைடு நூலகம்
机化序列流 。基于状态机的激活函数原理见图 2。
156
江 南 大 学 学 报 (自 然 科 学 版 ) 第 8卷
CHU L i2juan, SH EN Yan2xia3
( In stitu te of Elec trica l A utom a tion, J iangnan U nive rsity,W uxi 214122, China)
A b stra c t: The m e thod ba sed on stocha stic a rithm e tic wa s p re sen ted to imp lem en t the non linea r ac tiva tion func tion of neu ra l ne two rk s fo r saving ha rdwa re re sou re s. Th is m e thod wa s ba sed on the p rinc ip le of sta te m ach ine s. In the p ap e r, the d igita l logic imp lem en tion of Sigmo id func tion wa s given, and then the softwa re wa s de signed in ha rdwa re de sc rip tion language VHDL. The sim u la tion s ba sed on the p la tfo rm (Mode lsim SE 6. 2) we re ca rried ou t. U sing th is m e thod, the p rogram can be mod ified anytim e, the deve lopm en t, p e riod can sho rten grea tly and the ha rdwa re re sou re s can be saved sign ifican tly. Th is m ee ts the neu ra l ne two rk VL S I requ irem en ts we ll. Key word s: ac tiva tion func tion, stocha stic a rithm e tic, sta te m ach ine s, VHDL
1 随机算法
神经网络一般包括 3种数学运算 :有符号乘法 、 有符号加法和非线性激活函数 。
通常符号乘法和激活函数要占用大量的数字 资源 ,采用随机代数方法实现神经网络结构中乘法 和激活函数 , 可以缓解计算精度和资源之间的矛 盾 ,应用前景宽泛 。
早在 1969年 , B. R. Ga in s[ 12 ] 就提出采用随机计 算原理 ,利用简单的数字电路实现乘法器 、加法器 、 积分器等的运算 , 为神经网络的运算包括乘法 、加 法和激活函数的实现提供了一种非常简单和灵活 的实现方法 , 并赋予了设计系统的灵活性 , 也符合 现代 VL S I设计和制造技术 。
输入为 [ - 1, 1 ]。考虑到精度和阈值的因素 , 选择式
( 3) 作为随机化的输入值 , 即输入量 X 经过随机化
过程变成一随机脉冲序列 。
X = 2Px - 1,其中 Px 为随机脉冲序列中“1”的 概率 。随机化实现过程中的伪随机序列由线性反馈
移位寄存器 (L FSR ) 实现 。为了方便讨论 ,文中采用
图 2 基于状态机的激活函数原理
F ig. 2 S ta te M ach ine ba sed tan sig ac tiva tion fun ction
图 2中 , S1 、S2 ……S2N 表示计数器的每个状态 , 每个状态向下一个状态转换的概率是 P, P 是输入
之后的状态输出“1”。 2. 2 随机双曲正切函数的数字逻辑实现
脉冲序列中“1”的概率 。在 S1 和 S2N - 1 之间输出“0”,
图 3为随机双曲正切函数的数字逻辑实现图 。
图 3 数字逻辑实现图
F ig. 3 D ig ita l log ic im plem en tion of tan sig a ctiva tion func tion
图 3中系统有 2N 种状态 ,输入随机流决定了状 态之间的转换 , 1 个 up / down计数器用来表示每个 状态 。
2 基于随机运算的激活函数实现
2. 1 基于状态机的激活函数
取双曲正切函数为例 ,其表达式为
y
=
1 1
+
e2x e- 2x
(4)
该函数类似 Sigmo id函数 ,函数形状与 Sigmo id
函数相同 ,但以原点对称 ,具有双极输出 。作为网络
的激活函数 ,该函数比 Sigmo id函数的效果更好 , 其
初丽娟 , 沈艳霞 3
(江南大学 电气与自动化研究所 ,江苏 无锡 214122)
摘 要 :为节省硬件实现中的资源数量 ,基于状态机原理并采用随机运算实现神经网络非线性激
活函数的方法 ,给出了 S型激活函数的数字逻辑实现 ,用硬件描述语言 (VHDL ) 对该算法进行了软
件设计与实现 ,并在 Mode lsim SE 6. 2仿真平台上进行了仿真测试 。该设计有利于程序的随时修改 ,
(1)
1- p
b) 0 ≤ X ≤ 1,则 X = p
(2)
c) - 1 ≤ X ≤ 1,则 X = 2 p - 1
(3)
图 1 随机化过程 F ig. 1 Ran dom iza tion process
图 1中伪随机序列是具有某种随机特性的确定 序列 ,由移位寄存器产生 , 范围为 [ 0, C ]。输入 X 经 过变化后为 A,与伪随机序列 B 比较后就可以得到 输出 Y。Y中“1”的概率就可以用图中的式子表示 。
神经网络因具有典型的并行计算模式和极强 的容错能力 ,所以在模式识别 、控制和优化 、非线性 函数的近似等方面得到了广泛应用 。神经网络硬件 实现 [ 123 ] 方法各有不同 ,如 FPGA 实现 、神经元芯片 和 D SP加速板等 ,其中除 FPGA的实现方法以外 ,大 多数硬件实现缺少灵活性 。在神经网络的数字超大
1) 每个状态之间遵循的规则为
p (S1 ) = p ( S2 ) ( 1 - p) + p (S1 ) ( 1 - p)
p ( S1 )
1- p 1- p
= 1 - ( p ) 2N 1- p
p(Si )
1- p
= ( p ) i- 1
1- p
1 - p 1 - ( p ) 2N
1- p
3) 输出序列中“1”的概率为
p ( ou tp u t)
2N
∑ =
p(Si )
i = 2N - 1 +1
( p ) 2N - 1 - ( p ) 2N
= 1- p
1- p
1 - ( p ) 2N
1- p
p (S2 ) = p (S3 ) ( 1 - p) + p (S1 ) p ⁝
设 X 为输入量 , Y为输出量 ,则 X = 2 p - 1, Y = 2 p ( ou tp u t) - 1
2) 通过随机化过程后实数变成了一随机序列 , 其乘法 、加法 、除法 、积分等数学运算可以用简单的 数字电路来实现 ,从而可以用大量的数字门电路替 代普通运算 ,节省了硬件实现中的数字资源 。
3) 解随机化过程 ,即将随机脉冲序列转换成正 常的数值 。经过上述的运算后 , 计算结果仍然为随 机二进制序列 ,需要从序列中提取出概率信息并通 过一系列变化得到实际值 。
文中在其研究的基础上 ,介绍了基于状态机的 随机算法实现 S型函数的方法 ,采用硬件描述语言 对该方法进行了相应的软件设计 、优化和实现 。基 于 Mode lsim软件的仿真结果表明 ,基于随机代数的 方法 ,采用 VHDL语言对 S型激活函数进行实现 ,可 以有效地简化计算 、节省数字资源 , 更加有利于在 FPGA 中的硬件实现 ,充分满足数字神经网络系统 的需要 。
第 2期
初丽娟等 : 基于 VHDL 语言的神经网络激活函数随机运算的实现
155
用之间存在着极大的矛盾 , 文献 [ 427 ] 将查表法与 折线法近似结合 , 并对其进行了改进 , 在一定程度 上缓解了上述矛盾 ,但是计算精度不够 。为此 ,陈曦 和王高峰 [ 8 ] 提 出采 用混 合 坐 标 旋 转 数 字 计 算 机 (H yb rid Co rd ic) 算法来计算对数 S型函数的方法 , 并基于现场可编程门阵列 ( FPGA ) 进行了相应的硬 件设计 、优化和实现 。由于结合了查找表 、流水线等 技术 ,所研制的对数 S型函数模块具有高效 、高速 、 精确等优点 。但是 ,所设计的对数 S型函数精度的提 高是以增加迭代次数为代价的 ;夏欣 [ 9 ] 提出了用一 种基于 Co rd ic算法的指数函数 ex 的 FPGA硬件实现 方法 ,此算法易于硬件实现 , 能满足多数情况的要 求 。但是 ,以上的方法均采用传统的代数运算 ,需要 大量的数字资源 ,大大增加了成本和复杂性 。为了 解决硬件实现中的资源问题 , D a Zhang[ 10 ] 基于随 机算法 [ 11 ] 对神经网络风速估计器进行了硬件实 现 ,与传统的风速估计器相比 , 易于实现且节省了 大量的数字资源 。
规模集成电路 (VL S I) 技术中 , 大量的神经元及其 非线性激活函数对于 FPGA 的实现来说 ,仍是一个 大的挑战 。
S型函数是一种高效 、精确的非线性激活函数 , 其传统的硬件实现方法是查表法 ,事先将该函数进 行计算和存储 ,但此种方法在计算精度和空间的占
收稿日期 : 2008 - 12 - 02; 修订日期 : 2009 - 02 - 13。 基金项目 :江苏省自然科学基金项目 (B K2007540) 。 作者简介 :初丽娟 (1983 - ) ,女 ,山东聊城人 ,电力电子与电力传动专业硕士研究生 。 3 通讯作者 :沈艳霞 (1973 - ) ,女 ,山东淄博人 ,副教授 ,硕士生导师 ,工学博士 。主要从事于神经络的硬件实现及 电机参数辨识等研究 。Em a il: shenyanxia@ tom. com
当输入位为“1”时 , 状态向前移动直到达到最 大状态 ,反之 , 状态向后移动直到状态为 0。输出随 机流由每个时钟周期当前状态的位置决定 , 如果状 态在下端则在每个时钟周期输出 “0”; 反之上端的 状态将输出“1 ”。P为输入随机流中“1 ”的个数的概 率 ,则在此系统中每个状态的概率遵循以下规则 :
Journa l
of
江 南 大 学 学 报 (自 J ian gnan Un iver sity(
然 科 学 版) Na tura l Sc ien ce
Ed it ion )
Vo l. Ap
8 No. 2 r. 2009
基于 VHDL 语言的神经网络 激活函数随机运算的实现
随机运算的原理可以归结为以下 3个步骤 : 1) 随机化过程 :即将所有的实数输入转换成二 进制随机脉冲序列 ,用序列中“1”的概率 P 表示该 实数 。图 1表示了随机化过程 。如果 X是编码数 , P是 随机脉冲序列中“1”的概率 , 则根据实数的范围可
以有以下 3种表现形式 :
a) - ∞ ≤ X ≤ + ∞,则 X = p
可节省大量硬件乘法器 ,有效缩短设计周期 ,满足了神经网络超大规模集成电路的需要 。
关键词 : 激活函数 ;随机算法 ;状态机 ;硬件描述语言
中图分类号 : TP 183
文献标识码 : A
文章编号 : 1671 - 7147 (2009) 02 - 0154 - 05
Im plem en ta t ion of A c t iva ted Func t ion of Neura l Ne tworks w ith Stocha st ic A r ithm e t ic Theory Ba sed on VHDL
8级移位寄存器实现伪随机码 ,设其工作时钟周期
为 100 n s,该网络产生周期为 255的伪随机码 。输入
经过一系列变化后与伪随机码相比较 ,即可得出随
பைடு நூலகம்
机化序列流 。基于状态机的激活函数原理见图 2。
156
江 南 大 学 学 报 (自 然 科 学 版 ) 第 8卷
CHU L i2juan, SH EN Yan2xia3
( In stitu te of Elec trica l A utom a tion, J iangnan U nive rsity,W uxi 214122, China)
A b stra c t: The m e thod ba sed on stocha stic a rithm e tic wa s p re sen ted to imp lem en t the non linea r ac tiva tion func tion of neu ra l ne two rk s fo r saving ha rdwa re re sou re s. Th is m e thod wa s ba sed on the p rinc ip le of sta te m ach ine s. In the p ap e r, the d igita l logic imp lem en tion of Sigmo id func tion wa s given, and then the softwa re wa s de signed in ha rdwa re de sc rip tion language VHDL. The sim u la tion s ba sed on the p la tfo rm (Mode lsim SE 6. 2) we re ca rried ou t. U sing th is m e thod, the p rogram can be mod ified anytim e, the deve lopm en t, p e riod can sho rten grea tly and the ha rdwa re re sou re s can be saved sign ifican tly. Th is m ee ts the neu ra l ne two rk VL S I requ irem en ts we ll. Key word s: ac tiva tion func tion, stocha stic a rithm e tic, sta te m ach ine s, VHDL
1 随机算法
神经网络一般包括 3种数学运算 :有符号乘法 、 有符号加法和非线性激活函数 。
通常符号乘法和激活函数要占用大量的数字 资源 ,采用随机代数方法实现神经网络结构中乘法 和激活函数 , 可以缓解计算精度和资源之间的矛 盾 ,应用前景宽泛 。
早在 1969年 , B. R. Ga in s[ 12 ] 就提出采用随机计 算原理 ,利用简单的数字电路实现乘法器 、加法器 、 积分器等的运算 , 为神经网络的运算包括乘法 、加 法和激活函数的实现提供了一种非常简单和灵活 的实现方法 , 并赋予了设计系统的灵活性 , 也符合 现代 VL S I设计和制造技术 。
输入为 [ - 1, 1 ]。考虑到精度和阈值的因素 , 选择式
( 3) 作为随机化的输入值 , 即输入量 X 经过随机化
过程变成一随机脉冲序列 。
X = 2Px - 1,其中 Px 为随机脉冲序列中“1”的 概率 。随机化实现过程中的伪随机序列由线性反馈
移位寄存器 (L FSR ) 实现 。为了方便讨论 ,文中采用
图 2 基于状态机的激活函数原理
F ig. 2 S ta te M ach ine ba sed tan sig ac tiva tion fun ction
图 2中 , S1 、S2 ……S2N 表示计数器的每个状态 , 每个状态向下一个状态转换的概率是 P, P 是输入
之后的状态输出“1”。 2. 2 随机双曲正切函数的数字逻辑实现
脉冲序列中“1”的概率 。在 S1 和 S2N - 1 之间输出“0”,
图 3为随机双曲正切函数的数字逻辑实现图 。
图 3 数字逻辑实现图
F ig. 3 D ig ita l log ic im plem en tion of tan sig a ctiva tion func tion
图 3中系统有 2N 种状态 ,输入随机流决定了状 态之间的转换 , 1 个 up / down计数器用来表示每个 状态 。
2 基于随机运算的激活函数实现
2. 1 基于状态机的激活函数
取双曲正切函数为例 ,其表达式为
y
=
1 1
+
e2x e- 2x
(4)
该函数类似 Sigmo id函数 ,函数形状与 Sigmo id
函数相同 ,但以原点对称 ,具有双极输出 。作为网络
的激活函数 ,该函数比 Sigmo id函数的效果更好 , 其
初丽娟 , 沈艳霞 3
(江南大学 电气与自动化研究所 ,江苏 无锡 214122)
摘 要 :为节省硬件实现中的资源数量 ,基于状态机原理并采用随机运算实现神经网络非线性激
活函数的方法 ,给出了 S型激活函数的数字逻辑实现 ,用硬件描述语言 (VHDL ) 对该算法进行了软
件设计与实现 ,并在 Mode lsim SE 6. 2仿真平台上进行了仿真测试 。该设计有利于程序的随时修改 ,
(1)
1- p
b) 0 ≤ X ≤ 1,则 X = p
(2)
c) - 1 ≤ X ≤ 1,则 X = 2 p - 1
(3)
图 1 随机化过程 F ig. 1 Ran dom iza tion process
图 1中伪随机序列是具有某种随机特性的确定 序列 ,由移位寄存器产生 , 范围为 [ 0, C ]。输入 X 经 过变化后为 A,与伪随机序列 B 比较后就可以得到 输出 Y。Y中“1”的概率就可以用图中的式子表示 。
神经网络因具有典型的并行计算模式和极强 的容错能力 ,所以在模式识别 、控制和优化 、非线性 函数的近似等方面得到了广泛应用 。神经网络硬件 实现 [ 123 ] 方法各有不同 ,如 FPGA 实现 、神经元芯片 和 D SP加速板等 ,其中除 FPGA的实现方法以外 ,大 多数硬件实现缺少灵活性 。在神经网络的数字超大
1) 每个状态之间遵循的规则为
p (S1 ) = p ( S2 ) ( 1 - p) + p (S1 ) ( 1 - p)
p ( S1 )
1- p 1- p
= 1 - ( p ) 2N 1- p
p(Si )
1- p
= ( p ) i- 1
1- p
1 - p 1 - ( p ) 2N
1- p
3) 输出序列中“1”的概率为
p ( ou tp u t)
2N
∑ =
p(Si )
i = 2N - 1 +1
( p ) 2N - 1 - ( p ) 2N
= 1- p
1- p
1 - ( p ) 2N
1- p
p (S2 ) = p (S3 ) ( 1 - p) + p (S1 ) p ⁝
设 X 为输入量 , Y为输出量 ,则 X = 2 p - 1, Y = 2 p ( ou tp u t) - 1
2) 通过随机化过程后实数变成了一随机序列 , 其乘法 、加法 、除法 、积分等数学运算可以用简单的 数字电路来实现 ,从而可以用大量的数字门电路替 代普通运算 ,节省了硬件实现中的数字资源 。
3) 解随机化过程 ,即将随机脉冲序列转换成正 常的数值 。经过上述的运算后 , 计算结果仍然为随 机二进制序列 ,需要从序列中提取出概率信息并通 过一系列变化得到实际值 。
文中在其研究的基础上 ,介绍了基于状态机的 随机算法实现 S型函数的方法 ,采用硬件描述语言 对该方法进行了相应的软件设计 、优化和实现 。基 于 Mode lsim软件的仿真结果表明 ,基于随机代数的 方法 ,采用 VHDL语言对 S型激活函数进行实现 ,可 以有效地简化计算 、节省数字资源 , 更加有利于在 FPGA 中的硬件实现 ,充分满足数字神经网络系统 的需要 。
第 2期
初丽娟等 : 基于 VHDL 语言的神经网络激活函数随机运算的实现
155
用之间存在着极大的矛盾 , 文献 [ 427 ] 将查表法与 折线法近似结合 , 并对其进行了改进 , 在一定程度 上缓解了上述矛盾 ,但是计算精度不够 。为此 ,陈曦 和王高峰 [ 8 ] 提 出采 用混 合 坐 标 旋 转 数 字 计 算 机 (H yb rid Co rd ic) 算法来计算对数 S型函数的方法 , 并基于现场可编程门阵列 ( FPGA ) 进行了相应的硬 件设计 、优化和实现 。由于结合了查找表 、流水线等 技术 ,所研制的对数 S型函数模块具有高效 、高速 、 精确等优点 。但是 ,所设计的对数 S型函数精度的提 高是以增加迭代次数为代价的 ;夏欣 [ 9 ] 提出了用一 种基于 Co rd ic算法的指数函数 ex 的 FPGA硬件实现 方法 ,此算法易于硬件实现 , 能满足多数情况的要 求 。但是 ,以上的方法均采用传统的代数运算 ,需要 大量的数字资源 ,大大增加了成本和复杂性 。为了 解决硬件实现中的资源问题 , D a Zhang[ 10 ] 基于随 机算法 [ 11 ] 对神经网络风速估计器进行了硬件实 现 ,与传统的风速估计器相比 , 易于实现且节省了 大量的数字资源 。
规模集成电路 (VL S I) 技术中 , 大量的神经元及其 非线性激活函数对于 FPGA 的实现来说 ,仍是一个 大的挑战 。
S型函数是一种高效 、精确的非线性激活函数 , 其传统的硬件实现方法是查表法 ,事先将该函数进 行计算和存储 ,但此种方法在计算精度和空间的占
收稿日期 : 2008 - 12 - 02; 修订日期 : 2009 - 02 - 13。 基金项目 :江苏省自然科学基金项目 (B K2007540) 。 作者简介 :初丽娟 (1983 - ) ,女 ,山东聊城人 ,电力电子与电力传动专业硕士研究生 。 3 通讯作者 :沈艳霞 (1973 - ) ,女 ,山东淄博人 ,副教授 ,硕士生导师 ,工学博士 。主要从事于神经络的硬件实现及 电机参数辨识等研究 。Em a il: shenyanxia@ tom. com
当输入位为“1”时 , 状态向前移动直到达到最 大状态 ,反之 , 状态向后移动直到状态为 0。输出随 机流由每个时钟周期当前状态的位置决定 , 如果状 态在下端则在每个时钟周期输出 “0”; 反之上端的 状态将输出“1 ”。P为输入随机流中“1 ”的个数的概 率 ,则在此系统中每个状态的概率遵循以下规则 :