DNN & CNN comparison

Kevin Chiu
CodingJourney
Published in
6 min readJun 20, 2020

紀錄傳統DNN(Fully connected)和CNN的差別在哪

以前只知道CNN比較快 較有效率

但最重要的兩點是

1. 權值共享(參數減少)

這張圖基本上解決了我對於兩者(DNN, CNN)差別不懂的困擾,下圖對於權值共享定義解釋得很清楚。

左圖的DNN參數量為(輸入圖攤平的node數量 + 1)*filter node數量

右圖的CNN參數量為(filter shape + 1)* filter數量,跟輸入輸出圖片沒有關係

(圖一) 取自:https://medium.com/@chih.sheng.huang821/%E5%8D%B7%E7%A9%8D%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF-convolutional-neural-network-cnn-%E5%8D%B7%E7%A9%8D%E8%A8%88%E7%AE%97%E7%9A%84%E5%80%92%E5%82%B3%E9%81%9E%E6%8E%A8%E5%B0%8E%E8%88%87%E7%A8%80%E7%96%8F%E7%9F%A9%E9%99%A3%E8%A7%80%E9%BB%9E%E4%BE%86%E7%9C%8B%E5%8D%B7%E7%A9%8D%E8%A8%88%E7%AE%97-e82ac16e510f

關於權值共享,可參考深度學習:CNN原理,以下為截取片段:

權值共享

讓我們來想想,今天假如是一般的FC架構,我們輸入一張28*28*1的灰階照片(784個特徵),隱藏層使用100個神經元,那麼我們需要多少個參數?答案是:

100*784 (weights)+100 (bias)= 78500個參數

單單一層隱藏層參數就瞬間爆量!

以CNN來說,參數量則為(filter shape + 1)* filter數量

2. 保留空間資訊

在傳統NN中,必須把圖片攤平成一維矩陣(失去空間資訊),再對每個神經元做計算得出最佳w(參數過多)

在CNN中,透過kernel(權值共享)對整張圖做卷積(保留空間資訊),從下圖可以發現CNN跟Fully connected 的計算差別

(圖二)取自:http://violin-tao.blogspot.com/2017/07/ml-convolutional-neural-network-cnn.html

另外,之前一直在思索CNN和NN裡的特徵的定義是什麼?

還有CNN和NN神經元的定義是什麼?

關於NN:

我個人認為特徵神經元是一樣的東西

[ML筆記] Convolutional Neural Network (CNN)是說: “每一個 Neural 都可視為一個簡單的 Classifier”

但我想特徵和classifier在這邊基本上是一樣的意思,透過各個特徵或是classifier訓練整個CNN網路裡他們之間的權重大小

(圖三):取自https://medium.com/@syshen/%E5%85%A5%E9%96%80%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-2-d694cad7d1e5

關於CNN:

學過CNN都知道,訓練CNN的過程基本上就是不斷更新神經元之間的權值w來使整個模型對圖片(或其他資料)的判斷更準確

對我來說,在CNN中的特徵就是指經過kernel 在convolution及subsampling計算之後產生的特徵矩陣,也就是下圖的feature maps,透過訓練,模型對於找到特徵能更準確,使擷取出得feature map的資訊更有用

(圖四)取自:https://en.wikipedia.org/wiki/Convolutional_neural_network

但對於CNN的神經元我卻不太知道要怎麼解釋和跟特徵做連結。因為CNN的圖通常都是像上面那樣,而沒辦法用個別神經元來表示,但我參考下圖

[w11, w12, w21, w22] 和 [h11, h12, h21, h22] 兩者的關係之後

我覺得神經元也是在指圖四的feature map,跟特徵圖是一樣的意思,也就是說,feature map也是由多個神經元(特徵)所組成的

結論:我個人認為 CNN的特徵神經元也是指一樣的東西,只是相對於NN,CNN的特徵 (or神經元)都多了空間因素,因此不能用單純一個一個的neural(如圖三)來表示

(以上純粹為個人理解,不太確定這樣結論是否正確,歡迎指正😂)

最後,不管是哪種網路,最重要都是要找到特徵間的權值,也就是深度學習一直在做的事情。

介紹完兩者差別,還有一個問題,在CNN最後的Fully connected layer(跟NN一樣的計算方式)目的又是什麼呢?

簡單來說是分類,整個流程如下三張圖所示:

取自:https://zhuanlan.zhihu.com/p/33841176“我們用許多神經元去擬合數據分佈

但是只用一層fully connected layer 有時候沒法解決非線性問題

而如果有兩層或以上fully connected layer就可以很好地解決非線性問題了”

***視覺化CNN: What Neural Networks See***

參考資源:

卷積神經網路(Convolutional neural network, CNN):卷積計算的倒傳遞推導與稀疏矩陣觀點來看卷積計算

[ML筆記] Convolutional Neural Network (CNN)

CNN 入门讲解:什么是全连接层(Fully Connected Layer)?

--

--