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

基于GPU的受限玻爾茲曼機并行加速

2016-09-14 09:17:14張立民范曉磊
電子設計工程 2016年2期
關鍵詞:模型設計

張立民,劉 凱,范曉磊

(1.海軍航空工程學院 山東 煙臺 264001;2.第二炮兵工程大學 士官職業技術教育學院,山東 青州 262500)

基于GPU的受限玻爾茲曼機并行加速

張立民1,劉 凱1,范曉磊2

(1.海軍航空工程學院 山東 煙臺 264001;2.第二炮兵工程大學 士官職業技術教育學院,山東 青州 262500)

為針對受限玻爾茲曼機處理大數據時存在的訓練緩慢、難以得到模型最優的問題,提出了基于GPU的RBM模型訓練并行加速方法。首先重新規劃了對比散度算法在GPU的實現步驟;其次結合以往GPU并行方案,提出采用CUBLAS執行訓練的矩陣乘加運算,設計周期更長、代碼更為簡潔的Tausworthe113和CLCG4的組合隨機數生成器,利用CUDA拾取紋理內存的讀取模式實現了Sigmoid函數值計算;最后對訓練時間和效果進行檢驗。通過MNIST手寫數字識別集實驗證明,相較于以往RBM并行代碼,新設計的GPU并行方案在處理大規模數據集訓練上優勢較為明顯,加速比達到25以上。

受限玻爾茲曼機;GPU;CUDA;加速比;并行加速

基于能量模型的受限玻爾茲曼機 (Restricted Boltzmann Machine,RBM)[1]以其簡單的人工神經網絡形式和快速的學習算法,越來越受到機器學習的關注,目前已經廣泛應用于數據降維、語音識別、3D物體識別、圖像轉換以及高維時間序列建模等機器學習問題,進而催生出機器學習一個新的領域,深度學習[2],并使之得到了迅猛發展。

但隨著大數據時代的到來,模型訓練需要的數據越來越多,單純通過CPU進行計算已經逐漸失去優勢,自2008年Paprotski等人研究了通過CUDA對RBM訓練的加速方法[3],并且取得了較好效果之后,利用GPU的高速運算能力以加快RBM訓練,從而構建深度學習模型,已經成為了RBM訓練的研究熱點[4-6]。目前RBM的CUDA加速方法主要體現在兩種方式,一種是基于相對成熟的CUDA并行庫,例如CUBLAS庫,另一種是根據RBM結構特點和訓練步驟設計Kernel函數,對于RBM訓練過程中目標不同的矩陣運算定義不同的Block和編寫Kernel函數。第一種方法的優點在于,加速方式較為通用,不僅適用于RBM訓練,還可應用于其他與矩陣運算相關的模型訓練;代碼運算穩定,較為健壯,不容易出現溢出問題;但是缺點在于針對性不強,不能高效利用GPU計算資源;第二種方法的優點是能夠針對RBM模型,加速比好,但是缺點為設計較為復雜,擴展性不強。因此,設計一種能夠結合兩種方式的RBM并行加速方法,既保證算法的有效性,也使得擴展性增強。

1 受限玻爾茲曼機

1.1受限玻爾茲曼機模型

玻爾茲曼機 (Boltzmann Machine,BM)是 1985年由Hinton等提出的一種起源于統計物理學的隨機遞歸神經網絡。作為一種隨機生成的Hopfield網絡,BM由可見層和隱單元層組成,用可見單元和隱單元來表示隨機網絡和隨機環境的學習模型,通過權值表示單元之間的相關性。

為克服BM訓練時間過長、難以確切計算模型分布等問題,研究人員設計了受限玻爾茲曼機。RBM通過限制BM中的層內單元連接,使得在給定同層單元狀態下臨近層單元激活概率條件獨立,其結構如圖1所示。作為無向圖模型,RBM中的V為可見單元層,表示觀測數據;H表示隱單元層,表現為特征檢測器,層內隱單元狀態組合等價于觀測數據的特征組合。文獻[7]指出RBM的隱單元和可見單元可為任意指數族,如泊松單元、高斯單元和Sofmax單元等。文獻[8]從理論方面對RBM的數據泛化能力進行了證明,得出了在足夠多數目隱單元的情況下RBM可以表征任意離散分布的結論。

