卷積神經網絡新手指南之二

2020-11-29 雷鋒網

卷積神經網絡新手指南之二

引言

本文將進一步探討有關卷積神經網絡的更多細節,註:以下文章中部分內容較為複雜,為了保證其簡明性,部分內容詳細解釋的研究文獻會標註在後。

步幅和填充

讓我們看回之前的轉換層,在第一部分中我們提到過過濾器、接受場。現在,我們可以通過改變2個主要參數來校正每一層的行為。在選擇過濾器大小之後,我們也必須選擇「步幅」和「填充」。

步幅控制著過濾器如何進行卷積。在第一部分中我們有提到一個例子,過濾器圍繞輸入體量通過一次移動一個單位進行卷積。過濾器移動的總量即步幅。步長通常以一個方法進行設置使輸出量是一個整數,而不是一個分數。讓我們看看一個例子,想像一個7×7輸入體量,一個3×3過濾器(出於簡化角度考慮忽略第三維度),另外還有一個步幅1。這個就是我們習慣的情況。

 

是不是和之前的一樣?你還可以嘗試猜測下當步幅增加到2,輸出量會發生什麼情況。

 

因此,正如你所看到的那樣,接受場正在以2個單位進行移動,同時輸出量也會減少。注意如果我們試圖將我們的步幅設置為3,那麼其在間距和確保接受場適合的輸入量兩個方面會出現問題。通常情況下,如果程式設計師希望接受場重疊更少以及更小的空間尺寸的話,他們通常會增加步幅。

現在我們來接著關注填充,在正式開始之前,讓我們設想一個場景。當你將三個5×5×3的過濾器應用到一個32×32×3的輸入體量中時會發生什麼?

注意空間維度會降低。當我們持續應用卷積層時,體量的大小將減少得比我們想的快。在我們神經網絡的早期層中,我們要保存儘可能多的原始輸入信息,以便我們可以提取這些低階特徵。我們想要應用同樣的卷積層,但我們想將輸出量保持在32 x 32 x 3。要做到這個,我們可以將大小為2的零填充(zero padding)應用到該層。零填充(zero padding)在邊界周圍填充了值為零的輸入量。如果我們考慮大小為2的零填充(zero padding),那麼這將導致在一個36×36×3輸入量。

 

如果有1的步幅並且將零填充(zero padding)的大小設置為

 

K是過濾器大小,輸入和輸出量將會一直保持同樣的空間維度

對於任何給定的卷積層輸出大小的計算公式

 

O是輸出大小,K是過濾器大小,P是填充,S是步幅。 

選擇超參數

我們怎麼確定需要用多少層、多少卷積層、過濾器的大小是什麼,或者步幅和填充的值?這些都是重要的問題,並且沒有一套所有的研究人員都在使用的標準。這是因為神經網絡在很大程度上取決於你所擁有的數據類型。數據大小因為圖像的複雜性、圖像處理任務的類型以及更多因素而千差萬別。當你看著自己的數據集時,選擇超參數的一種方式是發現在一個適當的範圍創造圖像抽象的正確組合。

修正線性單元(ReLU)層

在每個卷積層後,習慣在其後馬上添加一個非線性層(或激活層)。這一層的目的是將非線性引入系統,基本上是在卷積層進行線性運算(只是元素的乘法和累加)。在過去都是像tanh 或者sigmoid的線性算法,但研究人員發現ReLU層效果更好,因為網絡訓練速度能加快很多(因為計算效率)且精度沒有顯著差異。它也有助於緩解消失的梯度問題,這是因為網絡訓練較低層的速度非常緩慢,梯度通過不同的層級指數下降。ReLU層的採用的函數f(x)= max(0,x)所有值的輸入量。基本上,這一層將所有的負激活變成了0。這一層提高了模型的非線性特性,且整體網絡不影響卷積層的接受場。感興趣的還可以參看深度學習之父Geoffrey Hinton的論文Geoffrey Hinton

 池化層(Pooling Layers)

