999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

神經(jīng)網(wǎng)絡(luò)激活函數(shù)及其導(dǎo)數(shù)的FPGA實現(xiàn)

2008-04-12 00:00:00張智明張仁杰
現(xiàn)代電子技術(shù) 2008年18期

摘 要:神經(jīng)元的激活函數(shù)是神經(jīng)網(wǎng)絡(luò)的重要組成部分。采用折線斜率為2的次冪的分段線性逼近方法實現(xiàn)激活函數(shù)(sigmoid函數(shù))及其導(dǎo)數(shù)的映射。該方法在FPGA實現(xiàn)時不需要使用硬件乘法器,而且可以節(jié)約大量的RAM單元。由于神經(jīng)網(wǎng)絡(luò)的并行計算需要消耗大量的硬件乘法器和RAM,因此,與其他方法相比,該方法為整個神經(jīng)網(wǎng)絡(luò)的FPGA實現(xiàn)有效地節(jié)省了大量寶貴的FPGA資源,可以較好地應(yīng)用在BP神經(jīng)網(wǎng)絡(luò)的在線訓(xùn)練中。

關(guān)鍵詞:神經(jīng)網(wǎng)絡(luò);sigmoid函數(shù);分段線性逼近;FPGA

中圖分類號:TP389.1 文獻標識碼:B 文章編號:1004373X(2008)1813904

Implementation of Activation Function and Its Derivative for Neural Networks Based on FPGA

ZHANG Zhiming,ZHANG Renjie

(Optical and Electronic Information Engineering College,University of Shanghai for Science and Technology,Shanghai,200093,China)

Abstract:The activation function of neuron plays an important role in neural networks.Method of powers of two piecewise linear approximation,used to approximate the activation function (sigmoid function) and its derivative,is presented.In the FPGA implementation,this method doesn′tneed hardware multiplier,but also saves a lot of RAM units.Because of consuming multipliers and RAMs vastly when implementing parallel calculation in neural networks,this method,compares with others,can save a lot of valuable resources in FPGA,and applies well in the on line training of BP neural networks.

Keywords:neural network;sigmoid function;piecewise linear approximation;FPGA

1 引 言

在神經(jīng)網(wǎng)絡(luò)的FPGA設(shè)計中,神經(jīng)元的激活函數(shù)及其導(dǎo)數(shù)的實現(xiàn)是一個重要的環(huán)節(jié)。神經(jīng)元的激活函數(shù)有多種形式,包括閾值函數(shù)、分段線性函數(shù)以及sigmoid函數(shù)等。但使用得最廣泛的是sigmoid函數(shù)[1]。其表達式如下:y=f(x)=1(1+e-x)(1)

它的一階導(dǎo)函數(shù)為:y′=f′(x)=e-x(1+e-x)2=y(1-y)(2)

大規(guī)模數(shù)字集成電路的發(fā)展,使得采用FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò)成為可能。在數(shù)字設(shè)計中,實現(xiàn)sigmoid函數(shù)有很多種方法可以選擇。介紹如下:

(1) 泰勒級數(shù)展開

可以求sigmoid函數(shù)的5階泰勒級數(shù)來進行逼近[2]。這種方法需要乘法器,雖然目前的FPGA中集成有硬件乘法器,但對于神經(jīng)網(wǎng)絡(luò)來說,有限的硬件乘法器更應(yīng)該用于網(wǎng)絡(luò)中大量的并行計算。

(2) 簡單的查找表

可以將sigmoid函數(shù)及其導(dǎo)數(shù)的值存在RAM或ROM中,這將消耗大量的存儲器。例如:考慮一個16位輸入,16位輸出的查找表,它將消耗128 kb的存儲器。盡管現(xiàn)在FPGA中有著較多的RAM,但考慮到神經(jīng)元的權(quán)值也要消耗較多RAM,因此這個方法不太實用。

(3) 基于坐標旋轉(zhuǎn)數(shù)字計算機算法的方法

坐標旋轉(zhuǎn)數(shù)字計算機(CORDIC[35])算法是迭代算法,雖然精度可以做得比較高,但需要占用較多的FPGA資源。