圖1 RBM單元連接圖Fig.1 RBM unit connection diagram

以包含N個二值可見單元和M個二值隱單元的RBM為例,設定vi表示第i個可見單元的狀態,hj表示第j個隱單元狀態。給定狀態(v,h),模型的能量定義如式(1)所示。

其中,Wij表示可視單元i與隱單元j之間的連接權值,bi表示可視單元i的偏置,cj表示隱單元j的偏置,則RBM處于狀態(v,h)的概率如式(2)所示。

由于層間單元是無連接的,所有單元的激活狀態都是條件獨立的,則隱單元和可見單元的后驗激活概率,如式(3)、(4)所示。

其中σ(x)=1/(1+exp(-x)),在本文中也寫為Sigmoid函數。

1.2CD算法

RBM通過極大似然法則對數據進行無監督學習,即最大化訓練數據出現概率。假設訓練樣本個數為K,則RBM對數據的學習即為最大化以下目標函數,如式(5)所示。

利用隨機梯度下降法,目標函數式(5)對于各個參數的偏導如式(6)所示(以W為例)。

對于式(6)等號右側多項式中的第一個項(Positive Phase),可以通過訓練數據與式(4)直接計算出來;但是對于第二個項(Negative Phase),由于p(v.h)是無法直接通過數學推導出來的,故難以直接計算。

Hinton于2002年提出了對比散度(Contrastive Divergence,CD)算法[9],通過執行吉布斯塊采樣(block Gibbs Sampling)—分別以各個訓練數據作為初始狀態,進行k次狀態轉移(k次Step),然后將轉移后的數據作為樣本對Negative Phase估算均值實現RBM的訓練。Hinton通過實驗證明,在實際應用中,甚至只需要一次狀態轉移就能保證良好的學習效果。由此,在給定訓練數據 v(n)下,隱單元 j的特征 wj的迭代如式(7)所示。

2 CUDA實現

隨著顯卡技術的發展,最初用于計算機圖形渲染的圖像處理器 (Graphics Processing Unit,GPU)計算功能越來越強大,NVIDIA公司推出了面向通用計算的 CUDA(Compute Unified Device Architecture)運算架構[10-14],已經成功地應用到了多種計算領域。

2.1算法分析

以Step=1的CD算法為例,對RBM在訓練過程中的CUDA優化階段進行分析,設定可見單元和隱單元維數分別為I和J,N為訓練樣本數目,以箭頭表示RBM中參數參與計算的方向,則RBM的訓練步驟如圖2所示。

圖2 RBM訓練算法的步驟表示Fig.2 RBM algorithm training Steps

從圖中可以看出,RBM的訓練主要體現在步驟1~6中。這6個步驟分為矩陣乘加(步驟1、3、5、6)、0~1均勻分布隨機數產生(步驟2、4)和Sigmoid函數計算(步驟1、3、5)3個方面。這3個方面計算要求不同,因此在設計CUDA并行化時需要單獨對待。

2.2并行設計

1)矩陣乘加

鑒于矩陣運行庫CUBLAS在處理矩陣運算的高效性和通用性,因此這一部分計算可以直接通過該庫實現,主要使用庫中處理雙精度矩陣乘法運算的cublasDgemm函數。函數說明如下所示,并且所代表的運算如式(8)所示。

cublasDgemm(handle,CUBLAS_OP_N,CUBLAS_OP_N,mat1->_rows,mat2->_cols,mat2->_rows,&alpha,d_a,mat1->_rows,d_b,mat2->_rows,&beta,d_c,mat1->_rows)

其中 d_a為矩陣 a(mat1)在顯存的地址,d_b為矩陣b(mat2)在顯存的地址,d_c為計算結果c的地址,需要在計算完成以后復制到計算機內存中。

