深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

如果你有一個1的步幅,並且如果你設置零填充的大小

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

如果你有一個1的步幅,並且如果你設置零填充的大小

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中K是過濾器尺寸,那麼輸入和輸出體積將始終具有相同的空間尺寸。

計算任何給定conv層的輸出大小的公式是

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

如果你有一個1的步幅,並且如果你設置零填充的大小

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中K是過濾器尺寸,那麼輸入和輸出體積將始終具有相同的空間尺寸。

計算任何給定conv層的輸出大小的公式是

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中O是輸出高度/長度,W是輸入高度/長度,K是過濾器尺寸,P是填充,S是步幅。

選擇超參數

我們如何知道要使用多少個圖層,多少個圖層,過濾器大小,或者跨度和填充的值?這些問題不是微不足道的,所有研究人員都沒有設定標準。這是因為網絡很大程度上取決於您所擁有的數據類型。數據可能因大小,圖像的複雜程度,圖像處理任務的類型等而異。查看數據集時,考慮如何選擇超參數的一種方法是找到正確的組合,以適當的比例創建圖像的抽象。

ReLU(整流線性單元)層

在每個conv層之後,按照慣例,緊隨其後的是應用非線性層(或激活層)。該層的目的是將非線性引入基本上剛剛在conv層期間計算線性運算的系統(正好是元素乘法和求和)。過去,使用了像tanh和sigmoid這樣的非線性函數,但是研究人員發現了ReLU層工作得更好,因為網絡能夠更快地訓練(因為計算效率),而不會對準確性產生重大影響。這也有助於緩解消失梯度問題,這是網絡的下層訓練非常緩慢的問題,因為梯度通過層呈指數級下降(解釋這可能超出了本文的範圍,但和看到為了好的描述)。ReLU層將函數f(x)= max(0,x)應用於輸入體積中的所有值。從基本的角度來說,這個層只是將所有的負激活改變為0.這個層增加了模型和整個網絡的非線性特性,而不影響conv層的感受域。

[論文reluICML]由偉大的傑弗裡.欣頓Geoffrey Hinton(深度學習之父)。

合併圖層

在一些ReLU層之後,程序員可以選擇應用一個池化層。它也被稱為下采樣層。在這個類別中,還有幾個圖層選項,其中maxpooling是最流行的。這基本上需要一個過濾器(通常大小為2x2)和一個相同長度的步幅。然後將其應用於輸入量並輸出過濾器卷積的每個子區域中的最大數量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

如果你有一個1的步幅,並且如果你設置零填充的大小

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中K是過濾器尺寸,那麼輸入和輸出體積將始終具有相同的空間尺寸。

計算任何給定conv層的輸出大小的公式是

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中O是輸出高度/長度,W是輸入高度/長度,K是過濾器尺寸,P是填充,S是步幅。

選擇超參數

我們如何知道要使用多少個圖層,多少個圖層,過濾器大小,或者跨度和填充的值?這些問題不是微不足道的,所有研究人員都沒有設定標準。這是因為網絡很大程度上取決於您所擁有的數據類型。數據可能因大小,圖像的複雜程度,圖像處理任務的類型等而異。查看數據集時,考慮如何選擇超參數的一種方法是找到正確的組合,以適當的比例創建圖像的抽象。

ReLU(整流線性單元)層

在每個conv層之後,按照慣例,緊隨其後的是應用非線性層(或激活層)。該層的目的是將非線性引入基本上剛剛在conv層期間計算線性運算的系統(正好是元素乘法和求和)。過去,使用了像tanh和sigmoid這樣的非線性函數,但是研究人員發現了ReLU層工作得更好,因為網絡能夠更快地訓練(因為計算效率),而不會對準確性產生重大影響。這也有助於緩解消失梯度問題,這是網絡的下層訓練非常緩慢的問題,因為梯度通過層呈指數級下降(解釋這可能超出了本文的範圍,但和看到為了好的描述)。ReLU層將函數f(x)= max(0,x)應用於輸入體積中的所有值。從基本的角度來說,這個層只是將所有的負激活改變為0.這個層增加了模型和整個網絡的非線性特性,而不影響conv層的感受域。

[論文reluICML]由偉大的傑弗裡.欣頓Geoffrey Hinton(深度學習之父)。

合併圖層