以上3種sigmoid函數(shù)的實現(xiàn)均需要占用較多的資源。本文采用分段線性(PWL)逼近的方法,在FPGA中實現(xiàn)sigmoid函數(shù)及其導(dǎo)數(shù)的映射。這種方法占用較少的FPGA資源,能較好地實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的在線訓(xùn)練。

2 PWL逼近

PWL逼近的基本思想是用一系列折線來逼近sigmoid函數(shù)及其導(dǎo)函數(shù)。在實現(xiàn)的時候,可以將分段函數(shù)的斷點存入查找表,然后根據(jù)線性函數(shù)y=mx+c來計算中間值。無疑,這要使用到乘法器。對此,如果乘法器其中的一個輸入是2的次冪,那么乘法操作就可以用移位來代替。

若用來逼近sigmoid函數(shù)及其導(dǎo)數(shù)的線性函數(shù)的斜率均為2的次冪,則這個問題就可以得到較好的解決。這與用13段折線來逼近A律壓縮曲線[6](A=87.6)類似。

2.1 sigmoid函數(shù)的PWL逼近

在sigmoid函數(shù)的PWL逼近中,采用13段折線逼近可能會使BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練性能變壞,難以收斂。這是因為如果采用13段折線逼近,則在x=0處折線的斜率為1(與0.25相差較大)。而sigmoid函數(shù)的導(dǎo)數(shù)在x=0處的值為0.25。因此,采用同樣思路修改逼近折線,采用15段折線逼近是可行的。

下面詳細給出15段折線逼近的做法。圖1繪出了15段折線逼近sigmoid函數(shù)的曲線。表1給出15段折線逼近sigmoid函數(shù)的真值表。由于sigmoid函數(shù)的對稱性,這里只給出了當(dāng)x≥0時的數(shù)據(jù)。根據(jù)參考文獻[7]對硬件實現(xiàn)神經(jīng)網(wǎng)絡(luò)所需精度的論述,確定該表的輸入為16位,最高位為符號位,整數(shù)占3位,小數(shù)占12位。輸出也是16位,小數(shù)占15位,最高位為符號位。以輸入范圍為0→1為例,在該范圍內(nèi),折線的斜率為0.25,故輸出以0.5為起點,將輸入的小數(shù)部分右移2位,以實現(xiàn)乘以0.25的功能。這樣就可以避免使用乘法器,有效節(jié)省了FPGA的資源。

圖1 sigmoid函數(shù)的15段折線逼近2.2 sigmoid函數(shù)的導(dǎo)數(shù)的PWL逼近

Sigmoid函數(shù)的導(dǎo)數(shù)的實現(xiàn)可以采用如下方法:

(1) 利用式(2)和已得到的sigmoid函數(shù)逼近,由y(1-y)計算出sigmoid的導(dǎo)數(shù),但這仍需要乘法器。這里不予考慮。

(2) 與sigmoid函數(shù)的實現(xiàn)類似,采用15段折線逼近。圖2為用15段折線逼近sigmoid函數(shù)的導(dǎo)數(shù)的曲線。表2給出15段折線逼近sigmoid函數(shù)的導(dǎo)數(shù)的真值表。由于sigmoid函數(shù)的導(dǎo)函數(shù)的對稱性,這里也只給出了當(dāng)x≥0時的數(shù)據(jù)。同樣,該表的輸入為16位,最高位為符號位,整數(shù)占3位,小數(shù)占12位。輸出也是16位,小數(shù)占15位,最高位為符號位。表中下劃線出表示該處的二進制位需取反。以輸入范圍為1→2為例,在該范圍內(nèi),折線的斜率為-0.062 5,輸出以0.125為起點,故需要將小數(shù)部分的二進制位取反后,再右移4位。該方法同樣避免了乘法。

