6個(gè)訣竅讓手機(jī)高效運(yùn)行大型神經(jīng)網(wǎng)絡(luò)

姓名:閆偉? 學(xué)號(hào):15020150038

轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/45072374

【嵌牛導(dǎo)讀】:深度學(xué)習(xí)這種技術(shù)可謂是多才多藝窜觉、強(qiáng)大無比尺栖,但運(yùn)行神經(jīng)網(wǎng)絡(luò)又對(duì)計(jì)算力誉尖、能耗和磁盤空間要求很高。這對(duì)于運(yùn)行在有大型硬盤和多個(gè) GPU 的云應(yīng)用來說龙誊,通常這不是個(gè)問題。

【嵌牛鼻子】:深度學(xué)習(xí) GPU 云應(yīng)用

【嵌牛提問】:如何使神經(jīng)網(wǎng)絡(luò)在手機(jī)上更加方便的運(yùn)行?

【嵌牛正文】:

讓神經(jīng)網(wǎng)絡(luò)更小更快的方法

基本上,我們對(duì)三個(gè)指標(biāo)很感興趣:模型的準(zhǔn)確率氨距,運(yùn)行速度和在手機(jī)中所占空間大小

因?yàn)樘煜聸]有免費(fèi)的午餐棘劣,所以我們必須要做出一些取舍俏让。

對(duì)于大部分方法,我們會(huì)著眼于這三個(gè)指標(biāo),尋找滿足我們需求的“飽和點(diǎn)”(saturation point)首昔。所謂“飽和點(diǎn)”就是一個(gè)指標(biāo)中的收益無法再通過其它指標(biāo)中的損失來實(shí)現(xiàn)寡喝。在達(dá)到“飽和點(diǎn)”之前保持優(yōu)化值,我們就可以在這兩類指標(biāo)上取得最佳結(jié)果勒奇。

圖:在這個(gè)例子中拘荡,我們可以在不增加誤差的情況下大幅縮減代價(jià)高昂的運(yùn)算。然而撬陵,圍繞“飽和點(diǎn)”,誤差就會(huì)很高网缝,這是不可接受的巨税。

記住這個(gè)方法,我們開始吧粉臊!

避免全連接層

全連接層時(shí)神經(jīng)網(wǎng)絡(luò)中最常見的組成部分之一草添,它們的效果也確實(shí)很好。然而扼仲,由于全連接層中的每個(gè)神經(jīng)元都和之前層的所有神經(jīng)元相連远寸,因而需要存儲(chǔ)和更新大量的參數(shù)。這對(duì)運(yùn)行速度和磁盤空間非常不利屠凶。

卷積層是充分利用輸入(通常是圖像)中局部連貫性的層驰后。在卷積層中,每個(gè)神經(jīng)元不再和之前層的所有神經(jīng)元相連矗愧,使用它能夠在維持高準(zhǔn)確度的同時(shí)灶芝,減少連接/權(quán)重的數(shù)量。

圖:和卷積層相比唉韭,全連接層有更多的連接和權(quán)重

使用很少或不使用全連接層夜涕,可縮減模型的大小,也能保持很高的準(zhǔn)確度属愤。這樣既能提高速度女器,也能減少磁盤空間使用。

在上面的配置中住诸,一個(gè)有著1024個(gè)輸入和512個(gè)輸出的全連接層會(huì)有大概50萬個(gè)參數(shù)驾胆。而一個(gè)有著同樣特征和32個(gè)特征圖譜的卷積層,則只有5萬個(gè)參數(shù)只壳,足足優(yōu)化了10倍俏拱!

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

這一步的操作非常直截了當(dāng),就是在模型復(fù)雜度和運(yùn)行速度之間做一個(gè)權(quán)衡吼句。卷積層中有很多通道能讓神經(jīng)網(wǎng)絡(luò)提取很多的相關(guān)信息锅必,但是代價(jià)很高。去掉一些特征圖譜,能很容易地節(jié)省空間搞隐,讓模型運(yùn)行更快驹愚。

我們可以用卷積操作中的感受域(receptive field)來做同樣的事情×痈伲縮減內(nèi)核大小后逢捺,雖然卷積對(duì)局部特征的感受度下降,但涉及的參數(shù)數(shù)量也會(huì)減少癞季。

圖:更小的感受域/內(nèi)核尺寸耗費(fèi)更少的計(jì)算力劫瞳,但傳遞的信息也更少