2)0~1均勻分布隨機數的產生

0~1均勻分布隨機數的產生需要CUDA隨機數生成器參與。所謂隨機數生成器(Random Number Generator,RNG),是指能夠產生隨機數序列的軟件、硬件或者二者的結合。CUDA 的RNG實質上是偽隨機數發生器 (Pseudo Random Number Generator,PRNG),下面對常用的PRNG進行簡單介紹。

1)線性同余生成器(Linear Congruence Generator,LCG)

線性同余生成器是應用較為廣泛的一種偽隨機數生成器,優點在于計算速度快、容易實現、便于移植等,它是利用數論中的同余運算來產生偽隨機數的,其隨機數遞推公式如式(9)所示。

其中a為乘子,c為增量,M為模數,Xi為序列中的第i個數,Xo稱為種子(Seed)。

2)Tausworthe序列發生器

Tausworthe序列發生器又稱為移位寄存器序列發生器,其工作原理是通過寄存器進行位移操作,直接在存儲單元中生成隨機數,遞推運算公式如式(10)所示。

其中(x0,X1,…,Xp-1)為初始值,p>q>0為整數,Xi是二進制行向量,⊕是位運算符。但是由于Tausworthe序列存在較為嚴重的相關性,很少被單獨使用,通常用于構建組合Tausworthe生成器。

3)組合發生器

組合發生器指將多個獨立的發生器按照某種方式組合在一起以產生偽隨機數,從而得到統計性能更好和周期更長的PRNG。目前CUDA中的隨機數生成器通常是幾種PRNA的組合,從而達到擴大生成器周期和摒棄單獨PRNA中存在的統計學缺陷的目的。文獻 [11]提出一種混合LCG和組合Tausworthe的隨機數產生器,周期為 2121,文獻[6]進一步對RNG進行了改良,實現Tausworthe113和CLCG4的組合發生器,其周期達到2234。

鑒于 Tausworthe113較為復雜,采用 CLCG4和組合Tausworthe共同作為隨機數生成器,周期約為 2210=121+89。其Kernel端核心代碼如下。

3)Sigmoid函數計算

文獻[5]指出,CUDA能夠實現Sigmoid函數的方式有兩種,第一種是通過CUDA提供的-expf(x)函數,定義Sigmoid函數;第二種是利用CUDA拾取紋理內存的讀取模式為cudaReadModeNormalizedFloat時數值被映射到[0,1]區間的能力,選用第二種方式。

綜上,利用CUDA實現RBM訓練的過程如圖3所示。

圖3 基于CUDA的RBM訓練并行設計Fig.3 RBM training CUDA-based parallel design

3 實驗分析

為驗證CUDA對RBM訓練加速的效果,選取MNIST手寫數字識別集為測試對象。通過對MNIST數據集進行訓練,對比RBM的訓練時間和對數據的擬合程度。實驗平臺的CPU為Intel Core i5 760@2.8GHz,主機內存4 GB,GPU采用GTX460(這與文獻[5]的GPU平臺一致,便于進行數據對比)。

CUDA優化性能主要參考的指標是加速比 (Speed-up)。加速比為程序串行執行時間與并行執行時間比值,數值越大,說明程序的并行化程度越高,CUDA優化效果越好,定義如式(1)所示。

實驗設置RBM的結構為784-Nhid,其中Nhid代表隱單元個數分別取100至800的8個數值,RBM參數的學習速率統一設置為0.01,CD訓練循環次數不超過1000。對比方法選用文獻[5]提出的CUDA設計。圖4為在不同隱單元個數下的兩種CUDA設計的加速比值。

圖4 不同CUDA方法加速比Fig.4 Speedup by different CUDA methods