在一些ReLU層之後,程序員可以選擇應用一個池化層。它也被稱為下采樣層。在這個類別中,還有幾個圖層選項,其中maxpooling是最流行的。這基本上需要一個過濾器(通常大小為2x2)和一個相同長度的步幅。然後將其應用於輸入量並輸出過濾器卷積的每個子區域中的最大數量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其他用於合併層的選項是平均合併和L2規範合併。這一層背後的直觀推理是,一旦我們知道原始輸入量中有一個特定的特徵(將有一個高激活值),其確切位置就不如其它特徵的相對位置那麼重要。你可以想象,這個圖層大大減少了輸入體積的空間維度(長度和寬度的變化,但不是深度)。這有兩個主要目的。首先是參數或權重的數量減少了75%,從而減少了計算成本。二是控制過度配合。這個術語是指當一個模型如此適應訓練樣例時,它不能很好地推廣到驗證和測試集。過度擬合的一個症狀是在訓練集上有100%或99%的模型,但測試數據只有50%。

丟棄層

現在,丟棄圖層在神經網絡中有非常特殊的功能。在最後一節中,我們討論了過度擬合的問題,在訓練之後,網絡的權重根據給定的訓練樣例進行調整,使得網絡在給出新的例子時表現不佳。輟學的想法本質上是簡單的。該層通過將其設置為零來"退出"該層中的一組隨機激活。就那麼簡單。現在,這樣一個簡單的,看似不必要的,違反直覺的過程有什麼好處呢?那麼,從某種意義上說,這就迫使網絡變得多餘。我的意思是,網絡應該能夠為特定的例子提供正確的分類或輸出,即使一些激活被剔除。它確保網絡對訓練數據不太"適合",從而有助於緩解過度訓練問題。一個重要的注意事項是這個層只在訓練期間使用,而不是在測試期間使用。

【論文JMLRdropout】由Geoffrey Hinton撰寫的論文。

網絡層中的網絡

在網絡的網絡層是指,在使用1×1大小過濾器CONV層。現在,初看,您可能會想知道為什麼這種類型的圖層甚至會有幫助,因為接受的字段通常比它們映射的空間大。但是,我們必須記住,這些1x1卷積跨越了一定的深度,所以我們可以把它看作是一個1 x 1 x N卷積,其中N是層中應用的濾波器的數量。實際上,該層正在執行ND元素方式的乘法,其中N是輸入到圖層中的體積的深度。

Min Lin的論文。

分類,本地化,檢測,分割

在本系列第1部分中使用的示例中,我們研究了圖像分類的任務。這是獲取輸入圖像並從一組類別中輸出類別編號的過程。然而,當我們完成像對象本地化這樣的任務時,我們的工作不僅僅是生成一個類標籤,還有一個描述對象在圖片中的邊界框。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

如果你有一個1的步幅,並且如果你設置零填充的大小

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中K是過濾器尺寸,那麼輸入和輸出體積將始終具有相同的空間尺寸。

計算任何給定conv層的輸出大小的公式是

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中O是輸出高度/長度,W是輸入高度/長度,K是過濾器尺寸,P是填充,S是步幅。

選擇超參數

我們如何知道要使用多少個圖層,多少個圖層,過濾器大小,或者跨度和填充的值?這些問題不是微不足道的,所有研究人員都沒有設定標準。這是因為網絡很大程度上取決於您所擁有的數據類型。數據可能因大小,圖像的複雜程度,圖像處理任務的類型等而異。查看數據集時,考慮如何選擇超參數的一種方法是找到正確的組合,以適當的比例創建圖像的抽象。

ReLU(整流線性單元)層

在每個conv層之後,按照慣例,緊隨其後的是應用非線性層(或激活層)。該層的目的是將非線性引入基本上剛剛在conv層期間計算線性運算的系統(正好是元素乘法和求和)。過去,使用了像tanh和sigmoid這樣的非線性函數,但是研究人員發現了ReLU層工作得更好,因為網絡能夠更快地訓練(因為計算效率),而不會對準確性產生重大影響。這也有助於緩解消失梯度問題,這是網絡的下層訓練非常緩慢的問題,因為梯度通過層呈指數級下降(解釋這可能超出了本文的範圍,但和看到為了好的描述)。ReLU層將函數f(x)= max(0,x)應用於輸入體積中的所有值。從基本的角度來說,這個層只是將所有的負激活改變為0.這個層增加了模型和整個網絡的非線性特性,而不影響conv層的感受域。