圖2 sigmoid函數(shù)的導(dǎo)數(shù)的15段折線逼近(3) 采用階梯函數(shù)進行逼近,這是分段線性逼近的一種特殊情況,這里折線的斜率為0。圖3為采用階梯函數(shù)對sigmoid函數(shù)的導(dǎo)數(shù)進行15段逼近的曲線。表3給出15段折線逼近sigmoid函數(shù)的導(dǎo)數(shù)的真值表。值得注意的是,在BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中,sigmoid函數(shù)的導(dǎo)數(shù)采用15段階梯函數(shù)進行逼近時,其網(wǎng)絡(luò)的訓(xùn)練性能要比采用15段折線逼近的好。這是因為采用15段階梯函數(shù)逼近sigmoid函數(shù)的導(dǎo)數(shù)時,在x=0附近,函數(shù)值均為0.25,而用15段折線逼近時,在x=0附近,函數(shù)值的變化比較快,折線斜率為±0.031 25。故雖然采用15段折線逼近更能逼近sigmoid函數(shù)的導(dǎo)數(shù)的真實值,但訓(xùn)練性能仍沒有15段階梯函數(shù)逼近的好。

圖3 sigmoid函數(shù)的導(dǎo)數(shù)的15段階梯函數(shù)逼近3 FPGA實現(xiàn)

3.1 sigmoid函數(shù)的FPGA實現(xiàn)

由于sigmoid函數(shù)的對稱性,在表2中只給出當(dāng)x≥0時的15段折線逼近真值表。由于整個神經(jīng)網(wǎng)絡(luò)計算中采用的是有符號的二進制補碼,所以FPGA實現(xiàn)時首先根據(jù)激活函數(shù)輸入的最高位(MSB)來判斷輸入是正數(shù)還是負數(shù)。若MSB=0,則為正數(shù),直接可以根據(jù)表1得到sigmoid函數(shù)值;若MSB=1,則為負數(shù),將負數(shù)取絕對值(去除符號位,將輸入做1次求補運算),然后根據(jù)表1可以得到相應(yīng)的值,由于sigmoid函數(shù)的對稱性,再用1減去所得的值(實現(xiàn)時直接將表1輸出的小數(shù)部分取反加1即可,也就是做一次求補運算),就可以得到對應(yīng)的sigmoid函數(shù)值。表1可以用查找表(LUT)實現(xiàn)。實現(xiàn)sigmoid函數(shù)的電路結(jié)構(gòu)如圖4所示。圖中的MSB控制輸入是否進行求補運算。

根據(jù)上述電路結(jié)構(gòu),在Altera的FLEX10KE系列FPGA上做了綜合。實現(xiàn)sigmoid函數(shù)的15段折線逼近占用了119個LC(不使用EAB的情況下),最小時鐘周期可達8.7 ns。

3.2 sigmoid函數(shù)的導(dǎo)數(shù)的FPGA實現(xiàn)

sigmoid函數(shù)的導(dǎo)函數(shù)也是對稱的,在表2中亦只給出當(dāng)x≥0時的15段折線逼近真值表和15段階梯函數(shù)逼近真值表。與第3.1節(jié)中所述類似,用FPGA實現(xiàn)sigmoid函數(shù)的導(dǎo)數(shù)時首先根據(jù)其輸入的最高位(MSB)來判斷輸入是正數(shù)還是負數(shù)。若MSB=0,則為正數(shù),直接可以根據(jù)表2或表3得到sigmoid函數(shù)的導(dǎo)數(shù)值。若MSB=1,則為負數(shù),將負數(shù)取絕對值(去除符號位,將輸入做一次求補運算),然后根據(jù)表2或表3可以得到相應(yīng)的值。由于sigmoid函數(shù)的導(dǎo)函數(shù)關(guān)于y軸對稱,故查表所得的結(jié)果無需再做求補運算。表2和表3同樣可以用查找表(LUT)實現(xiàn)。圖5給出實現(xiàn)sigmoid函數(shù)的導(dǎo)數(shù)的電路結(jié)構(gòu)。圖中的MSB依然是控制輸入是否進行求補運算的信號。

表1 sigmoid函數(shù)的15段折線逼近真值表