經過一些ReLU層之後,程式設計師可以選擇池化層,它也被稱為下採樣層。在這一類別中,也有幾種層可供選擇,但maxpooling(最大池化層)是最受歡迎的。它需要一個過濾器(通常大小2x2)和一個相同的步幅長度,然後將其應用在過濾器卷積周邊每一個分區的輸入和輸出的最大量處。

池層的其他選項(pooling layers)還有是平均池(average pooling)和 L2-norm pooling。這層背後的原因是一旦我們知道一個特定的特性是其原始輸入量(將有一個高激活值),那麼其確切位置不重要的。可以想像,這一層大大降低了輸入體積的空間維度(長度和寬度的變化,但不是深度)。這樣做有兩個主要目的,首先是參數或權重的量減少了75%,從而降低了計算成本。其次,它能夠控制過度擬合。這個術語是指當一個模型針對訓練例子如此調整的話,它是不能夠概括驗證和測試集的。過度擬合的特徵是有一個模型能得到100%或99%的訓練集,但只有50%的測試數據。

降層(Dropout Layers)

降層在神經網絡中有一個十分特別的功能。在上一節中,我們討論了過度擬合的問題。在訓練之後,網絡的權重被調整到給定的訓練樣本上,這樣的話當給定新的樣本時神經網絡的表現並不好。降層這個理念在自然中過分單純的。

降層通過在前向傳播過程中將其設置為零在該層中隨機「拋棄」一些激活,就是這麼簡單。在這個過程中這樣做有什麼好處呢?在某種程度上,它迫使網絡變成「多餘」的。即使一些激活在過程中被拋棄,神經網絡也應該能夠對特定樣本提供正確的分類或者輸出。它確保網絡對於訓練數據不會過於「合適」,從而有助於緩解過度擬合的問題。重要的一個這一層只在訓練過程中使用,而不是在測試中。

網絡層網絡

網絡層網絡指的是一個使用1 x 1大小的過濾器的卷積層。現在,第一眼你可能會想知道為什麼這種類型的層會有幫助,因為接受場通常是大於他們映射空間的。然而,我們必須記住這些1x1卷積跨度有一定的深度,所以我們可以認為它是一個1 x 1 x N的卷積,其中N是該層中過濾器應用的數量。實際上這層是執行一個N-D 元素級的相乘,其中N是輸入量成層深度。

分類,定位,檢測,分割

在這節中我們使用第一部分曾提到過的例子,來看一下圖像分類任務。圖像分類任務是將輸入圖像識別並輸入一系列的圖像類別的過程,然而當我們將對象定位作為任務時,我們的工作不僅是得到一個分類標籤,另外還需要劃定一個對象在圖像中的範圍。

 

同樣還有對象檢測任務,需要將圖像中所有對象進行圖像定位任務。因此,在圖像中將會有多個劃定範圍還有多個分類標籤。

最後,還有對象分割任務,對象分割任務指的是輸出一個類的標籤,以及輸入圖像中的每一個對象的輪廓。

遷移學習(Transfer Learning)

目前在深度社區的一個常見的誤解是:沒有谷歌那樣的數據量的話,不可能建立一個有效的深度學習模型。雖然數據確實是創建神經網絡的一個重要組成部分,但是遷移學習的理念能夠有助於減少數據的需求。遷移學習是經過一個預先訓練的模型(網絡的權重和參數已通過一個大數據集或者別人訓練),並且用你自己的數據集進行「微調」的過程。這個理念就是預先訓練的模型將作為一個特徵提取器,將網絡的最後一層刪除並用自己的分類器替換它(取決於您的問題空間)。然後凍結所有其他層的權重,並正常訓練網絡(凍結層意味著在梯度下降/優化過程中能夠不改變權重)。

讓我們來弄清楚為什麼這樣會有用,舉例來說我們在ImageNet上的預先訓練模型(ImageNet是一個數據集,包含超過1000類的1400萬幅圖像)。當我們考慮網絡的低層時,我們知道他們會檢測到邊緣和曲線等特徵。現在除非你有一個非常獨特的問題空間和數據集,你的網絡也會需要檢測曲線和邊緣。與其通過一個隨機初始化的權重來訓練整個網絡,我們可以使用預先訓練的(並凍結)模型的權重,並專注於更重要的(更高的)層級的訓練。如果你的數據集與ImageNet等完全不同,那麼你就要多培養你的層並凍結一些低級層。