從圖中可以看出,經過CUDA加速,每個RBM的訓練加速比都在25以上,表現出了較好的并行優化效率。當隱單元較少,即RBM結構小的情況下,所設計的CUDA加速與文獻[118]相比存在差距,原因是Sigmoid函數計算中發生的對紋理內存的讀取增加了顯存讀取,影響了計算效率。但隨著隱單元個數的增大,所設計的CUDA程序能夠得到更大的加速比,原因在于在CUDA框架下,所設計的CUDA程序對隱單元和可見單元隨機狀態的選取進行了硬件加速,相當于對RBM結構的參數更新進行了進一步的并行化設計。因此,隨著隱單元個數的增大,其優越性將得到體現。

表1為當隱單元個數設置為800時,2種不同運算方式下的RBM訓練時間。從表中可以看出,利用CUDA對RBM訓練進行并行化計算,加速比達到41.32,說明所設計實現的CUDA并行化對RBM的加速較為有效。

選取不同訓練樣本個數下的CUDA對RBM的加速比如圖5所示。

表1 RBM訓練時間Tab.1 RBM training time

圖5 不同樣本數目下的CDBM加速比Fig.5 Speedup under different samples number

從圖中可以看出,加速比基本與訓練樣本數目成正比,同時隨著訓練樣本數目的增多呈現出更為顯著的增長趨勢。

4 結 論

本文設計了基于CUDA的RBM并行訓練方法,實現了在GPU技術下RBM的加速訓練。相對于以往RBM的并行加速訓練,該方法能夠更好地處理大規模數據,促進了RBM模型在未來大數據環境下的實用。從實驗結果來看,本文設計實現的基于GPU的RBM并行加速實現,具有較廣的應用范圍和較高的工程價值。

[1]Becker S.An information-theoretic unsupervised learning algorithm for neural networks[D].University of Toronto,1992.

[2]Srivastava N,Salakhutdinov R R,Hinton G E.Modeling documents with deep boltzmann machines[C]//29th Conference on Uncertainty in Artificial Intelligence.Bellevue:IEEE,2013:222-227.

[3]Daniel L.Ly,Paprotski V,Danny Y.Neural Networks on GPUs:Restricted Boltzmann Machines[C]//IEEE Conference on Machine Learning and Applications.Bellevue:IEEE,2010:307-312.

[4]CaiX,XuZ,LaiG,etal.GPU-acceleratedrestricted boltzmann machine for collaborative filtering[M].Algorithms and Architectures for Parallel Processing.Springer Berlin Heidelberg,2012:303-316.

[5]Lopes N,Ribeiro B,Goncalves J.Restricted Boltzmann machines and deep belief networks on multi-core processors [C]//Neural Networks(IJCNN),NewYork:Spring,2012:1-7.

[6]薛少飛,宋彥,戴禮榮.基于多GPU的深層神經網絡快速訓練方法[J].清華大學學報:自然科學版,2013,53(6):745-748.

[7]Welling M,Rosen-Zvi M,Hinton G E.Exponential family harmoniums with an application to information retrieval[C].Advances in neural information processing systems,2004: 1481-1488.

[8]Le Roux N,Bengio Y.Representational power of restrictedBoltzmann machines and deep belief networks[J].Neural Computation,2008,20(6):1631-1649.

[9]G.E.Hinton.Training products of experts by minimizing contrastive divergence[J].Neural Computation,2002,14 (8):1711-1800.

[10]王坤.基于GPU的分類并行算法的研究與實現[J].電子設計工程,2014,(18):39-41.

[11]張聰,邢同舉,羅穎,等.基于GPU的數學形態學運算并行加速研究[J].電子設計工程,2011(19):141-143.

[12]王應戰,魏衍君.基于并行計算的木馬免疫算法研究[J].電子設計工程,2012(16):45-47.

[13]榮少巍.基于改進A*算法的水下航行器自主搜索航跡規劃[J].電子科技,2015(4):17-19,22.

[14]蔣磊,鄒兵,吳明.基于改進免疫遺傳算法的含分布式電源配電網規劃[J].陜西電力,2012(10):26-30.

Realization of RBM parallel training based on GPU

ZHANG Li-min1,LIU Kai1,FAN Xiao-lei2
(1.Naval Aeronautical and Astronautical University,Yantai 264001,China;2.Noncommissioned Officers Vocational and Technical Education College,The Second Artillery Engineering University,Qingzhou 262500,China)