這兩種情況下,我們通過尋找“飽和點(diǎn)”來選擇特征圖譜數(shù)量/內(nèi)核大小绷柒,這樣以來模型的準(zhǔn)確度也不會(huì)大幅下降志于。

優(yōu)化降采樣

對(duì)于固定數(shù)量的層,和固定數(shù)量的池化操作废睦,神經(jīng)網(wǎng)絡(luò)的表現(xiàn)會(huì)大不相同伺绽。這是因?yàn)閿?shù)據(jù)的表示以及計(jì)算負(fù)荷取決于池化操作所處的時(shí)間點(diǎn)

如果很早執(zhí)行池化操作,數(shù)據(jù)的維度就會(huì)降低嗜湃。更少的維度意味著神經(jīng)網(wǎng)絡(luò)的處理速度更快奈应,但也意味著更少的信息和更低的準(zhǔn)確度。

如果很晚才執(zhí)行池化操作购披,就會(huì)保存大部分信息杖挣,模型就有很高的準(zhǔn)確度。然而刚陡,這也意味著計(jì)算對(duì)象有很多維度程梦,需要耗費(fèi)大量計(jì)算力。

在神經(jīng)網(wǎng)絡(luò)中均勻進(jìn)行降采樣是一種非常高效的結(jié)構(gòu)橘荠,而且能在模型準(zhǔn)確度和運(yùn)算速度之間取得良好的平衡屿附。也就是我們所說的“飽和點(diǎn)”。

圖:早期池化模型會(huì)很快哥童。晚期池化模型會(huì)更準(zhǔn)挺份,均勻池化則兼得兩者優(yōu)點(diǎn)

剪切權(quán)重

在訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)中,有些權(quán)重對(duì)神經(jīng)元的激活影響很大贮懈,而其余權(quán)重則和很少影響結(jié)果匀泊。不過,我們?nèi)匀粫?huì)計(jì)算這些較弱的權(quán)重朵你。

剪切權(quán)重就是我們將那些影響量級(jí)最小的連接完全移除的過程各聘,這樣我們就可以略過關(guān)于它們的計(jì)算。這樣做雖然會(huì)降低模型的準(zhǔn)確度抡医,但是能讓模型更輕便躲因、運(yùn)行更快早敬。我們需要找到一個(gè)“飽和點(diǎn)”,移除盡可能多的連接大脉,但又不會(huì)導(dǎo)致準(zhǔn)確度大幅下降搞监。

圖:移除最弱的連接來節(jié)省計(jì)算時(shí)間和空間

將權(quán)重量化

為了能將神經(jīng)網(wǎng)絡(luò)保存在磁盤,我們需要記錄神經(jīng)網(wǎng)絡(luò)中每個(gè)權(quán)重的值镰矿。這意味著要保存每個(gè)參數(shù)的浮點(diǎn)值琐驴,這會(huì)大量占用磁盤空間。舉個(gè)例子秤标,在C語言中绝淡,一個(gè)浮點(diǎn)數(shù)占用4字節(jié),即32-bit苍姜。一個(gè)有著數(shù)億參數(shù)的網(wǎng)絡(luò)(比如Google-Net或VGG-16)輕松就能占據(jù)上百兆字節(jié)的空間够委,而這在移動(dòng)設(shè)備上是不可接受的。

如果想讓神經(jīng)網(wǎng)絡(luò)的內(nèi)存占用量盡可能的小怖现,一個(gè)方法就是通過量化權(quán)重來降低它們的精度。在這個(gè)過程中玉罐,我們會(huì)修改數(shù)字的表示使其不再取用任意值屈嗤,而是一些值的子集。這能讓我們只需存儲(chǔ)一次經(jīng)過量化處理的值吊输,然后將它們參考為神經(jīng)網(wǎng)絡(luò)的權(quán)重饶号。

圖:量化權(quán)重,存儲(chǔ)索引而非浮點(diǎn)值

我們通過再次尋找“飽和點(diǎn)”來確定使用多少值季蚂。值越多茫船,準(zhǔn)確度就越高,但也意味著更大的數(shù)字表示扭屁。例如算谈,使用256個(gè)量化后的值,每個(gè)權(quán)重僅用1個(gè)字節(jié)即8-bit就能表示料滥。和之前相比(32-bit)然眼,我們將大小縮小了4倍

編碼模型的表示

