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

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

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

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

電子工程師 ? 來源:阿里云云棲社區(qū) ? 2021-03-29 09:14 ? 次閱讀

計算機(jī)具有高儲量的硬盤和強(qiáng)大的CPUGPU。但是智能手機(jī)卻沒有,為了彌補(bǔ)這個缺陷,我們需要技巧來讓智能手機(jī)高效地運(yùn)行深度學(xué)習(xí)應(yīng)用程序。

介紹

深度學(xué)習(xí)是一個令人難以置信的靈活且強(qiáng)大的技術(shù),但運(yùn)行的神經(jīng)網(wǎng)絡(luò)可以在計算方面需要非常大的電力,且對磁盤空間也有要求。這通常不是云空間能夠解決的問題,一般都需要大硬盤服務(wù)器上運(yùn)行驅(qū)動器和多個GPU模塊。

不幸的是,在移動設(shè)備上運(yùn)行神經(jīng)網(wǎng)絡(luò)并不容易。事實(shí)上,即使智能手機(jī)變得越來越強(qiáng)大,它們?nèi)匀痪哂杏邢薜挠嬎隳芰?、電池壽命和可用磁盤空間,尤其是對于我們希望保持盡可能輕的應(yīng)用程序。這樣做可以實(shí)現(xiàn)更快的下載速度、更小的更新時間和更長的電池使用時間,這些都是用戶所欣賞的。

為了執(zhí)行圖像分類、人像模式攝影、文本預(yù)測以及其他幾十項(xiàng)任務(wù),智能手機(jī)需要使用技巧來快速,準(zhǔn)確地運(yùn)行神經(jīng)網(wǎng)絡(luò),而無需使用太多的磁盤空間。

在這篇文章中,我們將看到一些最強(qiáng)大的技術(shù),使神經(jīng)網(wǎng)絡(luò)能夠在手機(jī)上實(shí)時運(yùn)行。

使神經(jīng)網(wǎng)絡(luò)變得更小更快的技術(shù)

基本上,我們對三個指標(biāo)感興趣:模型的準(zhǔn)確性、速度以及它在手機(jī)上占用的空間量。由于沒有免費(fèi)午餐這樣的好事,所以我們必須做出妥協(xié)。

對于大多數(shù)技術(shù),我們會密切關(guān)注我們的指標(biāo)并尋找我們稱之為飽和點(diǎn)的東西。這是一個指標(biāo)的收益停止而其他指標(biāo)損失的時刻。通過在飽和點(diǎn)之前保持優(yōu)化值,我們可以獲得最佳值。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

在這個例子中,我們可以在不增加錯誤的情況下顯著減少昂貴的操作次數(shù)。但是,在飽和點(diǎn)附近,錯誤變得太高而無法接受。

1. 避免完全連接的層

完全連接的層是神經(jīng)網(wǎng)絡(luò)最常見的組成部分之一,它們曾經(jīng)創(chuàng)造奇跡。然而,由于每個神經(jīng)元都連接到前一層的所有神經(jīng)元,因此它們需要存儲和更新眾多參數(shù)。這對速度和磁盤空間是不利的。

卷積層是利用輸入中的局部一致性(通常是圖像)的層。每個神經(jīng)元不再連接到前一層的所有神經(jīng)元。這有助于在保持高精度的同時減少連接/重量的數(shù)量。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

完全連接層中的連接/權(quán)重比卷積層中多得多。

使用很少或沒有完全連接的層可以減少模型的大小,同時保持高精度。這可以提高速度和磁盤使用率。

在上面的配置中,具有1024個輸入和512個輸出的完全連接層,這個完全連接層大約有500k個參數(shù)。如果是具有相同特征和32個卷積層特征映射,那么它將只具有50K參數(shù),這是一個10倍的改進(jìn)!

2. 減少通道數(shù)量和內(nèi)核大小

這一步代表了模型復(fù)雜性和速度之間的一個非常直接的折衷。卷積層中有許多通道允許網(wǎng)絡(luò)提取相關(guān)信息,但需付出代價。刪除一些這樣的功能是節(jié)省空間并使模型變得更快的簡單方法。

