图解何为CNN
圖解何為CNN
CNN - Convolutional Neural Networks
是近些年在機(jī)器視覺(jué)領(lǐng)域很火的模型,最先由 Yan Lecun 提出。
如果想學(xué)細(xì)節(jié)可以看 Andrej Karpathy 的 cs231n 。
How does it work?
給一張圖片,每個(gè)圓負(fù)責(zé)處理圖片的一部分。
這些圓就組成了一個(gè) filter。
filter 可以識(shí)別圖片中是否存在指定的 pattern,以及在哪個(gè)區(qū)域存在。
下圖中有4個(gè)filter,每個(gè)filter的平行的點(diǎn)會(huì)負(fù)責(zé)圖片上相同的區(qū)域。
神經(jīng)元利用 convolution 的技術(shù)查找pattern,簡(jiǎn)單地理解就是用 filter 的形式去查找圖片是否具有某種 pattern。
weights 和 bias 對(duì)模型的效果起著重要的作用。
把白圓圈換成神經(jīng)元,就是CNN的樣子。
Convolution層的神經(jīng)元之間沒(méi)有聯(lián)系,它們各自都只連接inputs。
同一層的神經(jīng)元用相同的 weights 和 bias,這樣同一層的神經(jīng)元就可以抓取同樣的pattern,只不過(guò)是在圖片上的不同的區(qū)域。
接下來(lái)是 ReLU(Rectified Linear Unit) 層和 Pooling 層,它們用來(lái)構(gòu)建由 convolution 層找到的 pattern。
CNN 也用 Back propagation 訓(xùn)練,所以也有 vanishing gradient 的可能。而 ReLU 作為激活函數(shù)的話,gradients會(huì)大體保持常值的樣子,這樣就不會(huì)在關(guān)鍵的那幾層有很明顯的下降。
Pooling 層是用來(lái)降維的。
經(jīng)過(guò) convolution 和 ReLU 的作用后,會(huì)有越來(lái)越復(fù)雜的形式,所以Pooling 層負(fù)責(zé)提取出最重要的 pattern,進(jìn)而提高時(shí)間空間的效率。
這三層可以提取出有用的 pattern,但它們并不知道這些 pattern 是什么。
所以接著是 Fully Connected 層,它可以對(duì)數(shù)據(jù)進(jìn)行分類。
一個(gè)典型的 Deep CNN 由若干組 Convolution-ReLU-Pooling 層組成。
但CNN也有個(gè)缺點(diǎn),因?yàn)樗潜O(jiān)督式學(xué)習(xí),所以需要大量的有標(biāo)簽的數(shù)據(jù)。
總結(jié)
- 上一篇: 卷积神经网络的网络结构——以LeNet-
- 下一篇: 国家卫计委倡导健康生活理念:每天发呆5分