麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

混合精度深度學習算法的制作方法

文檔序號:11143519閱讀:1579來源:國知局
混合精度深度學習算法的制造方法與工藝

本發明涉及深度學習算法的技術領域,具體涉及一種混合精度深度學習算法。



背景技術:

深度學習是機器學習研究中的一個新的領域,其動機在于建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像、聲音和文本,其概念由Hinton等人于2006年提出?;谏疃戎眯啪W絡(DBN)提出非監督貪心逐層訓練算法,為解決深層結構相關的優化難題帶來希望,隨后提出多層自動編碼器深層結構。此外,Lecun等人提出的卷積神經網絡是第一個真正多層結構學習算法,它利用空間相對關系減少參數數目以提高訓練性能。深度神經網絡是一種具備至少一個隱層的神經網絡,圖1為神經元的示意圖,圖2為神經網絡結構的示意圖。與淺層神經網絡類似,深度神經網絡也能夠為復雜非線性系統提供建模,但多出的層次為模型提供了更高的抽象層次,因而提高了模型的能力。深度學習是一種典型的計算密集型問題,計算量非常大。目前而言,有雙精度的深度學習,也有單精度的深度學習,雖然結果都是收斂的,但是精度不一樣。對于這種計算密集型的應用,一個較好的選擇就是使用眾核加速,比如使用GPU(圖形處理器)進行加速計算。對于這類加速部件而言,單精度的減速速度往往是雙精度的兩倍,因此,利用單精度計算來達到雙精度的結果是一個值得研究的課題。

在現代體系結構上,32位浮點運算通常至少要比64位浮點運算快兩倍。人們很早就發現在求解線性方程組時可以采用低精度計算獲得計算加速,而只用少量的高精度計算達到與全部用高精度的一致的計算結果。1948年,威爾金森在設計、制造圖靈計算機時,提出求解線性方程組的迭代改進(iterative refinement)。求解線性方程組Ax=b的迭代改進思想可以描述為:

x(0)=0

d(s)=b-Ax(s)compute residual in high precision

Ac(s)=d(s)solve equation system in low precision

x(s+1)=x(s)+c(s)accumulate solution in high precision

威爾金森和他的合作者們證明:如果矩陣A不是高度病態,連續對x用混合精度求解,會收斂到全部用高精度計算的結果。對于線性方程組求解,90%以上的浮點計算可以通過低精度來完成,并且不會影響解的精度?;旌暇扔嬎愕闹饕枷胧峭ㄟ^對計算密集部分采用低精度,對少量關鍵步驟采用高精度,從而達到計算加速的一種策略。

混合精度計算的有效性在于必須保證最終的計算精度沒有損失。Langou等(2006年)在Cell及主流CPU上應用于稠密矩陣求解對混合精度算法的有效性進行了全面測試。Goddeke等(2008年)在大規模矩陣的多重網格求解進行了測試。這些測試證實了混合精度計算結果與全部用高精度計算結果的精度完全一致。



技術實現要素:

針對相關技術中存在的不足,本發明所要解決的技術問題在于:提供一種既保證了計算精度不變,又提高了計算效率的混合精度深度學習算法。

為解決上述技術問題,本發明采用的技術方案為:混合精度深度學習算法,包括以下步驟:S101、利用單精度眾核處理器進行前向傳播計算,對每一網絡層計算出每一個神經元的值;S102、利用單精度眾核處理器進行后向傳播計算,對每一網絡層計算出誤差殘量值;S103、利用單精度眾核處理器計算權值的增量;S104、將單精度眾核處理器計算出的增量權值更新到高精度眾核處理器計算出的增量權值上,完成一次迭代計算。

優選地,所述混合精度深度學習算法發生于深度學習的迭代后期。

優選地,步驟102中,所述進行后向傳播計算,對每一網絡層計算出誤差殘量值,具體包括:將上一層的殘差乘以當前層的權值,并與當前層的梯度做乘法,得出所有層的誤差殘量值。

優選地,步驟103中,所述計算權值的增量,具體包括:利用后向傳播中計算出來的每一網絡層的殘差值,通過梯度等計算出權值變化量。

本發明的有益技術效果在于:本發明中的混合精度深度學習算法,先利用單精度進行前向傳播計算、后向傳播計算以及權值增量的計算,對每一網絡層計算出每一個神經元的值、誤差殘量值和權值的增量,再將上述步驟計算出的單精度增量權值更新到高精度權值上,完成一次迭代計算;不同于某些優化算法在提高效率的同時也需要改變精度的特征,本發明對計算密集部分采用低精度、對少量關鍵步驟采用高精度的計算加速方法,其得出的結果,和全部采用高精度計算得出的結果的精度完全一致;本發明中的深度學習采用了眾核處理器來進行加速,而對眾核處理器而言,單精度往往要比雙精度快一倍,因此混合精度計算能極大的提高計算速度;此外,由于算法中大量利用單精度,因此相應的通信量也降低了一倍,在深度學習中,各層之間的連接關系往往為全連接,因此,減小通信量能夠極大的提高算法的可擴展能力。

