0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是DNN_如何使用硬件加速DNN運算

Hx ? 作者:工程師陳翠 ? 2018-07-08 06:45 ? 次閱讀

深度神經(jīng)網(wǎng)絡(luò)(DNN)目前是許多現(xiàn)代AI應(yīng)用的基礎(chǔ)。自從DNN在語音識別和圖像識別任務(wù)中展現(xiàn)出突破性的成果,使用DNN的應(yīng)用數(shù)量呈爆炸式增加。這些DNN方法被大量應(yīng)用在無人駕駛汽車,癌癥檢測,游戲AI等方面。在許多領(lǐng)域中,DNN目前的準(zhǔn)確性已經(jīng)超過人類。與早期的專家手動提取特征或制定規(guī)則不同,DNN的優(yōu)越性能來自于在大量數(shù)據(jù)上使用統(tǒng)計學(xué)習(xí)方法,從原始數(shù)據(jù)中提取高級特征的能力,從而對輸入空間進行有效的表示。

然而,DNN超高的準(zhǔn)確性是以超高的計算復(fù)雜度為代價的。通常意義下的計算引擎,尤其是GPU,是DNN的基礎(chǔ)。因此,能夠在不犧牲準(zhǔn)確性和增加硬件成本的前提下,提高深度神經(jīng)網(wǎng)絡(luò)的能量效率和吞吐量的方法,對于DNN在AI系統(tǒng)中更廣泛的應(yīng)用是至關(guān)重要的。研究人員目前已經(jīng)更多的將關(guān)注點放在針對DNN計算開發(fā)專用的加速方法。

近日,一篇名為《Efficient Processing of Deep Neural Networks: A Tutorial and Survey》的論文橫空出世,這篇來自MIT的論文詳細介紹了DNN高效運算的最新進展,提供了DNN的綜述,以及加速DNN計算的方法。

鑒于篇幅,本文主要針對論文中的如下幾部分詳細介紹:

DNN的背景,歷史和應(yīng)用

DNN的組成部分,以及常見的DNN模型

簡介如何使用硬件加速DNN運算

DNN的背景 人工智能與深度神經(jīng)網(wǎng)絡(luò)

深度神經(jīng)網(wǎng)絡(luò),也被稱為深度學(xué)習(xí),是人工智能領(lǐng)域的重要分支,根據(jù)麥卡錫(人工智能之父)的定義,人工智能是創(chuàng)造像人一樣的智能機械的科學(xué)工程。深度學(xué)習(xí)與人工智能的關(guān)系如圖1所示:

什么是DNN_如何使用硬件加速DNN運算

圖1:深度神經(jīng)網(wǎng)絡(luò)與人工智能的關(guān)系

人工智能領(lǐng)域內(nèi),一個大的子領(lǐng)域是機器學(xué)習(xí),由Arthur Samuel在1959年定義為:讓計算機擁有不需要明確編程即可學(xué)習(xí)的能力。這意味著創(chuàng)建一個程序,這個程序可以被訓(xùn)練去學(xué)習(xí)如何去做一些智能的行為,然后這個程序就可以自己完成任務(wù)。而傳統(tǒng)的人工啟發(fā)式方法,需要對每個新問題重新設(shè)計程序。

高效的機器學(xué)習(xí)算法的優(yōu)點是顯而易見的。一個機器學(xué)習(xí)算法,只需通過訓(xùn)練,就可以解決某一領(lǐng)域中每一個新問題,而不是對每個新問題特定地進行編程。

在機器學(xué)習(xí)領(lǐng)域,有一個部分被稱作brain-inspired computation。因為人類大腦是目前學(xué)習(xí)和解決問題最好的“機器”,很自然的,人們會從中尋找機器學(xué)習(xí)的方法。盡管科學(xué)家們?nèi)栽谔剿鞔竽X工作的細節(jié),但是有一點被公認的是:神經(jīng)元是大腦的主要計算單元。人類大腦平均有860億個神經(jīng)元。神經(jīng)元相互連接,通過樹突接受其他神經(jīng)元的信號,對這些信號進行計算之后,通過軸突將信號傳遞給下一個神經(jīng)元。一個神經(jīng)元的軸突分支出來并連接到許多其他神經(jīng)元的樹突上,軸突分支和樹突之間的連接被稱為突觸。據(jù)估計,人類大腦平均有1014-1015個突觸。