我們已經(jīng)對(duì)權(quán)重做了很多處理葵腹,但是尚未優(yōu)化神經(jīng)網(wǎng)絡(luò)高每!第6種方法是應(yīng)對(duì)權(quán)重分布不均的問題。模型的權(quán)重量化以后践宴,我們并沒有相同數(shù)量的權(quán)重來支撐每個(gè)量化后的值鲸匿。這意味著在模型的表示中,某些索引的出現(xiàn)頻率相對(duì)更高阻肩,我們可以充分利用這一點(diǎn)带欢!

霍夫曼編碼時(shí)解決這個(gè)問題的絕佳方案。它會(huì)給最常用的值分配最小索引、給最不常用值分配最大索引洪囤,這樣就能縮小設(shè)備上的模型大小徒坡,最妙的是不會(huì)造成準(zhǔn)確度下降。

圖:頻率最高的符號(hào)只占用1-bit的空間瘤缩,而頻率最低的占用了3-bit空間喇完。這是因?yàn)楹笳咴跀?shù)據(jù)表示中出現(xiàn)的次數(shù)很少,從而達(dá)到一種空間上的平衡剥啤。

這種簡(jiǎn)單技巧能讓我們進(jìn)一步縮小神經(jīng)網(wǎng)絡(luò)占用的內(nèi)存空間锦溪,通常能縮小30%。

注意:神經(jīng)網(wǎng)絡(luò)中每一層的量化和編碼操作可以是不同的府怯,從而提供更多的靈活性刻诊。

修正準(zhǔn)確度損失

使用我們上面列舉的方法后,我們幾乎“大修”了手頭的神經(jīng)網(wǎng)絡(luò):移除了弱連接(剪切權(quán)重)牺丙,甚至修改了權(quán)重(量化操作)则涯。這樣能讓神經(jīng)網(wǎng)絡(luò)超級(jí)輕便,運(yùn)行飛快冲簿,但準(zhǔn)確度也會(huì)發(fā)生變化粟判。

為了修正這個(gè)問題,我們需要在每一步迭代地重新訓(xùn)練神經(jīng)網(wǎng)絡(luò)峦剔,意思就是在剪切或量化權(quán)重后档礁,我們?cè)俅斡?xùn)練神經(jīng)網(wǎng)絡(luò),這樣它就能適應(yīng)變化吝沫,不斷重復(fù)這個(gè)過程直到權(quán)重不再大幅變化為止呻澜。

結(jié)語

雖然智能手機(jī)并沒有電腦那樣的磁盤空間、計(jì)算力或續(xù)航能力惨险,但仍然是深度學(xué)習(xí)應(yīng)用的極佳運(yùn)行平臺(tái)羹幸。借助一些技巧,再犧牲一點(diǎn)準(zhǔn)確度辫愉,我們就能在移動(dòng)設(shè)備上運(yùn)行強(qiáng)大的神經(jīng)網(wǎng)絡(luò)睹欲。這將為數(shù)以千計(jì)的激動(dòng)人心的 App 敞開大門。

參考資料:

https://heartbeat.fritz.ai/how-smartphones-manage-to-handle-huge-neural-networks-269debcb243d

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末一屋,一起剝皮案震驚了整個(gè)濱河市窘疮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冀墨,老刑警劉巖闸衫,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诽嘉,居然都是意外死亡蔚出,警方通過查閱死者的電腦和手機(jī)弟翘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骄酗,“玉大人稀余,你說我怎么就攤上這事∏鞣” “怎么了睛琳?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長踏烙。 經(jīng)常有香客問我师骗,道長,這世上最難降的妖魔是什么讨惩? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任辟癌,我火速辦了婚禮,結(jié)果婚禮上荐捻,老公的妹妹穿的比我還像新娘黍少。我一直安慰自己,他們只是感情好处面,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布厂置。 她就那樣靜靜地躺著,像睡著了一般鸳君。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上患蹂,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天或颊,我揣著相機(jī)與錄音,去河邊找鬼传于。 笑死囱挑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沼溜。 我是一名探鬼主播平挑,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼系草!你這毒婦竟也來了通熄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤找都,失蹤者是張志新(化名)和其女友劉穎唇辨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體能耻,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赏枚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年亡驰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饿幅。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凡辱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栗恩,到底是詐尸還是另有隱情透乾,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布摄凡,位于F島的核電站续徽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏亲澡。R本人自食惡果不足惜钦扭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望床绪。 院中可真熱鬧客情,春花似錦、人聲如沸癞己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痹雅。三九已至仰担,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绩社,已是汗流浹背摔蓝。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愉耙,地道東北人贮尉。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像朴沿,于是被迫代替她去往敵國和親猜谚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容