In order to overcome the low efficiency of Restricted Boltzmann Machine handle large data,on the basic of parallel computing platform GPU,the realization of RBM training based on GPU is designed.By researching the training steps of RBM,the contrast divergence algorithm is redesigned to implement on GPU.Combined with previous GPU parallel solutions,matrix multiply-add operations are implemented by CUBLAS libraries.The combination of Tausworthe113 and CLCG4 is used as random number generation to get longer cycle and more concise random number.The CUDA pickup texture memory read mode is used to achieve sigmoid function value,and finally The MNIST handwriting digit database is conduct on the test of this new realization.The MNIST experiment results illustrated that the novel algorithm has good feasibility and is advantageous for hug amount of data.Compared to the previous RBM parallel code,this new GPU parallel processing have more obvious advantages on large data sets and the speedup rate reach at least 25.

RBM;GPU;CUDA;speed-up;parallel programming

TN99

A

1674-6236(2016)02-0028-04

2015-03-21稿件編號:201503294

國家自然科學基金(61032001)

張立民(1976—),男,吉林開源人,博士,教授。研究方向:信號與信息處理、軍用仿真技術。

猜你喜歡
模型設計
一半模型
重要模型『一線三等角』
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
重尾非線性自回歸模型自加權M-估計的漸近分布
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 国内黄色精品| 久久免费视频6| 在线观看国产精品日本不卡网| 日韩高清欧美| 国产哺乳奶水91在线播放| 亚洲无码日韩一区| 国产欧美精品一区二区| 99激情网| 美女被狂躁www在线观看| 人人澡人人爽欧美一区| 日本午夜影院| 欧美日韩动态图| 性做久久久久久久免费看| 欧美中日韩在线| 午夜激情福利视频| 丝袜久久剧情精品国产| 国产成人精品优优av| 青青久久91| 91亚洲国产视频| 亚洲国产成人麻豆精品| 999国产精品永久免费视频精品久久| 日本人妻丰满熟妇区| 野花国产精品入口| 欧美日韩北条麻妃一区二区| 高潮毛片无遮挡高清视频播放| 999国产精品永久免费视频精品久久 | 2020国产精品视频| 亚洲天堂区| 欧美啪啪一区| 久久久久人妻一区精品| av色爱 天堂网| 无码国产偷倩在线播放老年人| 欧美专区在线观看| 久久夜色精品| 在线a视频免费观看| 亚洲最黄视频| 波多野结衣爽到高潮漏水大喷| 亚欧美国产综合| 午夜毛片福利| 成人综合久久综合| 精品人妻无码中字系列| 美女高潮全身流白浆福利区| 亚洲av中文无码乱人伦在线r| 久久99精品久久久久纯品| 欧美日在线观看| 欧美综合区自拍亚洲综合天堂| 理论片一区| 中文无码伦av中文字幕| 久久精品国产一区二区小说| 毛片在线播放a| 91娇喘视频| 91亚洲视频下载| 欧美人与动牲交a欧美精品| 久久综合一个色综合网| 亚洲天堂777| 91香蕉国产亚洲一二三区| 久久精品国产国语对白| 久久不卡精品| 国产99在线观看| 欧美三级视频网站| 伊人久久综在合线亚洲2019| 97se亚洲综合不卡| 精品一区二区三区四区五区| 国精品91人妻无码一区二区三区| 国产美女精品一区二区| 女人av社区男人的天堂| 精品综合久久久久久97| jijzzizz老师出水喷水喷出| 亚洲第一中文字幕| 亚洲开心婷婷中文字幕| 精品无码视频在线观看| 国产精品永久久久久| 国产高清不卡视频| 一区二区无码在线视频| 亚洲综合激情另类专区| 91www在线观看| 国产极品美女在线| 午夜不卡福利| 国产毛片不卡| 久久综合五月| 国产精品永久免费嫩草研究院| 中国一级特黄视频|