突觸的一個關(guān)鍵特性是它可以縮放通過它的信號大小。這個比例因子可以被稱為權(quán)重(weight),普遍認為,大腦學(xué)習(xí)的方式是通過改變突觸的權(quán)重實現(xiàn)的。因此,不同的權(quán)重導(dǎo)致對輸入產(chǎn)生不同的響應(yīng)。注意,學(xué)習(xí)過程是學(xué)習(xí)刺激導(dǎo)致的權(quán)重調(diào)整,而大腦組織(可以被認為是程序)并不改變。大腦的這個特征對機器學(xué)習(xí)算法有很好的啟示。

神經(jīng)網(wǎng)絡(luò)與深度神經(jīng)網(wǎng)絡(luò)

神經(jīng)元的計算是輸入值的加權(quán)和這個概念啟發(fā)了神經(jīng)網(wǎng)絡(luò)的研究。這些加權(quán)和對應(yīng)于突觸的縮放值以及神經(jīng)元所接收的值的組合。此外,神經(jīng)元并不僅僅是輸入信號的加權(quán)和,如果是這樣的話,級聯(lián)的神經(jīng)元的計算將是一種簡單的線性代數(shù)運算。相反的是,神經(jīng)元組合輸入的操作似乎是一種非線性函數(shù),只有輸入達到某個閾值的時候,神經(jīng)元才會生成輸出。因此,通過類比,我們可以知道神經(jīng)網(wǎng)絡(luò)在輸入值的加權(quán)和的基礎(chǔ)上應(yīng)用了非線性函數(shù)。

圖2(a)展示了計算神經(jīng)網(wǎng)絡(luò)的示意圖,圖的最左邊是接受數(shù)值的“輸入層”。這些值被傳播到中間層神經(jīng)元,通常也叫做網(wǎng)絡(luò)的“隱藏層”。通過一個或更多隱藏層的加權(quán)和最終被傳播到“輸出層”,將神經(jīng)網(wǎng)絡(luò)的最終結(jié)果輸出給用戶。

什么是DNN_如何使用硬件加速DNN運算

圖2:神經(jīng)網(wǎng)絡(luò)示意圖

在神經(jīng)網(wǎng)絡(luò)領(lǐng)域,一個子領(lǐng)域被稱為深度學(xué)習(xí)。最初的神經(jīng)網(wǎng)絡(luò)通常只有幾層的網(wǎng)絡(luò)。而深度網(wǎng)絡(luò)通常有更多的層數(shù),今天的網(wǎng)絡(luò)一般在五層以上,甚至達到一千多層。

目前在視覺應(yīng)用中使用深度神經(jīng)網(wǎng)絡(luò)的解釋是:將圖像所有像素輸入到網(wǎng)絡(luò)的第一層之后,該層的加權(quán)和可以被解釋為表示圖像不同的低階特征。隨著層數(shù)的加深,這些特征被組合,從而代表更高階的圖像特征。例如,線可以被組合成形狀,再進一步,可以被組合成一系列形狀的集合。最后,再訓(xùn)練好這些信息之后,針對各個圖像類別,網(wǎng)絡(luò)給出由這些高階特征組成各個對象的概率,即分類結(jié)果。

推理(Inference)與訓(xùn)練(Training)

既然DNN是機器學(xué)習(xí)算法中的一員,那么它的基本編程思想仍然是學(xué)習(xí)。DNN的學(xué)習(xí)即確定網(wǎng)絡(luò)的權(quán)重值。通常,學(xué)習(xí)過程被稱為訓(xùn)練網(wǎng)絡(luò)(training)。一旦訓(xùn)練完成,程序可以使用由訓(xùn)練確定的權(quán)值進行計算,這個使用網(wǎng)絡(luò)完成任務(wù)的操作被被稱為推斷(inference)。

接下來,如圖3所示,我們用圖像分類作為例子來展示如何訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò)。當(dāng)我們使用一個DNN的時候,我們輸入一幅圖片,DNN輸出一個得分向量,每一個分數(shù)對應(yīng)一個物體分類;得到最高分數(shù)的分類意味著這幅圖片最有可能屬于這個分類。訓(xùn)練DNN的首要目標(biāo)就是確定如何設(shè)置權(quán)重,使得正確分類的得分最高(圖片所對應(yīng)的正確分類在訓(xùn)練數(shù)據(jù)集中標(biāo)出),而使其他不正確分類的得分盡可能低。理想的正確分類得分與目前的權(quán)重所計算出的得分之間的差距被稱為損失函數(shù)(loss)。因此訓(xùn)練DNN的目標(biāo)即找到一組權(quán)重,使得對一個較大規(guī)模數(shù)據(jù)集的loss最小。