我們可以用卷積運(yùn)算的接受域來做同樣的事情。通過減小內(nèi)核大小,卷積對本地模式的了解較少,但涉及的參數(shù)較少。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

較小的接受區(qū)域/內(nèi)核大小計算起來更便宜,但傳達(dá)的信息較少。

在這兩種情況下,通過查找飽和點(diǎn)來選擇地圖/內(nèi)核大小的數(shù)量,以便精度不會降低太多。

3. 優(yōu)化縮減采樣(Optimizing the downsampling)

對于固定數(shù)量的層和固定數(shù)量的池操作,神經(jīng)網(wǎng)絡(luò)可以表現(xiàn)得非常不同。這來自于一個事實(shí),即表示該數(shù)據(jù)以及計算量的依賴于在池操作完成:

當(dāng)池化操作提早完成時,數(shù)據(jù)的維度會降低。越小的維度意味著網(wǎng)絡(luò)處理速度越快,但意味著信息量越少,準(zhǔn)確性越差。

當(dāng)聯(lián)網(wǎng)操作在網(wǎng)絡(luò)后期完成時,大部分信息都會保留下來,從而具有很高的準(zhǔn)確性。然而,這也意味著計算是在具有許多維度的對象上進(jìn)行的,并且在計算上更昂貴。

在整個神經(jīng)網(wǎng)絡(luò)中均勻分布下采樣作為一個經(jīng)驗(yàn)有效的架構(gòu),并在準(zhǔn)確性和速度之間提供了一個很好的平衡。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

早期的池化速度很快,晚期的池化是準(zhǔn)確的,均勻間隔的池化是有點(diǎn)兩者。

4. 修剪重量(Pruning the weights)

在訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)中,一些權(quán)重對神經(jīng)元的激活起著強(qiáng)烈作用,而另一些權(quán)重幾乎不影響結(jié)果。盡管如此,我們?nèi)匀粚@些弱權(quán)重做一些計算。

修剪是完全去除最小量級連接的過程,以便我們可以跳過計算。這可能會降低了準(zhǔn)確性,但使網(wǎng)絡(luò)更輕、更快。我們需要找到飽和點(diǎn),以便盡可能多地刪除連接,而不會過多地?fù)p害準(zhǔn)確性。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

除去最薄弱的連接以節(jié)省計算時間和空間。

5. 量化權(quán)重(Quantizing the weights)

為了將網(wǎng)絡(luò)保存在磁盤上,我們需要記錄網(wǎng)絡(luò)中每個單一權(quán)重的值。這意味著為每個參數(shù)保存一個浮點(diǎn)數(shù),這代表了磁盤上占用的大量空間。作為參考,在C中,一個浮點(diǎn)占用4個字節(jié),即32個比特。一個參數(shù)在數(shù)億的網(wǎng)絡(luò)(例如GoogLe-Net或VGG-16)可以輕松達(dá)到數(shù)百兆,這在移動設(shè)備上是不可接受的。

為了保持網(wǎng)絡(luò)足跡盡可能小,一種方法是通過量化它們來降低權(quán)重的分辨率。在這個過程中,我們改變了數(shù)字的表示形式,使其不再能夠取得任何價值,但相當(dāng)受限于一部分?jǐn)?shù)值。這使我們只能存儲一次量化值,然后參考網(wǎng)絡(luò)的權(quán)重。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

量化權(quán)重存儲鍵而不是浮動。

我們將再次通過查找飽和點(diǎn)來確定要使用多少個值。更多的值意味著更高的準(zhǔn)確性,但也是更大的儲存空間。例如,通過使用256個量化值,每個權(quán)重可以僅使用1個字節(jié) 即 8個比特來引用。與之前(32位)相比,我們已將大小除以4!

6. 編碼模型的表示

我們已經(jīng)處理了關(guān)于權(quán)重的一些事情,但是我們可以進(jìn)一步改進(jìn)網(wǎng)絡(luò)!這個技巧依賴于權(quán)重不均勻分布的事實(shí)。一旦量化,我們就沒有相同數(shù)量的權(quán)值來承載每個量化值。這意味著在我們的模型表示中,一些引用會比其他引用更頻繁地出現(xiàn),我們可以利用它!