[論文reluICML]由偉大的傑弗裡.欣頓Geoffrey Hinton(深度學習之父)。

合併圖層

在一些ReLU層之後,程序員可以選擇應用一個池化層。它也被稱為下采樣層。在這個類別中,還有幾個圖層選項,其中maxpooling是最流行的。這基本上需要一個過濾器(通常大小為2x2)和一個相同長度的步幅。然後將其應用於輸入量並輸出過濾器卷積的每個子區域中的最大數量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其他用於合併層的選項是平均合併和L2規範合併。這一層背後的直觀推理是,一旦我們知道原始輸入量中有一個特定的特徵(將有一個高激活值),其確切位置就不如其它特徵的相對位置那麼重要。你可以想象,這個圖層大大減少了輸入體積的空間維度(長度和寬度的變化,但不是深度)。這有兩個主要目的。首先是參數或權重的數量減少了75%,從而減少了計算成本。二是控制過度配合。這個術語是指當一個模型如此適應訓練樣例時,它不能很好地推廣到驗證和測試集。過度擬合的一個症狀是在訓練集上有100%或99%的模型,但測試數據只有50%。

丟棄層

現在,丟棄圖層在神經網絡中有非常特殊的功能。在最後一節中,我們討論了過度擬合的問題,在訓練之後,網絡的權重根據給定的訓練樣例進行調整,使得網絡在給出新的例子時表現不佳。輟學的想法本質上是簡單的。該層通過將其設置為零來"退出"該層中的一組隨機激活。就那麼簡單。現在,這樣一個簡單的,看似不必要的,違反直覺的過程有什麼好處呢?那麼,從某種意義上說,這就迫使網絡變得多餘。我的意思是,網絡應該能夠為特定的例子提供正確的分類或輸出,即使一些激活被剔除。它確保網絡對訓練數據不太"適合",從而有助於緩解過度訓練問題。一個重要的注意事項是這個層只在訓練期間使用,而不是在測試期間使用。

【論文JMLRdropout】由Geoffrey Hinton撰寫的論文。

網絡層中的網絡

在網絡的網絡層是指,在使用1×1大小過濾器CONV層。現在,初看,您可能會想知道為什麼這種類型的圖層甚至會有幫助,因為接受的字段通常比它們映射的空間大。但是,我們必須記住,這些1x1卷積跨越了一定的深度,所以我們可以把它看作是一個1 x 1 x N卷積,其中N是層中應用的濾波器的數量。實際上,該層正在執行ND元素方式的乘法,其中N是輸入到圖層中的體積的深度。

Min Lin的論文。

分類,本地化,檢測,分割

在本系列第1部分中使用的示例中,我們研究了圖像分類的任務。這是獲取輸入圖像並從一組類別中輸出類別編號的過程。然而,當我們完成像對象本地化這樣的任務時,我們的工作不僅僅是生成一個類標籤,還有一個描述對象在圖片中的邊界框。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

我們也有對象檢測的任務,其中需要對圖像中的所有對象進行本地化。因此,您將有多個邊界框和多個類標籤。

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

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

介紹

在這篇文章中,我們將進一步介紹ConvNets的更多細節。

免責聲明:現在我明白了其中的一些話題是相當複雜的,可以在整個帖子中自行完成。為了保持簡潔而又保持全面性,我將提供有關更詳細解釋主題的研究論文的鏈接。

步幅和補丁

好的,讓我們回頭看看我們的舊的conv層。記住過濾器,感知區域,卷積?好。現在,有兩個主要參數可以修改每個層的行為。在我們選擇過濾器大小之後,我們還必須選擇步幅補丁

步幅控制過濾器如何在輸入體積周圍進行卷積。在第一部分的例子中,濾波器一次轉換一個單位,在輸入音量周圍卷積。過濾器移動的數量是步幅。在這種情況下,步幅隱式設置為1.步幅通常設置為使得輸出體積是整數而不是分數。我們來看一個例子。讓我們來想象一個7 x 7的輸入音量,一個3 x 3的濾波器(為了簡單起見,不考慮第三維)和一個1的步幅。這就是我們習慣的情況。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

同樣的舊的,一樣的舊的,對吧?看看你是否可以嘗試猜測,當步幅增加到2時,輸出音量會發生什麼變化。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