什么是DNN_如何使用硬件加速DNN運算

圖3:圖像分類

權(quán)重(weight)的優(yōu)化過程類似爬山的過程,這種方法被稱為梯度下降(gradient decent)。損失函數(shù)對每個權(quán)值的梯度,即損失函數(shù)對每個權(quán)值求偏導(dǎo)數(shù),被用來更新權(quán)值(例:第t到t+1次迭代:,其中α被稱為學(xué)習(xí)率(Learning rate)。梯度值表明權(quán)值應(yīng)該如何變化以減小loss。這個減小loss值的過程是重復(fù)迭代進行的。

梯度可以通過反向傳播(Back-Propagation)過程很高效地進行計算,loss的影響反向通過網(wǎng)絡(luò)來計算loss是如何被每個權(quán)重影響的。

訓(xùn)練權(quán)重有很多種方法。前面提到的是最常見的方法,被稱為監(jiān)督學(xué)習(xí),其中所有的訓(xùn)練樣本是有標(biāo)簽的。無監(jiān)督學(xué)習(xí)是另一種方法,其中所有訓(xùn)練樣本都沒有標(biāo)簽,最終目標(biāo)是在數(shù)據(jù)中查找結(jié)構(gòu)或聚類。半監(jiān)督學(xué)習(xí)結(jié)合了兩種方法,只有訓(xùn)練數(shù)據(jù)的一小部分被標(biāo)記(例如,使用未標(biāo)記的數(shù)據(jù)來定義集群邊界,并使用少量的標(biāo)記數(shù)據(jù)來標(biāo)記集群)。最后,強化學(xué)習(xí)可以用來訓(xùn)練一個DNN作為一個策略網(wǎng)絡(luò),對策略網(wǎng)絡(luò)給出一個輸入,它可以做出一個決定,使得下一步的行動得到相應(yīng)的獎勵;訓(xùn)練這個網(wǎng)絡(luò)的過程是使網(wǎng)絡(luò)能夠做出使獎勵(即獎勵函數(shù))最大化的決策,并且訓(xùn)練過程必須平衡嘗試新行為(Exploration)和使用已知能給予高回報的行為(Exploitation)兩種方法。

用于確定權(quán)重的另一種常用方法是fine-tune,使用預(yù)先訓(xùn)練好的模型的權(quán)重用作初始化,然后針對新的數(shù)據(jù)集(例如,傳遞學(xué)習(xí))或新的約束(例如,降低的精度)調(diào)整權(quán)重。與從隨機初始化開始相比,能夠更快的訓(xùn)練,并且有時會有更好的準(zhǔn)確性。

DNN發(fā)展簡史

1940s 神經(jīng)網(wǎng)絡(luò)被提出

1960s 深度神經(jīng)網(wǎng)絡(luò)被提出

1989 識別手寫數(shù)字的神經(jīng)網(wǎng)絡(luò)(LeNet)

1990s 針對淺層網(wǎng)絡(luò)的專用硬件被開發(fā)出(Intel ETANN)

2011 基于DNN的語音識別突破(Microsoft)

2012 在視覺方面,DNN代替了傳統(tǒng)的人工提取特征的方法(AlexNet)

2014+ 用于DNN加速的硬件興起(Neuflow,DianNao)

盡管神經(jīng)網(wǎng)絡(luò)在20世紀(jì)40年代就被提出了,但一直到80年代末期才有了第一個實際應(yīng)用,識別手寫數(shù)字的LeNet。這個系統(tǒng)廣泛地應(yīng)用在支票地數(shù)字識別上。而自2010年之后,基于DNN的應(yīng)用爆炸式增長。

深度學(xué)習(xí)在2010年前后得到巨大成功主要是由三個因素導(dǎo)致的。首先是訓(xùn)練網(wǎng)絡(luò)所需的海量信息。學(xué)習(xí)一個有效的表示需要大量的訓(xùn)練數(shù)據(jù)。目前Facebook每天收到超過3.5億張圖片,沃爾瑪每小時產(chǎn)生2.5Pb的用戶數(shù)據(jù),YouTube每分鐘有300小時的視頻被上傳。因此,云服務(wù)商和許多公司有海量的數(shù)據(jù)來訓(xùn)練算法。其次是充足的計算資源。半導(dǎo)體和計算機架構(gòu)的進步提供了充足的計算能力,使得在合理的時間內(nèi)訓(xùn)練算法成為可能。最后,算法技術(shù)的進化極大地提高了準(zhǔn)確性并拓寬了DNN的應(yīng)用范圍。早期的DNN應(yīng)用打開了算法發(fā)展的大門。它激發(fā)了許多深度學(xué)習(xí)框架的發(fā)展(大多數(shù)都是開源的),這使得眾多研究者和從業(yè)者能夠很容易的使用DNN網(wǎng)絡(luò)。

ImageNet挑戰(zhàn)是機器學(xué)習(xí)成功的一個很好的例子。這個挑戰(zhàn)是涉及幾個不同方向的比賽。第一個方向是圖像分類,其中給定圖像的算法必須識別圖像中的內(nèi)容,如下圖所示。訓(xùn)練集由120萬張圖像組成,每張圖片標(biāo)有圖像所含的1000個對象類別之一。然后,該算法必須準(zhǔn)確地識別測試集中圖像。

圖4顯示了多年來ImageNet挑戰(zhàn)中各年最佳參賽者的表現(xiàn)。可以看出算法的準(zhǔn)確性最初錯誤率25%以上。 2012年,多倫多大學(xué)的一個團隊使用圖GPU的高計算能力和深層神經(jīng)網(wǎng)絡(luò)方法,即AlexNet,將錯誤率降低了約10%。他們的成就導(dǎo)致了深度學(xué)習(xí)風(fēng)格算法的流行,并不斷的改進。

什么是DNN_如何使用硬件加速DNN運算

圖4:Imagenet歷年準(zhǔn)確率變化

ImageNet挑戰(zhàn)中使用深度學(xué)習(xí)方法的隊伍,和使用GPU計算的參與者數(shù)量都在相應(yīng)增加。2012年時,只有四位參賽隊使用了GPU,而到了2014年,幾乎所有參賽者都使用了GPU。這反映了從傳統(tǒng)的計算機視覺方法到于深度學(xué)習(xí)的研究方式的完全的轉(zhuǎn)變。

在2015年,ImageNet獲獎作品ResNet 超過人類水平準(zhǔn)確率(top-5錯誤率低于5%),將錯誤率降到3%以下。而目前的重點也不過多的放在準(zhǔn)確率的提升上,而是放在其他一些更具挑戰(zhàn)性的方向上,如對象檢測和定位。這些成功顯然是DNNs應(yīng)用范圍廣泛的一個原因。

DNN的應(yīng)用

目前DNN已經(jīng)廣泛應(yīng)用到各個領(lǐng)域,下面列舉一些DNN已經(jīng)深遠影響的領(lǐng)域,和一些未來可能產(chǎn)生巨大影響的領(lǐng)域。

圖像和視頻視頻可能是大數(shù)據(jù)時代中最多的資源。它占據(jù)了當(dāng)今互聯(lián)網(wǎng)70%的流量。例如,世界范圍內(nèi)每天都會產(chǎn)生80億小時的監(jiān)控視頻。計算機視覺需要從視頻中抽取有意義的信息。DNN極大地提高了許多計算機視覺任務(wù)地準(zhǔn)確性,例如圖像分類,物體定位和檢測,圖像分割,和動作識別。

語音和語言DNN也極大地提高了語音識別和許多其他相關(guān)任務(wù)地準(zhǔn)確率,例如機器翻譯,自然語言處理和音頻生成。

醫(yī)藥DNN在基因?qū)W中扮演了重要的角色,它探究了許多疾病的基因?qū)用娴脑?,例如孤獨癥,癌癥,和脊髓性肌萎縮。它同樣也被應(yīng)用在醫(yī)學(xué)圖像檢測中,用來檢測皮膚癌,腦癌以及乳腺癌等等。