輸入范圍輸入輸出輸出范圍x→xxxxx.xxxxxxxxxxxxx.xxxxxxxxxxxxxxxx→x0→10000.abcdefghijkl0.10abcdefghijkl00.5→0.751→20001.abcdefghijkl0.110abcdefghijkl0.75→0.8752→30010.abcdefghijkl0.1110abcdefghijk0.875→0.93753→40011.abcdefghijkl0.11110abcdefghij0.9375→0.968754→50100.abcdefghijkl0.111110abcdefghi0.96875→0.9843755→60101.abcdefghijkl0.1111110abcdefgh0.984375→0.99218756→70110.abcdefghijkl0.11111110abcdefg0.9921875→0.996093757→80111.abcdefghijkl0.11111111abcdefg0.99609375→1

表2 sigmoid函數(shù)的導(dǎo)數(shù)的15段折線逼近真值表

輸入范圍輸入輸出輸出范圍x→xxxxx.xxxxxxxxxxxxx.xxxxxxxxxxxxxxxx→x0→10000.abcdefghijkl0.00111abcdefghij0.25→0.218751→20001.abcdefghijkl0.0010abcdefghijk0.1875→0.1252→30010.abcdefghijkl0.0001abcdefghijk0.09375→0.06253→40011.abcdefghijkl0.000001abcdefghi0.03125→0.0156254→50100.abcdefghijkl0.0000001abcdefgh0.015625→0.00781255→60101.abcdefghijkl0.00000001abcdefg0.0078125→0.003906256→70110.abcdefghijkl0.000000001abcdef0.00390625→0.0019531257→80111.abcdefghijkl0.000000000abcdef0.001953125→0

表3 sigmoid函數(shù)的導(dǎo)數(shù)的15段階梯函數(shù)逼近真值表

輸入范圍輸入輸出輸出范圍x→xxxxx.xxxxxxxxxxxxx.xxxxxxxxxxxxxxxx→x0→10000.abcdefghijkl0.0100000000000000.25→0.251→20001.abcdefghijkl0.0010000000000000.125→0.1252→30010.abcdefghijkl0.0001000000000000.0625→0.06253→40011.abcdefghijkl0.0000100000000000.03125→0.031254→50100.abcdefghijkl0.0000010000000000.015625→0.0156255→60101.abcdefghijkl0.0000001000000000.0078125→0.00781256→70110.abcdefghijkl0.0000000100000000.00390625→0.003906257→80111.abcdefghijkl0.0000000010000000.001953125→0.001953125

同樣,在Altera的FLEX10KE系列FPGA上做sigmoid函數(shù)的導(dǎo)數(shù)的15段折線逼近和15段階梯函數(shù)逼近。15段折線逼近占用了91個LC(不使用EAB的情況下),最小時鐘周期可達8.7 ns;15段階梯函數(shù)逼近占用19個LC(不使用EAB的情況下),最小時鐘周期可達4.0 ns。

圖4 sigmoid函數(shù)的電路結(jié)構(gòu)圖圖5 sigmoid函數(shù)的導(dǎo)數(shù)的電路結(jié)構(gòu)圖4 結(jié) 語

本文采用分段線性逼近的方法在FPGA上實現(xiàn)了神經(jīng)網(wǎng)絡(luò)激活函數(shù)(sigmoid函數(shù))及其導(dǎo)數(shù)的映射。這種實現(xiàn)方式避免了乘法器的使用,節(jié)省了FPGA的資源,使得FPGA中寶貴的硬件乘法器可以更多的用在神經(jīng)網(wǎng)絡(luò)的并行計算中。所實現(xiàn)的sigmoid函數(shù)及其導(dǎo)數(shù)的映射可以在BP神經(jīng)網(wǎng)絡(luò)的在線訓(xùn)練中得到較好的應(yīng)用。

參 考 文 獻

[1]韓力群.人工神經(jīng)網(wǎng)絡(luò)教程[M].北京:北京郵電大學(xué)出版社,2006.

[2]Ouali J,Saucier G.Fast Generation of NeuroASICs[C].Proc.Int.Neural Networks Conf.,1990,2:563567.