霍夫曼編碼是這個問題的完美解決方案。它通過將最小占用空間的密鑰歸屬到最常用的值以及最小占用空間的值來實(shí)現(xiàn)。這有助于減小設(shè)備上模型的誤差,最好的結(jié)果是精度沒有損失。

使神經(jīng)網(wǎng)絡(luò)在智能手機(jī)上實(shí)時運(yùn)行的技術(shù)

最頻繁的符號僅使用1 位的空間,而最不頻繁的使用3 位。這是由后者很少出現(xiàn)在表示中的事實(shí)所平衡的。

這個簡單的技巧使我們能夠進(jìn)一步縮小神經(jīng)網(wǎng)絡(luò)占用的空間,通常約為30%。

注意:量化和編碼對于網(wǎng)絡(luò)中的每一層都是不同的,從而提供更大的靈活性

7. 糾正準(zhǔn)確度損失(Correctiong the accuracy loss)

使用我們的技巧,我們的神經(jīng)網(wǎng)絡(luò)已經(jīng)變得非常粗糙了。我們刪除了弱連接(修剪),甚至改變了一些權(quán)重(量化)。雖然這使得網(wǎng)絡(luò)超級輕巧,而且速度非???,但其準(zhǔn)確度并非如此。

為了解決這個問題,我們需要在每一步迭代地重新訓(xùn)練網(wǎng)絡(luò)。這只是意味著在修剪或量化權(quán)重后,我們需要再次訓(xùn)練網(wǎng)絡(luò),以便它能夠適應(yīng)變化并重復(fù)這個過程,直到權(quán)重停止變化太多。

結(jié)論

雖然智能手機(jī)不具備老式桌面計算機(jī)的磁盤空間、計算能力或電池壽命,但它們?nèi)匀皇巧疃葘W(xué)習(xí)應(yīng)用程序非常好的目標(biāo)。借助少數(shù)技巧,并以幾個百分點(diǎn)的精度為代價,現(xiàn)在可以在這些多功能手持設(shè)備上運(yùn)行強(qiáng)大的神經(jīng)網(wǎng)絡(luò)。這為數(shù)以千計的激動人心的應(yīng)用打開了大門。

責(zé)任編輯:lq6

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

    關(guān)注

    66

    文章

    18331

    瀏覽量

    178756
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209417
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128161
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7174

    瀏覽量

    87161