游戲近期,許多困難的AI挑戰(zhàn)包括游戲都被使用DNN的方法解決了。這些成功需要訓(xùn)練技術(shù)上的創(chuàng)新,以及強化學(xué)習(xí)(網(wǎng)絡(luò)通過自身輸出的結(jié)果進行反饋訓(xùn)練)。DNN在Atari(一種流行的家用游戲機)和圍棋上,已經(jīng)有了超過人類的準(zhǔn)確度。

機器人DNN在一些機器人學(xué)的任務(wù)上同樣取得了成功,例如機械臂抓取,運動規(guī)劃,視覺導(dǎo)航,四旋翼飛行器穩(wěn)定性控制以及無人駕駛汽車駕駛策略。

DNN目前已經(jīng)有了很廣泛的應(yīng)用。我們將目光放向未來,DNN會在醫(yī)藥和機器人領(lǐng)域扮演更重要的角色。同時,也會在金融(例如交易,能源預(yù)測和風(fēng)險評估),基礎(chǔ)設(shè)施建設(shè)(例如結(jié)構(gòu)安全性,交通控制),天氣預(yù)報和事件檢測中有更多的應(yīng)用。

嵌入式與云

不同的DNN應(yīng)用和過程(training vs inference)有不同的計算需求。尤其是訓(xùn)練過程,需要一個較大的數(shù)據(jù)集和大量計算資源來進行迭代,因此需要在云端進行計算。而推理過程可以在云端或者終端進行(例如物聯(lián)網(wǎng)設(shè)備或移動終端)。

