卷積神經網路CNN理論到實踐(1)
作者:相國大人
寫這篇博文用了很多時間和精力,如果這篇博文對你有幫助,希望您可以打賞給博主相國大人。哪怕只捐1毛錢,也是一種心意。通過這樣的方式,也可以培養整個行業的智慧財產權意識。我可以和您建立更多的聯絡,並且在相關領域提供給您更多的資料和技術支援。
手機掃一掃,即可:
1. 導讀
卷積神經網路CNN常用於處理具有柵格拓撲特徵的資料。時間序列資料可以看做是在固定時間間隔取樣的一維網格資料;影象可以看做是由畫素組成的一個二維網格。在實際應用中,具有很好的效果。也是進入深度學習領域需要掌握的最基本的網路模型。卷積網路使用卷積來代替一般的矩陣乘法。將一層卷積結果作為一個輸出層。
本文是一之後系列博文的第一篇。在本系列博文中,我們會全方位,足夠深入的為你講解CNN的知識。包括很多你之前在網上找了很多資料也沒搞清楚的東西,例如:
1. 我們會全面深入的介紹卷積的概念,讓你不僅僅知道卷積的運算,還能夠從理性和感性的雙重角度,理解卷積的意義。我們還會探討為什麼要使用卷積網路,卷積網路究竟有什麼特性。
2. 我們會詳細介紹池化的概念,並且告訴你為什麼要做池化操作,池化操作究竟有什麼特別的好處。
3. 我們會全面介紹CNN的各種形式。如:standard convolution,valid convolution, same convolution,full convolution,unshared convolution,tiled convolution等等。尤其是tiled convolution我們會用最能夠讓人理解的方式,讓你透徹明白其中的原理。這一點,我們的工作要比網上其他博文做得更好。
4. 我們還將詳細探討卷積與矩陣乘法的關係。這一點,我們的工作也要比網上其他博文作的好。
5. 除此之外,我們還會探討更多,更深入的知識,例如:CNN中的其他操作(如反捲積等),如何在資料集上使用不同維度的卷積,使得卷積操作更高效的方式 ,使用tensorflow進行CNN的實現,討論並實現如何使用CNN做中文文字分類。
所有這些精彩的內容,都會在我接下來的博文中一一介紹。
因此,與網上其他博文相比,我們的工作更好,主要體現在:
1.對理論的介紹足夠深入易懂
2. 我們會利用CNN做文字分類的實踐。
3. 我們會繪製大量精美的示意圖。保證博文的高質量和美觀。
接下來,我們為大家介紹卷積的概念
2. 卷積
假如我們現在要追蹤一艘船的位置,這艘船會給我們返回當前時刻
我們把上面這個操作,叫做卷積(convolution).常常簡寫為:
在我們這個場景(追蹤船位置)中,我們的函式
但事實上,剛才說到的這兩個限制,僅僅是在我們這個場景中是成立的。對於一般的卷積定義來說,不管
特別的,在深度學習領域中,我們把公式
在剛才的場景中,我們預設
在機器學習領域中,我們的input往往是多維陣列,kernel也是由學習引數構成的多維陣列。這樣以來,我們可以把這些多維陣列看做是張量。從公式
由上面的論述,我們知道,我們需要同時在多個維度上進行卷積操作。例如,如果我們使用二維影象
對於卷積操作而言,交換
在CNN中,
有趣的是,在很多機器學習庫中,它們往往把上面公式的kernel進行“翻轉”,得到下面的樣子: