自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

想入門設(shè)計卷積神經(jīng)網(wǎng)絡(luò)?這是一份綜合設(shè)計指南

人工智能 深度學習
這篇文章可以作為一個設(shè)計指南,為特定的分類任務(wù)的 CNN 設(shè)計提供指導。尤其是,我們會聚焦在 3 個主要指標上:準確率、速度和內(nèi)存消耗。

你想開始做圖像分類,但是無從著手。應該使用哪個預訓練網(wǎng)絡(luò)?如何修改網(wǎng)絡(luò)以使其滿足需求?你的網(wǎng)絡(luò)應該包含 20 層還是 100 層?哪些是最快的、最準確的?這些是你為圖像分類選擇最好的 CNN 時會遇到的眾多問題。

當選擇 CNN 來進行圖像分類時,有 3 個非常主要的指標需要去優(yōu)化:準確率、速度和內(nèi)存消耗。在這些指標上的性能取決于你所選擇的 CNN 以及對它所做的任何修改。不同的網(wǎng)絡(luò)(如 VGG、Inception 以及 ResNet 等)在這些指標上有不同的權(quán)衡。此外,你還可以修改這些網(wǎng)絡(luò)結(jié)構(gòu),例如通過削減某些層、增加某些層、在網(wǎng)絡(luò)內(nèi)部使用擴張卷積,或者不同的網(wǎng)絡(luò)訓練技巧。

這篇文章可以作為一個設(shè)計指南,為特定的分類任務(wù)的 CNN 設(shè)計提供指導。尤其是,我們會聚焦在 3 個主要指標上:準確率、速度和內(nèi)存消耗。我們會研究很多不同的分類 CNN,并探索它們在這 3 個指標方面對應的屬性。我們還會研究對這些基本 CNN 可能做出的修改,以及這些修改會怎樣影響這些指標。最后,我們會研究如何為特定圖像分類任務(wù)最優(yōu)地設(shè)計 CNN。

網(wǎng)絡(luò)類型

網(wǎng)絡(luò)類型