在DNN的許多應(yīng)用中,需要推理過程在傳感器附近。例如無人駕駛汽車或者無人機導(dǎo)航或者機器人,處理過程就必須在本地進行,因為延遲和傳輸?shù)牟环€(wěn)定性造成的安全風(fēng)險過高。然而對視頻進行處理計算相當(dāng)復(fù)雜。因此,能夠高效分析視頻的低成本硬件仍然是制約DNN應(yīng)用的重要因素。能夠執(zhí)行DNN推理過程的嵌入式平臺要有嚴格的能量消耗,計算和存儲成本限制。這篇論文在推理過程中的計算需求方面進行了詳細的介紹,感興趣的讀者可以參考文末連接進一步深入了解。

DNN組成部分與常見模型

DNN針對不同的應(yīng)用有很多種形式,而流行的形式也在快速地進化,以改善準(zhǔn)確性和高效性。所有DNN的輸入都是一系列需要被網(wǎng)絡(luò)分析的值。這些值可以是一幅圖片的像素,音頻波形的幅值采樣值,或者一些表示系統(tǒng)或游戲狀態(tài)的數(shù)值。

處理輸入的網(wǎng)絡(luò)主要有兩種形式:前饋(Feed Forward)或者循環(huán)(Recurrent),如圖2(c)所示。在前饋網(wǎng)絡(luò)中,所有的計算都是對前面層輸出的一系列運算。最后的運算生成網(wǎng)絡(luò)的輸出,例如一個圖片包含某個物體的概率值,一段音頻序列包含某個單詞的概率值。在這樣的DNN中,網(wǎng)絡(luò)是無記憶性的,針對同一段輸入,輸出總是相同的,而與網(wǎng)絡(luò)先前的輸入是無關(guān)的。

相反,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),擁有內(nèi)部記憶,允許長期的依賴影響輸出。其中LSTM(Long Short Term Memory network)是RNN中很流行的一個變體。在這些網(wǎng)絡(luò)中,一些內(nèi)部中間操作生成的值會被存儲在網(wǎng)絡(luò)中,并在后面的操作中與其他輸入結(jié)合,共同作為輸入。

如圖2(d)左部分網(wǎng)絡(luò),DNN可以由全連接層組成(Fully-Connected Layer,也叫做多層感知機)。在全連接層中,輸出激活是所有輸入激活的加權(quán)和(前后兩層的神經(jīng)元是全部連接在一起的)。由于臨近兩層的所有神經(jīng)元都是相互連接的,這會導(dǎo)致權(quán)重參數(shù)過多,需要大量的存儲空間和計算資源。不過幸運的是,在許多應(yīng)用中,我們可以通過設(shè)置某些激活之間連接的權(quán)值為0來減少參數(shù)的數(shù)量,而不影響準(zhǔn)確性。這種叫做稀疏連接層(Sparsely-Connected Layer),如圖2(d)右部分網(wǎng)絡(luò)。

為了減少權(quán)重參數(shù),提高計算效率,我們可以更進一步,限制對輸出有貢獻的權(quán)值的數(shù)量。如果輸出值是輸入中一個固定窗口大小的函數(shù),就可以實現(xiàn)結(jié)構(gòu)上的稀疏性。如果每個計算每個輸出時的權(quán)重都是相同的,那么就可以進一步提升效率。權(quán)值共享(weight sharing)可以極大地降低權(quán)重對存儲空間的需求。

一個最流行的窗口化,權(quán)值共享的網(wǎng)絡(luò)就是卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network)。如圖5(a)所示,每個輸出僅僅由一小個鄰域的激活的加權(quán)和計算得到。每個濾波器擁有有限的感知野(receptive field),輸入中超過一定距離的值的權(quán)重都被設(shè)置為零。同時,對于每個輸出,同樣的權(quán)值是被共享的,也就是說濾波器有空間不變性。

什么是DNN_如何使用硬件加速DNN運算

