1. 程式人生 > >深度學習——白話CNN入門淺見

深度學習——白話CNN入門淺見

搞CNN的工程應用有一段時間了,特別是在計算機視覺領域。分享下我自己的CNN學習歷程。

深度學習到底是啥?
簡單的說,深度學習就是模仿人腦結構,像人一樣學習(當然,也有所謂的專家不同意這個觀點);它處理問題的路徑是從具體到抽象、從部分到整體。像人的認知過程一樣逐層進行,逐步抽象。最大的特點就是網路自己學習特徵、組合特徵,而不需要人工參與。

入門路線
1、首先在自己電腦上安裝一個開源的框架,像Tensorflow、caffe這樣的,先玩一下這個框架,把框架用起來
2、然後跑一些基礎的網路,由淺入深
3、如果有條件的話,整個有GPU的電腦,GPU跑的要快很多,跟CPU比起來

詳細點說,我認為可以按以下步驟去學習它:
第一個階段:
1)、實現並訓練只有一層的softmax迴歸模型用於手寫數字圖片分類;
2)、實現並訓練含三個全連線層的模型用於手寫數字圖片分類;
3)、實現並訓練含三個卷基層+池化層的模型用於手寫數字圖片分類;
階段目的:搞懂一些機器學習、深度學習的概念,找個開源工具並用起來,嘗試著訓練一些簡單的網路,試試加入一些常見的trick去除錯網路。

第二個階段:
訓練一些經典的CNN分類網路,熟悉一些常用資料集,熟悉下CNN分類網路的發展歷程,一些trick的更替:
1)、Lenet,1986年
2)、Alexnet,2012年
3)、GoogleNet,2014年
4)、VGG,2014年
5)、ResNet,也有人稱呼殘差網路,2015年
這個幾個網路是都是深度學習在影象領域的經典之作,在pc上實現了它們,訓練它們,同時你又仔細推敲看看他們的網路結構。
階段目的:在實際當中獨立使用它們,也可以結合傳統的影象處理技術使用它們。一句話:
你已經入門了
學習的幾個誤區:
1、死嗑線性代數、概率論、微積分這些理論知識。
     使用深度學習的目的是處理實際工程問題,最重要的是怎麼用。一開始不會用就去推導這些公式、求原理,有點捨本逐末。另一個重要的原因是,複雜的公式、原理會把初學者搞暈的,打擊初學者的積極性,而且理論不和實踐結合,很難理解;所以建議學用結合、邊用邊學。
2、比較哪種網路好
    比較哪個深度模型最優是沒有意義的。因為沒有一種模型是萬能的,得根據具體資料集的型別特徵、具體使用場景來決定採用什麼模型。
3、一開始就自己設計網路
   深度學習各個應用領域都有很多經典的網路,都經過大量驗證過的,一句話,沒啥問題,用起來效果挺好。我一般拿過來用,改改輸入, 調調引數,在已有模型的基礎上,微調微調即可。