• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      FPGA在人工智能深度學(xué)習(xí)中的應(yīng)用

      2022-10-26 08:52:52武漢工程大學(xué)郵電與信息工程學(xué)院周瑩
      關(guān)鍵詞:后向權(quán)值卷積

      武漢工程大學(xué)郵電與信息工程學(xué)院 周瑩

      近年來,F(xiàn)PGA應(yīng)用的呼聲之高,發(fā)展之快令人振奮,從AI到VR,從語音識(shí)別,人臉識(shí)別到各種各樣的加速器。在人工智能興起和發(fā)展的時(shí)代,深度學(xué)習(xí)起到了中流砥柱的作用,然而深度學(xué)習(xí)仍然面臨著超大計(jì)算量的問題,GPU、ASIC、FPGA都是解決龐大計(jì)算量的有效方案。本文將以Lenet卷積神經(jīng)網(wǎng)絡(luò)模型為例,基于CNN網(wǎng)絡(luò)模型和硬件架構(gòu)實(shí)現(xiàn),對(duì)CNN網(wǎng)絡(luò)的后向訓(xùn)練過程進(jìn)行Matlab定點(diǎn)仿真和FPGA實(shí)現(xiàn)以及Modelsim仿真驗(yàn)證,最終綜合對(duì)比FPGA、GPU、CPU的性能。

      人工智能是研究用于模擬和擴(kuò)展人類行為的一門新型技術(shù)學(xué)科。對(duì)于人工智能,特別是基于深度學(xué)習(xí)的應(yīng)用來說,很多應(yīng)用場所都對(duì)實(shí)時(shí)性有著很高的要求[1]。面對(duì)這個(gè)新時(shí)代提出的新要求,F(xiàn)PGA利用其特點(diǎn),發(fā)揮著它重要的作用[2]。下文以CNN網(wǎng)絡(luò)的后向訓(xùn)練過程為例說明FPGA的性能優(yōu)勢。

      DNN(深層神經(jīng)網(wǎng)絡(luò))包含兩類核心算法:CNN(卷積神經(jīng)網(wǎng)絡(luò))和LSTM(長短期記憶網(wǎng)絡(luò)),都能在很大程度上受益于低精度的乘加運(yùn)算[3]。CNN算法目前是最重要的深度學(xué)習(xí)方法之一,這種算法在圖像識(shí)別以及語音識(shí)別應(yīng)用中取得了突破性的成就,下面就以CNN算法的后向訓(xùn)練過程模型架構(gòu)及結(jié)果仿真為例,說明FPGA在深度學(xué)習(xí)算法加速上的優(yōu)勢。

      1 CNN的網(wǎng)絡(luò)模型

      下面以一種具體的Lenet卷積神經(jīng)網(wǎng)絡(luò)模型為例,給該CNN一個(gè)輸入,輸入名為MINST的一個(gè)數(shù)據(jù)集,也就是一張灰度圖像,其像素是(1,28,28),如圖1所示。

      其conv1作為第一個(gè)卷積層,卷積核的大小是(4,1,5,5),其中的4代表有4個(gè)(1,5,5)的卷積;利用非全零的方法進(jìn)行填充,步長取1,Relu作為其激活函數(shù),再依據(jù)(式1)和(式2)可得,輸出(4,24,24);第1個(gè)池化層是Pooling1,經(jīng)過這個(gè)池化層之后,再采用最大池化策略的方式,利用非全零的方法進(jìn)行填充,步長取2,這時(shí)的輸出是(4,12,12);conv2作為第二個(gè)卷積層,它的conv2卷積核大小是(4,4,5,5,),其中的4是指有4個(gè)(4,5,5)卷積,利用非全零填充的方法進(jìn)行填充,步長取1,Relu作為其激活函數(shù),根據(jù)(式1)和(式2)可得,經(jīng)過卷積后的輸出是(4,8,8);接著進(jìn)入到第二個(gè)池化層pooling2,采用Max Pooling的方式且池化值為(2,2),最終的輸出為(4,4,4);經(jīng)過2層全連接層FC1和FC2,F(xiàn)C1的大小是(12,64),激活函數(shù)是Relu,F(xiàn)C2的大小是(10,12),激活函數(shù)是Softmax。

      通過該模型的訓(xùn)練之后,可以得到如圖2所示的系統(tǒng)損失函數(shù)的變化曲線,隨著迭代次數(shù)的疊加,損失函數(shù)將會(huì)逐漸變小,在開始的四千次迭代中損失函數(shù)的變化是迅速變小,而之后的四千到八千次時(shí),曲線已經(jīng)變得非常緩慢,直到最后趨于平穩(wěn)。

      可以通過曲線圖發(fā)現(xiàn):隨著迭代次數(shù)的增加,損失函數(shù)逐漸減小,最終會(huì)趨向一個(gè)穩(wěn)定值;而準(zhǔn)確率的曲線圖是會(huì)不斷增大,最終也趨向于一個(gè)穩(wěn)定值,準(zhǔn)確率曲線圖此處略[4]??傊@種模型的損失函數(shù)變化曲線和準(zhǔn)確率變化曲線都符合要求,性能良好。下文以該模型為例,介紹硬件加速的實(shí)現(xiàn)。

      2 CNN的硬件結(jié)構(gòu)

      對(duì)于CNN的后向訓(xùn)練過程,包含全連接層、池化層傳遞過程以及卷積層誤差;同時(shí)也包括了權(quán)值的更新。CNN硬件框架是以后向訓(xùn)練過程的誤差傳遞過程為主,前向預(yù)測過程的輸出結(jié)果長度為10,作為結(jié)構(gòu)的輸入,通過和Label(正確標(biāo)簽)相減取得差值之后,便得到了全連接層FullConnected2的誤差項(xiàng),再經(jīng)過全連接層隱層的誤差傳遞,會(huì)得到全連接層FullConnected1的誤差項(xiàng),最終得到有效長度是8的4路卷積層,最后經(jīng)過池化層的誤差項(xiàng)傳遞和卷積層誤差項(xiàng)傳遞,就會(huì)得到有效長度為24的4路卷積層[5]。參數(shù)更新模塊被進(jìn)入的誤差項(xiàng)進(jìn)行更新之后,權(quán)值和偏置項(xiàng)也會(huì)被更新。下面介紹利用FPGA實(shí)現(xiàn)全連接層后向過程的仿真驗(yàn)證。

      3 FPGA實(shí)現(xiàn)全連接層后向過程仿真驗(yàn)證

      3.1 Matlab定點(diǎn)仿真

      (1)根據(jù)卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的算法理論,對(duì)上述Lenet卷積神經(jīng)網(wǎng)絡(luò)的后向訓(xùn)練過程進(jìn)行Matlab的定點(diǎn)仿真。在Matlab中進(jìn)行仿真,首先將數(shù)據(jù)集中的“mnist.train.images.txt”文件輸入,把“mnist.train.labels.txt”當(dāng)做正確標(biāo)志。均值設(shè)為0.1,初始化權(quán)值使用0,初始化方式采用標(biāo)準(zhǔn)差。

      (2)向訓(xùn)練過程的定點(diǎn)方式采用1位符號(hào)位、5位整數(shù)位、12位小數(shù)位,即FI(1,18,12),采用這種方式后的輸出數(shù)據(jù)是卷積層為1的偏置b_conv1和權(quán)值w_conv1,卷積層為2的偏置b_conv2和權(quán)值w_conv2,全連接層為1的偏置b_full_connected1和權(quán)值w_full_connected1,全連接層為2的偏置b_full_connected2和權(quán)值w_full_connected2[6]。如圖3所示,訓(xùn)練的迭代次數(shù)是橫坐標(biāo),數(shù)據(jù)的最大相對(duì)誤差值是縱坐標(biāo),經(jīng)過分析訓(xùn)練過程中的相對(duì)誤差絕對(duì)值,可以得到相對(duì)誤差的最大值是10∧-2,顯然這個(gè)誤差結(jié)果是在期望值中的。

      3.2 FPGA實(shí)現(xiàn)和結(jié)果驗(yàn)證

      Lenet卷積神經(jīng)網(wǎng)絡(luò)中全連接層隱層的誤差傳遞過程的Modelsim仿真結(jié)果如圖4所示,模塊是以10個(gè)連續(xù)誤差數(shù)據(jù)作為輸入,輸出是12路并行誤差數(shù)據(jù),該數(shù)據(jù)是由有效控制模塊和12個(gè)乘累加器得到的,利用Matlab仿真的結(jié)果與這個(gè)結(jié)果一樣,意味著模塊正確。

      其中,全連接層隱層誤差傳遞模塊的端口信號(hào)定義如表1所示。

      表1 模塊的端口信號(hào)說明-誤差傳遞Tab.1 Module's port signal description - error propagation

      Lenet卷積神經(jīng)網(wǎng)絡(luò)中全連接層隱層的權(quán)值更新過程由第三方仿真工具M(jìn)odelsim得出的時(shí)序結(jié)果如圖5所示,該模塊的輸入是單個(gè)的誤差數(shù)據(jù),輸出是64位的1路數(shù)據(jù),即64個(gè)權(quán)值。一個(gè)誤差更新64個(gè)權(quán)值,因此12個(gè)誤差更新了所有的768個(gè)權(quán)值[7]。Matlab仿真結(jié)果和FPGA經(jīng)過第三方仿真工具M(jìn)odelsim的結(jié)果一樣,意味著模塊功能正確。

      其中,全連接層隱層權(quán)值更新過程的端口信號(hào)定義如表2所示。

      表2 端口信號(hào)說明-權(quán)值更新Tab.2 Port signal description - weight update

      實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)后向訓(xùn)練過程之后,經(jīng)過Modelsim仿真的波形圖如圖6所示。由時(shí)序圖可得,在FPGA中只要實(shí)現(xiàn)了一次后向訓(xùn)練,就需要821個(gè)時(shí)鐘信號(hào),由于最大CLK頻率設(shè)定為200MHz,即5NS[8]。

      通過分析后向訓(xùn)練在FPGA、GPU、CPU的性能,如表3所示。FPGA實(shí)現(xiàn)的后向訓(xùn)練過程對(duì)比CPU來說,處理速度提高了1.8倍,由于該結(jié)果受到訓(xùn)練過程中一系列外在因素的影響,例如權(quán)重相對(duì)正向過程需要轉(zhuǎn)置,就會(huì)浪費(fèi)一定的處理時(shí)間[9]。雖然FPGA相對(duì)于GPU,處理速度稍有差距。但是FPGA功耗比GPU和CPU要小很多。

      表3 后向訓(xùn)練過程FPGA、GPU、CPU性能對(duì)比Tab.3 Backward training process FPGA, GPU, CPU performance comparison

      4 結(jié)語

      目前深度學(xué)習(xí)的流行,其實(shí)仍然是得益于大數(shù)據(jù)和計(jì)算性能的提升。但是卻也遭受著計(jì)算能力和數(shù)據(jù)量限制的瓶頸。針對(duì)數(shù)據(jù)量的需求,還能夠利用調(diào)整或者變更模型來緩解,但面對(duì)計(jì)算力的挑戰(zhàn),卻沒有捷徑。FPGA解決了傳統(tǒng)PLD資源有限的劣勢,又克服了全定制的電路較死板的缺點(diǎn)[10]。隨著FPGA器件和云端部署等技術(shù)的發(fā)展,內(nèi)存帶寬已經(jīng)逐漸不再是DNN的算力瓶頸,取而代之的是單周期可以完成的乘加操作數(shù)量,這些都使得FPGA在未來的AI領(lǐng)域中,能夠發(fā)揮它最大的優(yōu)勢,推動(dòng)科技的進(jìn)步。

      猜你喜歡
      后向權(quán)值卷積
      隨機(jī)波動(dòng)格點(diǎn)方程的后向緊隨機(jī)吸引子①
      隨機(jī)Kuramoto-Sivashinsky格點(diǎn)方程的后向緊隨機(jī)吸引子①
      一種融合時(shí)間權(quán)值和用戶行為序列的電影推薦模型
      基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
      CONTENTS
      無界域上非自治Navier-Stokes方程的后向緊動(dòng)力學(xué)
      從濾波器理解卷積
      電子制作(2019年11期)2019-07-04 00:34:38
      基于傅里葉域卷積表示的目標(biāo)跟蹤算法
      基于權(quán)值動(dòng)量的RBM加速學(xué)習(xí)算法研究
      一類具有飽和發(fā)生率和治療的SIS傳染病模型的后向分支及動(dòng)力學(xué)行為
      丰县| 屏南县| 申扎县| 龙口市| 蓝山县| 修水县| 达日县| 宜丰县| 许昌市| 淮滨县| 修武县| 长岛县| 绩溪县| 肇源县| 宣武区| 凤翔县| 吉隆县| 伽师县| 三穗县| 梁河县| 马边| 双江| 始兴县| 塔河县| 中超| 平远县| 永嘉县| 和田市| 文昌市| 宁武县| 新丰县| 息烽县| 汨罗市| 潢川县| 白城市| 和龙市| 那坡县| 天全县| 大新县| 大足县| 晋江市|