圖5:卷積

DNN組成部分

卷積神經(jīng)網(wǎng)絡(luò):如圖6所示,由多個卷積層組成(CONV),每個卷積層對各自的輸入進行高階抽象,這種高階抽象被稱為特征圖(feature map,fmap)。CNN可以通過非常深的層級實現(xiàn)極高的性能。卷積神經(jīng)網(wǎng)絡(luò)被廣泛應(yīng)用在圖像理解,語音識別,游戲,以及機器人學(xué)等。圖5(b)介紹了CNN卷積的過程,CNN中的每個卷積層主要由高維卷積構(gòu)成。輸入為一系列二維特征圖(input feature map),特征圖的個數(shù)被稱為通道,這里有C個通道。卷積層輸出的每個點都是所有通道卷積之和。卷積層輸出的通道數(shù)取決于濾波器的個數(shù),本例中有M個濾波器,因此輸出特征圖為M通道。

什么是DNN_如何使用硬件加速DNN運算

圖6:卷積神經(jīng)網(wǎng)絡(luò)

非線性函數(shù):在每個卷積或全連接計算之后,都會使用一個非線性激活函數(shù)。如圖7所示,不同種類的非線性函數(shù)向DNN中引入非線性。起初DNN經(jīng)常使用Sigmoid或tanh函數(shù),目前ReLU和它的一些變種函數(shù)被證明可以更簡單,更易訓(xùn)練,同時也能達到更高的準(zhǔn)確性,因此變得越來越流行。

什么是DNN_如何使用硬件加速DNN運算

圖7:常用非線性激活函數(shù)

池化(Pooling):池化可以使網(wǎng)絡(luò)魯棒性更強。通常池化都是不重疊的,這樣能降低表示的維數(shù),減小參數(shù)量。

什么是DNN_如何使用硬件加速DNN運算

圖8:池化

標(biāo)準(zhǔn)化(Normalization):控制各層輸入的分布可以極大的加速訓(xùn)練過程并提高準(zhǔn)確度。常有的如批標(biāo)準(zhǔn)化(batch normalization)(如下公式),它更進一步的進行縮放和平移,其中γ和β為參數(shù),需要在訓(xùn)練中學(xué)習(xí)。

常見DNN模型

LeNet:1989年第一個CNN方法,為了解決手寫數(shù)字識別而設(shè)計的。

AlexNet:它在2012年贏得了ImageNet挑戰(zhàn),是第一個使用CNN方法贏得ImageNet的網(wǎng)絡(luò)。它擁有5個卷積層和3個全連接層。

Overfeat:它與AlexNet結(jié)構(gòu)很相似,同樣擁有5個卷積層和3個全連接層,區(qū)別是Overfeat的濾波器數(shù)量更多,所以準(zhǔn)確度略有提升。

VGG-16:網(wǎng)絡(luò)深度大大加深,達到16層,其中包含13個卷積層和3個全連接層。為了平衡網(wǎng)絡(luò)層數(shù)加深而導(dǎo)致的成本增加,一個大的濾波器被分解為多個小的濾波器,來減小參數(shù)數(shù)量,并具有相同的感知野。VGG有兩個模型,還有一個VGG-19的模型,比VGG-16的Top-5錯誤率低0.1%。

什么是DNN_如何使用硬件加速DNN運算

圖9:為了減少參數(shù),為了使感知野大小不變,使用兩個較小的濾波器代替大的濾波器

GoogLeNet:網(wǎng)絡(luò)深度達到22層,同時引入了Inception模型,如圖10所示。之前的模型通常是級聯(lián)的,而Inception模型是并行連接的。可以看到,它使用了多種大小的濾波器對輸入進行處理,這是為了能夠在不同尺度上處理輸入。22層網(wǎng)絡(luò)包括了三個卷積層,接下來使9個inceptioin層(每層相當(dāng)于兩個卷積層),以及一個全連接層。

什么是DNN_如何使用硬件加速DNN運算

圖10:Inception模型

ResNet:也叫做殘差網(wǎng)絡(luò)(Residual Net)。使用了殘差連接使得網(wǎng)絡(luò)變得更深(34層,或更多甚至千層)。它是ImageNet挑戰(zhàn)中第一個top-5錯誤率低于人類的。當(dāng)網(wǎng)絡(luò)層次變得更深時,訓(xùn)練時的一個難點就是梯度消失(Vanishing Gradient)。由于沿著網(wǎng)絡(luò)進行反向傳播時,梯度會越來越小,導(dǎo)致對于很深的網(wǎng)絡(luò),最初幾層網(wǎng)絡(luò)的權(quán)重基本不會更新。殘差網(wǎng)絡(luò)引入了“短接”模型,包含了全等連接,使得梯度傳播可以跳過卷積層,即使網(wǎng)絡(luò)層數(shù)達到一千層仍可以訓(xùn)練。