所以,正如你所看到的,現在接受的領域正在向前移動2個單位,產量也會縮小。請注意,如果我們試圖將步幅設置為3,那麼我們會遇到間距問題,並確保接受區域適合輸入音量。通常情況下,如果程序員希望接受的領域重疊較少,並且如果他們想要更小的空間維度的話,他們將會增加步伐。

現在,我們來看看填充。在進入之前,讓我們來思考一個場景。當您將三個5 x 5 x 3濾鏡應用到32 x 32 x 3輸入音量時會發生什麼情況?輸出音量將為28 x 28 x 3.請注意,空間尺寸減小。當我們繼續應用轉換層時,音量的大小會比我們想要的要快。在我們網絡的早期階段,我們希望保留儘可能多的有關原始輸入音量的信息,以便我們可以提取這些低級特徵。假設我們想要應用相同的conv層,但是我們希望輸出量保持為32 x 32 x 3.為此,我們可以將大小為2的零填充應用於該層。零填充填充邊界周圍的輸入音量為零。如果我們考慮兩個零填充,那麼這將導致36 x 36 x 3的輸入音量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

如果你有一個1的步幅,並且如果你設置零填充的大小

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中K是過濾器尺寸,那麼輸入和輸出體積將始終具有相同的空間尺寸。

計算任何給定conv層的輸出大小的公式是

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其中O是輸出高度/長度,W是輸入高度/長度,K是過濾器尺寸,P是填充,S是步幅。

選擇超參數

我們如何知道要使用多少個圖層,多少個圖層,過濾器大小,或者跨度和填充的值?這些問題不是微不足道的,所有研究人員都沒有設定標準。這是因為網絡很大程度上取決於您所擁有的數據類型。數據可能因大小,圖像的複雜程度,圖像處理任務的類型等而異。查看數據集時,考慮如何選擇超參數的一種方法是找到正確的組合,以適當的比例創建圖像的抽象。

ReLU(整流線性單元)層

在每個conv層之後,按照慣例,緊隨其後的是應用非線性層(或激活層)。該層的目的是將非線性引入基本上剛剛在conv層期間計算線性運算的系統(正好是元素乘法和求和)。過去,使用了像tanh和sigmoid這樣的非線性函數,但是研究人員發現了ReLU層工作得更好,因為網絡能夠更快地訓練(因為計算效率),而不會對準確性產生重大影響。這也有助於緩解消失梯度問題,這是網絡的下層訓練非常緩慢的問題,因為梯度通過層呈指數級下降(解釋這可能超出了本文的範圍,但和看到為了好的描述)。ReLU層將函數f(x)= max(0,x)應用於輸入體積中的所有值。從基本的角度來說,這個層只是將所有的負激活改變為0.這個層增加了模型和整個網絡的非線性特性,而不影響conv層的感受域。

[論文reluICML]由偉大的傑弗裡.欣頓Geoffrey Hinton(深度學習之父)。

合併圖層

在一些ReLU層之後,程序員可以選擇應用一個池化層。它也被稱為下采樣層。在這個類別中,還有幾個圖層選項,其中maxpooling是最流行的。這基本上需要一個過濾器(通常大小為2x2)和一個相同長度的步幅。然後將其應用於輸入量並輸出過濾器卷積的每個子區域中的最大數量。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

其他用於合併層的選項是平均合併和L2規範合併。這一層背後的直觀推理是,一旦我們知道原始輸入量中有一個特定的特徵(將有一個高激活值),其確切位置就不如其它特徵的相對位置那麼重要。你可以想象,這個圖層大大減少了輸入體積的空間維度(長度和寬度的變化,但不是深度)。這有兩個主要目的。首先是參數或權重的數量減少了75%,從而減少了計算成本。二是控制過度配合。這個術語是指當一個模型如此適應訓練樣例時,它不能很好地推廣到驗證和測試集。過度擬合的一個症狀是在訓練集上有100%或99%的模型,但測試數據只有50%。

丟棄層

現在,丟棄圖層在神經網絡中有非常特殊的功能。在最後一節中,我們討論了過度擬合的問題,在訓練之後,網絡的權重根據給定的訓練樣例進行調整,使得網絡在給出新的例子時表現不佳。輟學的想法本質上是簡單的。該層通過將其設置為零來"退出"該層中的一組隨機激活。就那麼簡單。現在,這樣一個簡單的,看似不必要的,違反直覺的過程有什麼好處呢?那麼,從某種意義上說,這就迫使網絡變得多餘。我的意思是,網絡應該能夠為特定的例子提供正確的分類或輸出,即使一些激活被剔除。它確保網絡對訓練數據不太"適合",從而有助於緩解過度訓練問題。一個重要的注意事項是這個層只在訓練期間使用,而不是在測試期間使用。