收藏 人收藏

    評論

    相關(guān)推薦

    如何在FPGA上實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)作為其核心組成部分,已廣泛應(yīng)用于圖像識別、語音識別、自然語言處理等多個領(lǐng)域。然而,傳統(tǒng)基于CPU或GPU的神經(jīng)網(wǎng)絡(luò)計算方式
    的頭像 發(fā)表于 07-10 17:01 ?1097次閱讀

    BP神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的關(guān)系

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)是兩種人工智能和機(jī)器
    的頭像 發(fā)表于 07-10 15:24 ?585次閱讀

    全連接前饋神經(jīng)網(wǎng)絡(luò)與前饋神經(jīng)網(wǎng)絡(luò)的比較

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)作為其核心組成部分,各個領(lǐng)域展現(xiàn)出了強(qiáng)大的應(yīng)用潛力和價值。眾多神經(jīng)網(wǎng)絡(luò)類型中,全連接前饋
    的頭像 發(fā)表于 07-09 10:31 ?7510次閱讀

    rnn是遞歸神經(jīng)網(wǎng)絡(luò)還是循環(huán)神經(jīng)網(wǎng)絡(luò)

    : 循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念 循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有時間序列特性的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),具有記憶功能。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)不同,循環(huán)神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-05 09:52 ?385次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)

    。 遞歸神經(jīng)網(wǎng)絡(luò)的概念 遞歸神經(jīng)網(wǎng)絡(luò)是一種具有短期記憶功能的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),如時間序列、文本、語音等。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)不同,遞歸
    的頭像 發(fā)表于 07-04 14:54 ?449次閱讀

    深度神經(jīng)網(wǎng)絡(luò)與基本神經(jīng)網(wǎng)絡(luò)的區(qū)別

    探討深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNNs)與基本神經(jīng)網(wǎng)絡(luò)(通常指傳統(tǒng)神經(jīng)網(wǎng)絡(luò)或前向神經(jīng)網(wǎng)絡(luò))的區(qū)別時,我們需
    的頭像 發(fā)表于 07-04 13:20 ?338次閱讀

    人工智能神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)是什么

    人工智能神經(jīng)網(wǎng)絡(luò)是一種模擬人腦神經(jīng)網(wǎng)絡(luò)的計算模型,其結(jié)構(gòu)和功能非常復(fù)雜。 引言 人工智能神經(jīng)網(wǎng)絡(luò)是一種模擬人腦
    的頭像 發(fā)表于 07-04 09:37 ?275次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    神經(jīng)網(wǎng)絡(luò)許多領(lǐng)域都有廣泛的應(yīng)用,如語音識別、圖像識別、自然語言處理等。然而,BP神經(jīng)網(wǎng)絡(luò)也存在一些問題,如容易陷入局部最優(yōu)解、訓(xùn)練時間長、對初始權(quán)重敏感等。為了解決這些問題,研究者們提出了一些改進(jìn)的BP
    的頭像 發(fā)表于 07-03 11:00 ?371次閱讀

    神經(jīng)網(wǎng)絡(luò)和人工智能的關(guān)系是什么

    神經(jīng)網(wǎng)絡(luò)和人工智能的關(guān)系是密不可分的。神經(jīng)網(wǎng)絡(luò)是人工智能的一種重要實(shí)現(xiàn)方式,而人工智能則是神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 10:25 ?472次閱讀

    bp神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)區(qū)別是什么

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)是兩種不同類型的人工神經(jīng)網(wǎng)絡(luò),它們
    的頭像 發(fā)表于 07-03 10:12 ?527次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    化能力。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,神經(jīng)網(wǎng)絡(luò)已經(jīng)成為人工智能領(lǐng)域的重要技術(shù)之一。卷積神經(jīng)網(wǎng)絡(luò)和BP神經(jīng)
    的頭像 發(fā)表于 07-02 14:24 ?1030次閱讀

    神經(jīng)網(wǎng)絡(luò)圖像識別中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)圖像識別領(lǐng)域的應(yīng)用日益廣泛。神經(jīng)網(wǎng)絡(luò)以其強(qiáng)大的特征提取和分類能力,為圖像識別帶來了革命性的進(jìn)步。本文將詳細(xì)介紹
    的頭像 發(fā)表于 07-01 14:19 ?412次閱讀

    神經(jīng)網(wǎng)絡(luò)自然語言處理中的應(yīng)用

    自然語言處理(NLP)是人工智能領(lǐng)域中的一個重要分支,它研究的是如何使計算機(jī)能夠理解和生成人類自然語言。隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-01 14:09 ?287次閱讀

    詳解深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    如今的網(wǎng)絡(luò)時代,錯綜復(fù)雜的大數(shù)據(jù)和網(wǎng)絡(luò)環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡(luò)都面臨巨大的挑戰(zhàn)。近些年,深度學(xué)習(xí)逐漸走進(jìn)人們的視線
    的頭像 發(fā)表于 01-11 10:51 ?1610次閱讀
    詳解深度學(xué)習(xí)、<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>與卷積<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的應(yīng)用

    基于智能手機(jī)智能電網(wǎng)中的實(shí)時監(jiān)控系統(tǒng)設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于智能手機(jī)智能電網(wǎng)中的實(shí)時監(jiān)控系統(tǒng)設(shè)計.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 16:17 ?0次下載
    基于<b class='flag-5'>智能手機(jī)</b><b class='flag-5'>在</b><b class='flag-5'>智能</b>電網(wǎng)中的<b class='flag-5'>實(shí)時</b>監(jiān)控系統(tǒng)設(shè)計