什么是DNN_如何使用硬件加速DNN運算

圖11:殘差模型

DNN處理的硬件

由于DNN的流行,許多硬件平臺都針對DNN處理的特性進行針對性的開發(fā)。無論是服務(wù)器級別的還是嵌入式的SoC硬件都在快速發(fā)展。因此,了解各種平臺如何加速計算,是十分重要的。

CONV和FC層的基本組成都是乘加操作(Multiply-and-Accumulate,MAC),可以很容易的并行化。為了實現(xiàn)高性能,如圖12所示,包括時間和空間的架構(gòu)的經(jīng)典模型經(jīng)常被使用。時間架構(gòu)(也稱作SIMD或SIMT)主要出現(xiàn)在CPU或GPU中。它對大量ALU使用集中控制。這些ALU智能從存儲器層次結(jié)構(gòu)中獲取數(shù)據(jù),并且彼此不能通信數(shù)據(jù)。相比之下,空間架構(gòu)使用數(shù)據(jù)流處理,即ALU形成處理鏈,使得它們能直接將數(shù)據(jù)從一個傳遞到另一個。每個ALU有自己的控制邏輯和本地內(nèi)存,稱為暫存器或注冊文件。空間架構(gòu)主要使用在為DNN專門設(shè)計的ASIC中。

什么是DNN_如何使用硬件加速DNN運算

圖12:時間和空間架構(gòu)

對于時間架構(gòu),可以使用核心中的計算轉(zhuǎn)換(Computational Transform)來減少乘法的數(shù)量,以增加吞吐量(Throughput)。