附圖說明

圖1是深度學習算法中神經元的示意圖;

圖2為深度學習算法中神經網絡結構的示意圖;

圖3是本發明實施例一提供的混合精度深度學習算法的流程示意圖。

具體實施方式

為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部的實施例;基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。

圖3是本發明實施例一提供的混合精度深度學習算法的流程示意圖,如圖3所示,混合精度深度學習算法,包括以下步驟:

S101、利用單精度眾核處理器進行前向傳播計算,對每一網絡層計算出每一個神經元的值。

S102、利用單精度眾核處理器進行后向傳播計算,對每一網絡層計算出誤差殘量值。

S103、利用單精度眾核處理器計算權值的增量。

S104、將單精度眾核處理器計算出的增量權值更新到高精度眾核處理器計算出的增量權值上,完成一次迭代計算。

深度學習算法在實現上主要分為以下三個階段:前向傳播,后向傳播,參數更新。前向傳播可以簡單理解為根據給定的輸入計算輸出。通過組合每一個layer層的計算,(可以理解為f(x)=h(g(x))這種復合函數的形式),傳播方式是自底向上(bottom to top,所以我們稱作前向傳播)。如圖2所示。其主要計算流程為:

后向傳播算法的主要思路為:給定一個樣例(x,y),首先進行“前向傳導”運算,計算出網絡中所有的激活值,包括h{W,b}(x)的輸出值。之后,針對第l層的每一個節點i,計算出其“殘差”δil,該殘差表明了該節點對最終輸出值的殘差產生了多少影響。對于最終的輸出節點,可以直接算出網絡產生的激活值與實際值之間的差距,將這個差距定義為δin(第n層表示輸出層)。對于隱藏單元如何處理呢?將基于節點(第l+1層節點)殘差的加權平均值計算δil,這些節點以ail作為輸入。通過與權值以及當前層的導數做計算,可逐層得出每一層的殘差。

概括地說,后向傳播計算就是利用上一層的殘差乘以當前層的權值,并與當前層的梯度做乘法,這樣得出所有層的殘差值。

最后一步就是權值參數的更新,就是利用反向傳播中計算出來的每一層的殘差值,通過梯度等計算出權值變化量,然后進行權值更新。

具體地,所述混合精度深度學習算法發生于深度學習的迭代后期。

這種利用混合精度進行計算的方法,之所以能夠保證精度不損失,其實是有一個前提條件的,即每次更新的增量值在絕對值上都遠小于全量值,從而增量只要有少數幾位的有效數字即可滿足精度要求。但是,深度學習在開始階段迭代的時候,增量值和全量值,大小差異并不大,只是到了迭代后期,迭代值比較接近真值時,二者才滿足這個前提條件。因此,目前這種混合精度的計算方案只能用在迭代后期。這往往也是非常重要的,因為迭代的大部分時間,大概百分之八十左右是花在后期的迭代中的。

具體地,步驟102中,所述進行后向傳播計算,對每一網絡層計算出誤差殘量值,具體包括:

將上一層的殘差乘以當前層的權值,并與當前層的梯度做乘法,得出所有層的誤差殘量值。

具體地,步驟103中,所述計算權值的增量,具體包括:

利用后向傳播中計算出來的每一網絡層的殘差值,通過梯度等計算出權值變化量。

與現有技術相比,本發明具有以下優點:1、保證了計算精度不變;不同于某些優化算法,在提高效率的同時也改變了精度,這樣在某些對精度要求較高的地方,是難以讓人接受的。2、提高了計算效率,當前深度學習廣泛采用了眾核處理器進行加速,而對眾核處理器而言,單精度往往要比雙精度快一倍,因此混合精度計算能極大的提高計算速度。3、可擴展能力強,由于算法中大量利用單精度,因此相應的通信量也降低了一倍;在深度學習中,各層之間的連接關系往往為全連接,因此,減小通信量能夠極大的提高算法的可擴展能力。

最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 扶风县| 肇庆市| 定西市| 海安县| 扎兰屯市| 东乡族自治县| 改则县| 武汉市| 英德市| 阿拉善左旗| 宜阳县| 华亭县| 永吉县| 南漳县| 元氏县| 丹阳市| 富平县| 科技| 奉化市| 郴州市| 鸡西市| 沅江市| 泸定县| 吐鲁番市| 梨树县| 乌拉特中旗| 桐梓县| 南开区| 蚌埠市| 广水市| 湖南省| 兴化市| 都安| 无极县| 仁寿县| 潞西市| 楚雄市| 疏附县| 寻甸| 平安县| 津市市|