深度學習 15. 全連接和區域連接,fully connected 和 local connected, 解釋說明(最簡單的解釋)

本文爲原創文章轉載必須註明本文出處以及附上 本文地址超鏈接  以及 博主博客地址http://blog.csdn.NET/qq_20259459  和 作者郵箱[email protected] )。

(如果喜歡本文,歡迎大家關注我的博客或者動手點個贊,有需要可以郵件聯繫我)



最近一段時間,我們幾個人一直在討論一個簡單的和平時不太注意的問題,也爭執了一段時間,所以我覺得有必要在博客中也爲大家解釋說明一下這個問題,也許大家也遇到或者不知道這個問題準確的解釋。這個問題就是fully connected 和 local connected的區別。

相信學過神經網絡的各位都會知道有一個知識點就是MLP和CNN的區別:
1. MLP是fully connected layer. 而CNN是local connected layer.
2. MLP沒有weights share. 而CNN有。
其實這兩點是一點,因爲fully connected layer就是沒有weights share的。

所以我們可以說fully connected layer的特點就是沒有weights share.但是在學習MLP的時候我們又知道MLP的nodes的連接方式是點對點的,也就是1x1的size。正是因爲這點,才導致大家的分歧。因爲在傳統的CNN中我們也會用到fully connected layer,同時也有個比較有誤導性的就是CNN的FC layer往往都是1x1的filter size。

正因爲這樣所以許多人認爲1x1的filter size就是fully connected.我在網絡上找了許多相關解釋,不少人在解釋1x1的filter size的時候認爲其就是fully connected.然而這是錯誤的。



我們知道CNN可以說是MLP的一種特例,但是CNN強大的擬合能力和自身的抑制能力目前爲止還沒有數學理論去證明,但是其優秀的結果總是顛覆更傳統的一些神經網絡。正因如此所以深度學習現在是大熱到不行,不過爲了證明CNN所具有超強的學習能力,有人已經做了相關的研究並發表在nature雜誌上面,研究中作者打亂原來的label然後進行訓練,卻發現CNN還是可以提取正確的信息,這種研究雖然還是沒有在數學上給予解釋,但是已經可以證明CNN的強大的學習能力是存在的。

而在相對傳統的CNN中,我們一直還在使用fully connected layer(比如AlexNet和VGGNet等),儘管在新的GoogleNet中FClayer已經被去除了。但是我們還是可以看到MLP這種原始神經網絡的影響,以及其具有的一定的能力性。

所以我們往往會忽略一些FC的問題,因爲它一直都存在於我們的使用中,一直那麼的自然。久而久之我們會產生簡單的把1x1就是等於fully connected的這種認知錯誤。



這裏我將給大家一個簡單的判斷fully connected的方法:
1. 對於neuron的連接(點對點的連接)都是fully connected.(這裏其實就是MLP)
2. 對於有filter的network,不是看filter的size,而是看output的feature map的size。如果output feature map的size是1x1xN的話這個layer就是fully connected layer。

這裏解釋一下第二個判斷方法:
1. 1x1的filter size不一定是fully connected。比如input size是10x10x100,filter size是1x1x100,重複50次,則該layer的總weights是:1x1x100x50。

2. 1x1的filter size如果要是fully connected,則input size必須是1x1。關於這一點我們在前面使用matconvnet的時候有介紹過,fc的input size如果不是1x1就會出錯。

3. input size是10x10的時候卻是fully connected的情況:這裏我們的output size肯定是1x1,且我們的filter size肯定是10x10。

因此我們也可以將第二點總結爲:
filter size等於input size則是fully connected。



說到這裏可能有人不太相信,因爲大家可能根深蒂固的認爲1x1的情況就是fully connected。其實有個很好的例子可以佐證我的說法:GoogleNet



這裏是幾種經典CNN的比較圖,我們知道最導致網絡冗雜和承重就是FC layer。所以GoogleNet雖然比AlexNet更加深度,但是卻具有更加小的memory(weights)。 因爲我們都知道GoogleNet是去掉了FC layer,所以才能在性能上大幅提升。但是我們可以看GoogleNet的構造,我們發現GoogleNet還是有1x1的filter size,而且有多個layer是存在1x1 filter的,因此這裏可以證明我們不能通過1x1的filter size就認定是fully connected只要input size不是1x1,那麼1x1的filter也是具有weights share的

但是在NiN的paper中,作者將Relu替換爲MLP,這裏就是fully connected,因爲是點對點的連接。所以我們一定不要被其混淆,以至於認爲1x1就是fully connected。

其實這個問題本身並不是很難理解,但是就是會有一些潛意識的理所當然會導致我們認知錯誤。
最重要還是需要去理解這些定義的含義,而不是自己通過想象去理解。



最後我再一次總結一下這篇文章的內容:
1. fully connected沒有weights share。
2. 對於neuron的連接(點對點的連接)都是fully connected.(MLP)
3. Convolution中當filter size等於input size時,就是fully connected,此時的output size爲1x1xN。
4. 當1x1不等於input size的時候,1x1一樣具備weights share的能力。

但大家還是需要自己再去理解一下這個問題,仔細理解一下其中的道理。





本文爲原創文章轉載必須註明本文出處以及附上 本文地址超鏈接  以及 博主博客地址http://blog.csdn.NET/qq_20259459  和 作者郵箱[email protected] )。

(如果喜歡本文,歡迎大家關注我的博客或者動手點個贊,有需要可以郵件聯繫我)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章