對于加速硬件中使用的空間架構(gòu),使用存儲器層次結(jié)構(gòu)中的低成本內(nèi)存,來增加數(shù)據(jù)重利用率,以降低能耗。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    深入理解DNN加速器中的基本單元——DSP

    DNN加速器的設(shè)計一直在兩個方面使力:通用架構(gòu)和高效性能。通用性需要自頂向下的設(shè)計,首先綜合各種神經(jīng)網(wǎng)絡(luò)的算子設(shè)計一套標(biāo)準(zhǔn)的指令集,然后根據(jù)硬件平臺的特點,考察計算資源,存儲資源以及帶寬,進行
    的頭像 發(fā)表于 07-28 17:56 ?7183次閱讀

    MCU廠推多樣解決方案 DSP/FPU硬件加速芯片整合

    差距,如果僅需要SDP或FPU進行運算加速,又不想選用高單價SOC,這時整合DSP或FPU硬件加速單元的 MCU產(chǎn)品、不僅可以更好的提供運行效能,同時又能在成本控制上表現(xiàn)更加優(yōu)異。MCU整合芯片封裝
    發(fā)表于 10-14 17:17

    【我是電子發(fā)燒友】如何加速DNN運算?

    。鑒于篇幅,本文主要針對論文中的如下幾部分詳細介紹:DNN的背景,歷史和應(yīng)用DNN的組成部分,以及常見的DNN模型簡介如何使用硬件加速DNN
    發(fā)表于 06-14 21:01

    神經(jīng)網(wǎng)絡(luò)DNN知識點總結(jié)

    DNN:關(guān)于神經(jīng)網(wǎng)絡(luò)DNN的知識點總結(jié)(持續(xù)更新)
    發(fā)表于 12-26 10:41

    東芝新一代圖像識別人工智能處理器ViscontiTM5的DNN硬件IP

    東芝成功研發(fā)出面向汽車駕駛員輔助系統(tǒng)的圖像識別人工智能處理器ViscontiTM5的DNN硬件IP
    發(fā)表于 07-25 07:45

    基于FPGA Nios-Ⅱ的矩陣運算硬件加速器設(shè)計

    針對復(fù)雜算法中矩陣運算量大, 計算復(fù)雜, 耗時多, 制約算法在線計算性能的問題, 從硬件實現(xiàn)角度, 研究基于FPGA/Nios-Ⅱ的矩陣運算硬件加速器設(shè)計, 實現(xiàn)矩陣并行計算。首先根據(jù)
    發(fā)表于 12-06 17:30 ?89次下載
    基于FPGA Nios-Ⅱ的矩陣<b class='flag-5'>運算</b><b class='flag-5'>硬件加速</b>器設(shè)計

    一種基于FPGA的高性能DNN加速器自動生成方案

    可是,設(shè)計一個基于FPGA的高性能DNN推理加速器還是充滿了困難,它需要寄存器傳輸級(RTL)編程技巧,硬件驗證知識和豐富的硬件資源分配經(jīng)驗等硬件
    的頭像 發(fā)表于 11-16 10:39 ?5539次閱讀

    UIUC推出最新DNN/FPGA協(xié)同方案 助力物聯(lián)網(wǎng)終端設(shè)備AI應(yīng)用

    UIUC、IBM 和 Inspirit IoT, Inc(英睿物聯(lián)網(wǎng))的研究人員提出 DNN 和 FPGA 加速器的協(xié)同設(shè)計方案(DNN/FPGA co-design),通過首創(chuàng)的「Auto-
    發(fā)表于 06-10 14:39 ?1229次閱讀
    UIUC推出最新<b class='flag-5'>DNN</b>/FPGA協(xié)同方案 助力物聯(lián)網(wǎng)終端設(shè)備AI應(yīng)用

    淺析深度神經(jīng)網(wǎng)絡(luò)(DNN)反向傳播算法(BP)

    在 深度神經(jīng)網(wǎng)絡(luò)(DNN)模型與前向傳播算法 中,我們對DNN的模型和前向傳播算法做了總結(jié),這里我們更進一步,對DNN的反向傳播算法(Back Propagation,BP)做一個總結(jié)。 1.
    的頭像 發(fā)表于 03-22 16:28 ?3669次閱讀
    淺析深度神經(jīng)網(wǎng)絡(luò)(<b class='flag-5'>DNN</b>)反向傳播算法(BP)

    3個DNN的項目介紹

    例如,經(jīng)過訓(xùn)練以識別狗品種的 DNN 將遍歷給定的圖像并計算圖像中的狗是某個品種的概率。用戶可以查看結(jié)果并選擇網(wǎng)絡(luò)應(yīng)該顯示哪些概率(超過某個閾值等)并返回建議的標(biāo)簽。每個數(shù)學(xué)操作都被認為是一個層,復(fù)雜的 DNN 有很多層,因此被稱為“深度”網(wǎng)絡(luò)。
    的頭像 發(fā)表于 06-16 09:27 ?1593次閱讀

    FPGA在新興DNN推理領(lǐng)域的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《FPGA在新興DNN推理領(lǐng)域的應(yīng)用.pdf》資料免費下載
    發(fā)表于 09-15 10:52 ?0次下載
    FPGA在新興<b class='flag-5'>DNN</b>推理領(lǐng)域的應(yīng)用

    新興DNN推理領(lǐng)域的FPGA

    電子發(fā)燒友網(wǎng)站提供《新興DNN推理領(lǐng)域的FPGA.pdf》資料免費下載
    發(fā)表于 09-15 10:09 ?0次下載
    新興<b class='flag-5'>DNN</b>推理領(lǐng)域的FPGA

    使用賽靈思Alveo加速器卡加速DNN

    電子發(fā)燒友網(wǎng)站提供《使用賽靈思Alveo加速器卡加速DNN.pdf》資料免費下載
    發(fā)表于 09-18 09:27 ?1次下載
    使用賽靈思Alveo<b class='flag-5'>加速</b>器卡<b class='flag-5'>加速</b><b class='flag-5'>DNN</b>

    AI芯片設(shè)計DNN加速器buffer管理策略

    如前所述,數(shù)據(jù)緩存是創(chuàng)建高效DNN加速器的關(guān)鍵組件之一。因此,除了選擇適當(dāng)?shù)臄?shù)據(jù)流(控制數(shù)據(jù)緩存的位置和時間)外,DNN加速器還需要一個緩存方案
    的頭像 發(fā)表于 10-17 17:23 ?1446次閱讀
    AI芯片設(shè)計<b class='flag-5'>DNN</b><b class='flag-5'>加速</b>器buffer管理策略

    深度神經(jīng)網(wǎng)絡(luò)(DNN)架構(gòu)解析與優(yōu)化策略

    深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)作為機器學(xué)習(xí)領(lǐng)域中的一種重要技術(shù),以其強大的特征學(xué)習(xí)能力和非線性建模能力,在多個領(lǐng)域取得了顯著成果。DNN的核心在于其多層結(jié)構(gòu),通過
    的頭像 發(fā)表于 07-09 11:00 ?1894次閱讀