[3]Deprettere E,Dewilde P,Udo P.Pipelined CORDIC Architectures for Fast VLSI Filtering and Array Processing[C].Proc.Int.Conf.Acoust,Speech,and Signal Proc.,1984:41.A.6.1-41.A.6.4.

[4]Javier Valls.Evaluation of CORDIC Algorithms for FPGA Design[J].Journal of VLSI Signal Processing,2002,32:207222.

[5]陳曦,王高峰,劉克剛,等.基于混合CORDIC 的神經(jīng)網(wǎng)絡(luò)激活函數(shù)的實現(xiàn)[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2007,35,(9):114117.

[6]樊昌信,張甫翊,徐炳祥,等.通信原理[M].北京:國防工業(yè)出版社,2001:197205.

[7]Jordan L Holt,Jenq-Neng Hwang.Finite Precision Error Analysis of Neural Network Hardware Implementations[J].IEEE Ttransactions on Computers,1993,42(3):281290.

作者簡介 張智明 男,1983年出生,上海人,上海理工大學(xué)光學(xué)與電子信息工程學(xué)院在讀碩士研究生。主要研究方向為測試信息獲取與處理。

張仁杰 男,1956年出生,山東人,上海理工大學(xué)黨委副書記,博士生導(dǎo)師,教授。主要研究方向為在線檢測技術(shù)與裝置、測試信息獲取與處理、特殊檢測技術(shù)與裝置等。

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

主站蜘蛛池模板: 青青草原国产精品啪啪视频| 亚洲国产日韩在线成人蜜芽| 国产永久无码观看在线| 青青青视频蜜桃一区二区| 亚洲欧美成aⅴ人在线观看| 国产一区成人| 成人一级免费视频| 欧美日本中文| 超碰色了色| 国产自在线播放| 一级香蕉人体视频| 中文字幕有乳无码| 亚洲乱码在线视频| 色香蕉网站| 在线人成精品免费视频| 国产欧美视频综合二区| 欧美视频二区| 国产亚洲精久久久久久久91| 国产精品嫩草影院av| 国产日韩精品欧美一区喷| 精品人妻无码中字系列| 久久国产精品波多野结衣| 国产高颜值露脸在线观看| 亚洲区欧美区| 久久综合丝袜长腿丝袜| 国产成人资源| 2021亚洲精品不卡a| 免费看一级毛片波多结衣| 国产黄网站在线观看| 国产毛片高清一级国语| 亚洲国产亚综合在线区| 欧美久久网| 国产剧情无码视频在线观看| 国产一区二区三区日韩精品| 91精选国产大片| 91人妻在线视频| 制服丝袜一区二区三区在线| 亚洲精品国产乱码不卡| 亚洲国产精品日韩专区AV| 99久久国产综合精品女同| 在线无码九区| 欧美一级大片在线观看| 性色生活片在线观看| 精品视频第一页| 54pao国产成人免费视频| 精品自窥自偷在线看| a毛片免费看| 尤物午夜福利视频| 亚洲香蕉久久| 毛片免费在线| 亚洲三级视频在线观看| 国内99精品激情视频精品| 超碰91免费人妻| 啪啪免费视频一区二区| 色妞www精品视频一级下载| 亚洲黄色成人| 日本www色视频| 激情无码字幕综合| aⅴ免费在线观看| 婷婷六月综合| 国产精品观看视频免费完整版| 欧美一级爱操视频| 日韩无码白| 成人在线综合| 欧美精品1区| 国产色伊人| 亚洲精品无码抽插日韩| 一级一级一片免费| 欧美性精品| 亚洲Va中文字幕久久一区| 欧美日韩在线成人| 亚洲精品第一在线观看视频| 欧美日韩一区二区在线播放| 欧美翘臀一区二区三区| 国产精品自在线拍国产电影| 萌白酱国产一区二区| 亚洲高清无在码在线无弹窗| 精品99在线观看| 五月婷婷综合色| 欧类av怡春院| 99re视频在线| 欧美一区二区精品久久久|