【論文JMLRdropout】由Geoffrey Hinton撰寫的論文。

網絡層中的網絡

在網絡的網絡層是指,在使用1×1大小過濾器CONV層。現在,初看,您可能會想知道為什麼這種類型的圖層甚至會有幫助,因為接受的字段通常比它們映射的空間大。但是,我們必須記住,這些1x1卷積跨越了一定的深度,所以我們可以把它看作是一個1 x 1 x N卷積,其中N是層中應用的濾波器的數量。實際上,該層正在執行ND元素方式的乘法,其中N是輸入到圖層中的體積的深度。

Min Lin的論文。

分類,本地化,檢測,分割

在本系列第1部分中使用的示例中,我們研究了圖像分類的任務。這是獲取輸入圖像並從一組類別中輸出類別編號的過程。然而,當我們完成像對象本地化這樣的任務時,我們的工作不僅僅是生成一個類標籤,還有一個描述對象在圖片中的邊界框。

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

我們也有對象檢測的任務,其中需要對圖像中的所有對象進行本地化。因此,您將有多個邊界框和多個類標籤。

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

深度學習初學者瞭解CNN卷積神經網絡的黃金指南(第二部分)

關於如何在第3部分中實現這些內容的更多細節,但對於那些不能等待的人來說。

檢測/定位: RCNN, Fast RCNN, Faster RCNN, MultiBox, Bayesian Optimization, Multi-region, RCNN Minus R, Image Windows

分割: Semantic Seg, Unconstrained Video, Shape Guided, Object Regions, Shape Sharing

是的,還有更多。

轉化學習

現在,DL社區常見的誤解是,如果沒有Google的數據量,您不可能希望創建有效的深度學習模型。雖然數據是創建網絡的關鍵部分,但轉移學習的想法有助於減少數據需求。轉化學習是採用預先訓練的模型(由其他人對大型數據集進行訓練的網絡的權重和參數)以及使用自己的數據集對模型進行"微調"的過程。這個想法是,這個預先訓練的模型將作為一個特徵提取器。您將刪除網絡的最後一層,並將其替換為您自己的分類器(具體取決於您的問題空間)。然後凍結所有其他層的權重並正常訓練網絡(凍結圖層意味著在梯度下降/優化期間不改變權重)。

Let's investigate why this works. Let's say the pre-trained model that we're talking about was trained on ImageNet (For those that aren't familiar, ImageNet is a dataset that contains 14 million images with over 1,000 classes). When we think about the lower layers of the network, we know that they will detect features like edges and curves. Now, unless you have a very unique problem space and dataset, your network is going to need to detect curves and edges as well. Rather than training the whole network through a random initialization of weights, we can use the weights of the pre-trained model (and freeze them) and focus on the more important layers (ones that are higher up) for training. If your dataset is quite different than something like ImageNet, then you'd want to train more of your layers and freeze only a couple of the low layers.

Paper by Yoshua Bengio (another deep learning pioneer).

Paper by Ali Sharif Razavian.

Paper by Jeff Donahue.

Paper and subsequent paper by Dario Garcia-Gasulla.

數據增強技術

到目前為止,我們都可能對ConvNets數據的重要性感到麻木,所以讓我們來討論一下如何讓現有的數據集更大,只需要一些簡單的轉換即可。就像我們之前提到的那樣,當一臺計算機將圖像作為輸入時,它將採用一個像素值的數組。假設整個圖像左移1個像素。對你我來說,這種變化是不可察覺的。然而,對於計算機來說,這種轉變可能相當重要,因為圖像的分類或標籤沒有改變,而數組則是這樣。以保持標籤相同的方式改變訓練數據的方法稱為數據增強技術。它們是人為地擴展數據集的一種方法。人們使用的一些流行的增強功能是灰度,水平翻轉,垂直翻轉,隨機作物,顏色抖動,翻譯,旋轉等等。通過將這些轉換應用到您的訓練數據中,您可以輕鬆地將訓練樣例的數量增加一倍或三倍。

相關推薦

推薦中...