在網(wǎng)絡(luò)類型和這 3 個指標上有著明確的權(quán)衡。首先,你肯定會希望使用 Inception 或者 ResNet 類型的設(shè)計。它們比 VGGNet 和 AlexNet 更新,而且在速度和準確率之間提供了更好選擇的權(quán)衡(正如你在上圖中看到的)。斯坦福大學的 Justin Johnson 對其中的一部分做了很棒的基準測試(https://github.com/jcjohnson/cnn-benchmarks)。

Inception 和 ResNet 的選擇確實是速度和準確率的權(quán)衡:要準確率,用超深層的 ResNet;要速度,用 Inception。

使用巧妙的卷積設(shè)計來減少運行時間和內(nèi)存消耗

對 CNN 一般設(shè)計的最新進展已經(jīng)提出了一些非常棒的可選擇方法,它們能夠在沒有太多的準確率損失的情況下加速 CNN 的運行,并減少內(nèi)存消耗。所有的這些方法都可以很容易地集成在上述的任何一類卷積神經(jīng)網(wǎng)絡(luò)中。

  • MobileNets(https://arxiv.org/pdf/1801.04381.pdf)使用深度分離的卷積來極大地減少運算和內(nèi)存的消耗,同時僅犧牲 1% 到 5% 的準確率,準確率的犧牲程度取決于你想要獲得的計算節(jié)約。
  • XNOR-Net(https://arxiv.org/pdf/1603.05279.pdf)使用二進制卷積,也就是說,卷積運算只涉及兩個可能的數(shù)值:0 或者 1。通過這種設(shè)計,網(wǎng)絡(luò)可以具有較高程度的稀疏性,易于被壓縮而不消耗太多內(nèi)存。
  • ShuffleNet(https://arxiv.org/pdf/1707.01083.pdf)使用點組卷積和通道隨機化來極大地減少計算代價,同時還能維持比 MobileNets 高的準確率。事實上,它們可以在超過 10 倍的運算速度下達到早期最先進的分類 CNN 的準確率。
  • Network Pruning(https://arxiv.org/pdf/1605.06431.pdf)是為了減少運行時間和內(nèi)存消耗而刪除 CNN 的部分權(quán)重的技術(shù),而且有希望不降低準確率。為了保持準確率,被刪除的部分應該對最終結(jié)果沒有大的影響。鏈接中的論文展示了使用 ResNets 可以輕易地做到這一點。

網(wǎng)絡(luò)深度

這個比較容易:通常增加更多地層會提升準確率,同時會犧牲一些速度和內(nèi)存。然而,我們已經(jīng)意識到的是這種權(quán)衡受制于邊際效應,也就是說,我們增加的層越多,通過增加每一層而帶來的準確率提升將越少。

激活函數(shù)

關(guān)于激活函數(shù),最近有很多爭議。然而,很好的一個經(jīng)驗法則就是從 ReLU 開始。使用 ReLU 通常會在開始的時立即得到一些好的結(jié)果。不像 ELU、PReLU 或者 LeakyReLU 一樣還需要一些繁瑣的調(diào)整。當你確定你的設(shè)計使用 ReLU 能夠達到不錯的效果,那你就可以調(diào)整其它的部分,并調(diào)整它們的參數(shù),以嘗試對準確率做最后的提升。

卷積核大小

你也許認為使用更大的卷積核總會導致最高的準確率,同時還會損失速度和內(nèi)存。然而,情況并不總是如此,因為研究中多次發(fā)現(xiàn)使用較大的卷積核會使得網(wǎng)絡(luò)難以發(fā)散。使用更小的核(例如 3×3)會更好一些。ResNet 和 VGGNet 都相當全面的詮釋了這一點。正如這兩篇論文所展示的,你也可以使用 1×1 的核來減少特征的數(shù)目。

空洞卷積

為了能夠使用遠離中心的像素,空洞卷積(Dilated Convolution)在卷積核的權(quán)重之間使用空格。這使得網(wǎng)絡(luò)不用增加參數(shù)數(shù)目就能夠指數(shù)級地擴展感受野,也就是說根本沒有增加內(nèi)存消耗。已經(jīng)證明,空洞卷積可以在微小的速度權(quán)衡下就能增加網(wǎng)絡(luò)準確率。

數(shù)據(jù)增強

你應該經(jīng)常做數(shù)據(jù)增強。使用更多的數(shù)據(jù)已經(jīng)被證明能夠持續(xù)地增強性能,甚至達到極限

(https://arxiv.org/pdf/1707.02968.pdf)。使用數(shù)據(jù)增強,你可以免費獲得更多數(shù)據(jù)。增強類型取決于你的應用。比如,如果你做的是無人車的應用,你可能會遇到路上的車、樹以及建筑物,所以,將你的圖像垂直翻轉(zhuǎn)是沒有意義的。然而,你一定會遇到由于天氣變化或者場景變化而引起的光線改變,通過改變光線和水平翻轉(zhuǎn)來增強數(shù)據(jù)是有意義的??梢钥匆幌逻@個數(shù)據(jù)增強庫(https://github.com/aleju/imgaug)。

訓練優(yōu)化器

當你最終要訓練網(wǎng)絡(luò)的時候,有幾種可以選擇的優(yōu)化算法。很多人說 SGD 在準確率方面會得到最好的結(jié)果,在我的經(jīng)驗看來,這是正確的。然而,調(diào)整學習率設(shè)置和參數(shù)是枯燥的,也是具有挑戰(zhàn)性的。另一方面,雖然使用自適應的學習率(例如 Adam,、Adagrad 或者 Adadelta)比較容易,也比較快速,但是你可能得不到和 SGD 一樣的最優(yōu)準確率。

最好就是讓優(yōu)化器遵循和激活函數(shù)一樣的「風格」:先使用最容易的,看看它是否奏效,然后使用更復雜的來調(diào)節(jié)和優(yōu)化。我個人推薦以 Adam 作為開始,因為根據(jù)我的經(jīng)驗,它最容易使用:設(shè)置一個不太高的學習率,一般默認 0.0001,然后你通常會得到一些非常好的結(jié)果。隨后你可以從零開始使用 SGD,或者甚至以 Adam 作為開始,然后使用 SGD 精調(diào)。事實上,這篇文章發(fā)現(xiàn)使用 Adam,中間換到 SGD,能夠以最容易的方式達到最好的準確率??匆幌抡撐闹械倪@張圖:

類別均衡

很多情況下你會遇到不均衡數(shù)據(jù),尤其是在現(xiàn)實應用中。舉一個現(xiàn)實中的簡單例子:由于安檢原因,你在訓練深度網(wǎng)絡(luò)來預測輸入視頻中的某人是否持有殺傷性武器。但是在你的訓練數(shù)據(jù)中,你只有 50 個視頻中的人持有武器,而 1000 個視頻中的人是沒有持有武器的!如果你立即使用這些數(shù)據(jù)訓練你的網(wǎng)絡(luò),你的模型一定會以很高的偏差偏向于預測某人未持有武器。

可以用以下的方法來解決類別不均衡問題:

  • 在損失函數(shù)中使用類別權(quán)重。本質(zhì)上,樣本數(shù)量不足的類別在損失函數(shù)中接受較高的權(quán)重,這樣的話特定類別的誤分類會在損失函數(shù)中導致較高的誤差。
  • 過采樣:對訓練樣本中數(shù)量不足的類別進行重復采樣,這樣有助于樣本分布的均衡化。當可用數(shù)據(jù)較少的時候這個方法最能奏效。
  • 降采樣:你也可以簡單地跳過包含過多樣本的類別中的一些訓練樣本。當可用數(shù)據(jù)非常多的時候,這個方法最奏效。
  • 數(shù)據(jù)增強:對少數(shù)類別的數(shù)據(jù)進行數(shù)據(jù)擴增。

優(yōu)化你的遷移學習

對大多數(shù)應用而言,使用遷移學習要比從零開始訓練網(wǎng)絡(luò)更加合適。然而,需要選擇的是:你要舍棄哪些層,保留哪些層。這非常依賴于你的數(shù)據(jù)。你的數(shù)據(jù)和預訓練網(wǎng)絡(luò)(通常是在 ImageNet 上訓練)所用的數(shù)據(jù)越相似,你需要重新訓練的層就越少,反之亦然。例如,假設(shè)你要訓練網(wǎng)絡(luò)來區(qū)分一張圖片是否包含葡萄,所以你會有大量的包含葡萄和不包含葡萄的圖像。這些圖像和 ImageNet 中使用的圖像相當相似,所以你僅僅需要重新訓練最后幾層,或許只需要重新訓練全連接層。然而,倘若你要分類的是一幅外太空的圖像是否包含一顆行星能夠,這種數(shù)據(jù)和 ImageNet 中的數(shù)據(jù)大有不同,所以你還需要重新訓練后邊的卷積層。簡而言之,應該遵循以下的原則:

總結(jié)

本文給出了用于圖像分類應用而設(shè)計 CNN 的全面指南。希望你能夠愉快地閱讀本文,并學到一些新的、有用的東西。

原文鏈接:

https://hackernoon.com/a-comprehensive-design-guide-for-image-classification-cnns-46091260fb92

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2018-08-31 07:51:57

卷積神經(jīng)網(wǎng)絡(luò)函數(shù)神經(jīng)網(wǎng)絡(luò)

2019-02-21 09:13:31

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

2020-06-01 15:04:44

甲骨文自治數(shù)據(jù)庫

2017-04-18 12:21:01

神經(jīng)網(wǎng)絡(luò)深度學習設(shè)計模式

2018-01-17 09:32:45

人工智能卷積神經(jīng)網(wǎng)絡(luò)CNN

2018-04-08 11:20:43

深度學習

2022-02-28 11:26:40

模型深度學習谷歌

2017-05-04 18:30:34

大數(shù)據(jù)卷積神經(jīng)網(wǎng)絡(luò)

2022-04-07 09:01:52

神經(jīng)網(wǎng)絡(luò)人工智能

2023-09-01 14:02:25

用戶分析攻略

2022-10-11 23:35:28

神經(jīng)網(wǎng)絡(luò)VGGNetAlexNet

2019-01-05 08:40:17

VGG神經(jīng)網(wǎng)絡(luò)

2024-09-24 07:28:10

2018-09-20 05:01:06

2019-03-18 08:08:24

知識圖譜技術(shù)

2018-07-31 14:58:08

2018-08-27 17:05:48

tensorflow神經(jīng)網(wǎng)絡(luò)圖像處理

2024-11-11 00:00:02

卷積神經(jīng)網(wǎng)絡(luò)算法

2024-12-04 10:33:17

2019-08-16 09:55:22

Pandas編程語言代碼
點贊
收藏

51CTO技術(shù)棧公眾號