PS : 本文由雷鋒網(公眾號:雷鋒網)獨家編譯,未經許可拒絕轉載!

via Adit Deshpande

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 卷積神經網絡(CNN)新手指南
    卷積神經網絡(Convolutional Neural Network,CNN)新手指南然而最經典的,或者說最流行的神經網絡使用範例是將其用於圖像處理領域。提到圖像處理,本文主要介紹的是如何使用卷積神經網絡來進行圖像分類。
  • 卷積神經網絡理解(一):濾波器的意義
    卷積神經網絡的發展二. 卷積神經網絡的重要性三. 卷積神經網絡與圖像識別四.濾波器一.卷積神經網絡的發展卷積神經網絡受到視覺細胞研究的啟發,1962年,Hubel和Wiesel發現初級視覺皮層中的神經元會響應視覺環境中特定的簡單特徵(比如有向的邊等)。
  • 基於卷積神經網絡的目標檢測算法簡介
    什麼是卷積神經網絡?卷積神經網絡是一個層次模型,主要包括輸入層,卷積層,池化層、全連接層以及輸出層。卷積神經網絡是專門針對圖像而設計,主要特點在於卷積層的特徵是由前一層的局部特徵通過卷積共享的權重得到。
  • 「範例卷積神經網絡」和信息最大化
    這一方法也能被理解為「卷積神經網絡範例」。本文內容摘要:本文對「範例卷積神經網絡」的訓練方法僅作了簡單簡單的概述,所以如果想要獲得更多、更真實的信息,請閱讀論文原文。本文簡要介紹了「變分信息最大化」,並將其運用到了「範例卷積神經網絡」的案例中。
  • 了解1D和3D卷積神經網絡|Keras
    當我們說卷積神經網絡(CNN)時,通常是指用於圖像分類的2維CNN。但是,現實世界中還使用了其他兩種類型的卷積神經網絡,即1維CNN和3維CNN。在本指南中,我們將介紹1D和3D CNN及其在現實世界中的應用。我假設你已經大體上熟悉卷積網絡的概念。
  • 卷積神經網絡算法結構分析及其工作效率的影響因素
    2012年Krizhevsky等提出的卷積神經網絡卷積神經網絡算法結構分析。就目前算法的發展狀況而言,卷及神經網絡作為當前在圖像識別領域的主流算法,被諸多工作團隊所廣泛接受,而對於圖像識別的研究重點,也從尋找更為優秀的算法,轉移到了對卷積神經網絡算法本身的優化上,並且在應用領域,也在近年取得了長足進展。
  • 卷積神經網絡的卷積到底是什麼
    打開APP 卷積神經網絡的卷積到底是什麼 人工智慧遇見磐創 發表於 2020-05-05 08:40:00 卷積神經網絡是一種特殊的神經網絡結構,是自動駕駛汽車、人臉識別系統等計算機視覺應用的基礎,其中基本的矩陣乘法運算被卷積運算取代。
  • 深度學習入門:淺析卷積神經網絡
    至今已有數種深度學習方法,如卷積神經網絡(CNN)、自編碼神經網絡(包括Auto encoder和Sparse Coding)和深度置信網絡(DBN),並在各個領域中取得了極好的效果。實際上,我們可以將邏輯回歸看作僅含有一個神經元的單層(全連接層)神經網絡:圖5 紅框部分表示二值邏輯回歸,相當於神經網絡中的一個神經元當二分類問題擴展為多分類問題時
  • 淺析人工智慧的卷積神經網絡與圖像處理
    淺析人工智慧的卷積神經網絡與圖像處理 demi 發表於 2019-11-02 11:23:43 在人工智慧深度學習技術中,有一個很重要的概念就是卷積神經網絡 CNN(Convolutional Neural
  • YJango的卷積神經網絡——介紹
    PS:YJango是我的網名,意思是我寫的教程,並不是一種網絡結構。。關於卷積神經網絡的講解,網上有很多精彩文章,且恐怕難以找到比斯坦福的CS231n還要全面的教程。 所以這裡對卷積神經網絡的講解主要是以不同的思考側重展開,通過對卷積神經網絡的分析,進一步理解神經網絡變體中「因素共享」這一概念。注意:該文會跟其他的現有文章有很大的不同。
  • 解析卷積神經網絡的應用
    解析卷積神經網絡的應用 貿澤電子 發表於 2019-08-21 15:29:46 目前,人們對性能強大且結構複雜的計算機已是司空見慣。
  • 反思卷積神經網絡:圖像角度泛化上的困難重重
    毫無疑問,卷積神經網絡在圖像處理及周邊領域的開發進程和研究突破中發揮著重要作用。 但是,這不代表卷積神經網絡表現完美。 研究人員經常會遇到一個問題:他們往往由於過於追求理論和完美數據集而深陷其中。然而事與願違,要求數據準確度到小數點後幾位其實往往與現實情況中圖像處理的實際用處恰恰相反。
  • 泰拉瑞亞攻略之指南篇 Terraria新手必備圖文指南
    前面巴士單機分享了泰拉瑞亞攻略之基礎篇:Terraria新手開局圖文教程,現在為大家帶來的是泰拉瑞亞攻略之指南篇:Terraria新手必備圖文指南,喜愛本作的玩家來看看吧,也許當中正好有你需要的東西。   進入遊戲後你會發現身邊跟著一個guide指南NPC,我叫他導師,很討厭的一個人,走來走去老是開門把怪放進屋裡來……不過那是後話了。
  • 揭秘卷積神經網絡熱力圖:類激活映射
    本文將介紹在卷積神經網絡(CNN)中,針對圖像的某些部位可視化從而做出判斷的不同技術。類激活映射(CAM)是一種生成熱力圖的技術,用於突出圖像的類的特定區域。熱力圖效用下面是一個典型的熱力圖:視覺化神經網絡正在查看的位置大有用處,因為它幫助我們理解神經網絡是否在查看圖像的適當部位,或者神經網絡是否在進行誤導。下列是一些神經網絡在做分類決判斷時可能進行誤導和錯誤查看位置的例子:· 卷積神經網絡將一張圖片分類為「火車」,而實際上它是在尋找「火車軌道」(這意味著它會錯誤地將一張火車軌道圖片單獨分類為「火車」)。
  • 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理
    > 卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。
  • 一文讀懂卷積神經網絡工作原理
    卷積神經網絡(Convolutional Neural Network, CNN)是人工神經網絡的一種,是當下語音分析和圖像識別領域的研究熱點。這篇文章用最簡明的語言和最直觀的圖像,帶你入門CNN。準備好了嗎?
  • 卷積神經網絡(CNN)介紹與實踐
    - 來源:http://cs231n.github.io/classification/為了「教會」一種算法如何識別圖像中的對象,我們使用特定類型的人工神經網絡:卷積神經網絡(CNN)。他們的名字源於網絡中最重要的一個操作:卷積。卷積神經網絡受到大腦的啟發。
  • 應用豐富的「卷積神經網絡」技術,怎樣實現了圖像識別?
    解決這一問題的方法之一是利用神經網絡。理論上,我們可以利用卷積神經網絡來分析圖像;但實際上從計算的角度來看,這樣做的成本非常高。舉例來說,即使是一個處理一張很小的圖像(假設是30*30像素)的卷積神經網絡,仍需要五十萬的參數和900個輸入。
  • 卷積神經網絡超詳細總結
    什麼是卷積神經網絡:卷積神經網絡是一種帶有卷積結構的深度神經網絡,卷積結構可以減少深層網絡佔用的內存量,其三個關鍵的操作,其一是局部感受野,其二是權值共享,其三是pooling層,有效的減少了網絡的參數個數,緩解了模型的過擬合問題。
  • 圖像識別技術——卷積神經網絡CNN詳解
    前言卷積神經網絡不同於神經網絡,在圖片處理這方面有更好的表現。本文主要對神經網絡和卷積神經網絡做了簡要的對比,著重介紹了卷積神經網絡的層次基礎,同時也簡要介紹了卷積神經網絡參數更新方式和其優缺點,並結合具體實例對卷積神經網絡的工作方式做了介紹。