卷積神經網路圖文介紹
在 2012 年的 ILSVRC 比賽中 Hinton 的學生 Alex?Krizhevsky 使用深度卷積神經網路模型 AlexNet 以顯著的優勢贏得了比賽,top-5 的錯誤率降低至了 16.4% ,相比第二名的成績 26.2% 錯誤率有了巨大的提升。AlexNet 再一次吸引了廣大研究人員對於卷積神經網路的興趣,激發了卷積神經網路在研究和工業中更為廣泛的應用。現在基於卷積神經網路計算機視覺還廣泛的應用於醫學圖像處理,人臉識別,自動駕駛等領域。越來越多的人開始了解卷積神經網路相關的技術,並且希望學習和掌握相關技術。因為卷積神經網路需要大量的標記數據集,有一些經典的數據集可以用來學習,同時解決一些常見的計算機視覺問題。
卷積神經網路的具體應用,經典數據集。
比如最常用的 mnist 手寫數字數據集,這個數據集有 60000個訓練樣本,10000個測試樣本;cfair 10 數據集包含 60000 個 32x32 像素 的彩色圖片,它們分別屬於 10 個類別,每一個類別有 6000 個圖片,其中 50000 個作為訓練集,10000個作為測試集。
卷積神經網路在這些應用上取得的成果。
針對 mnist 手寫數字數據集,現在已經達到了 99% 以上的識別率,在稍後的學習中,也會實現一個準確率達到 99% 以上的模型。
卷積神經網路簡介
卷積神經網路是什麼,以及卷積神經網路將如何解決計算機視覺的相關問題。
圖像數據集的特點,對於神經網路的設計提出了一些新的挑戰。
維度比較高
因為圖像的維度普遍比較高,例如 MNIST 數據集,每一個圖片是 28 * 28 的圖片。
如果直接用神經網路,假設採用2個 1000個神經元的隱藏層加 1 個10個神經元的隱藏層,最後使用 softmax 分類層,輸出 10 個數字對應的概率。
參數的數量有:786 * 1000 +1000 * 1000 +1000 * 10
如果是更大一點的圖片,網路的規模還會進一步快速的增長。為了應對這種問題,
Yann LeCun 在貝爾實驗室做研究員的時候提出了卷積網路技術,並展示如何使用它來大幅度提高手寫識別能力。接下來將介紹卷積和池化以及卷積神經網路。卷積介紹
我們嘗試用一個簡單的神經網路,來探討如何解決這個問題。假設有4個輸入節點和4個隱藏層節點的神經網路,如圖所示:
每一個輸入節點都要和隱藏層的 4 個節點連接,每一個連接需要一個權重參數 w:
一共有 4 個輸入節點,,所以一共需要 4*4=16個參數。
相應的每一個隱藏層節點,都會接收所有輸入層節點:
這是一個簡化版的模型,例如手寫數據集 MNIST 28 * 28 的圖片,輸入節點有 784 個,假如也只要一個隱藏層有 784 個節點,那麼參數的個數都會是:784 * 784=614656,參數的個數會明顯增長。
因為神經網路中的參數過多,會造成訓練中的困難,所以降低神經網路中參數的規模,是圖像處理問題中的一個重要問題。
有兩個思路可以進行嘗試:
1.隱藏層的節點並不需要連接所有輸入層節點,而只需要連接部分輸入層。
如圖所示:
每個隱藏層節點,只接受兩個輸入層節點的輸入,那麼,這個網路只需要 3 * 2 =6個連接。使用局部連接之後,單個輸出層節點雖然沒有連接到所有的隱藏層節點,但是隱藏層匯總之後所有的輸出節點的值都對網路有影響。
2.局部連接的權重參數,如果可以共享,那麼網路中參數規模又會明顯的下降。如果把局部連接的權重參數當做是一個特徵提取器的話,可以嘗試將這個特徵提取器用在其他的地方。
那麼這個網路最後只需要 2 個參數,就可以完成輸入層節點和隱藏層節點的連接。
這兩個思路就是卷積神經網路中的稀疏交互和權值共享,下一篇文章將會詳細講解卷積神經網路的原理以及使用 TensorFlow 實現。
推薦閱讀:
※TensorFlow 安裝官方教程:Ubuntu 安裝,Mac OS X 安裝,Windows 安裝
※TensorFlow識別字母扭曲干擾型驗證碼-開放源碼與98%模型
※TensorFlow學習筆記之五——源碼分析之最近演算法
※Caffe學習筆記--如何創建自定義Layer
※Kubeflow 安利:在 Kubernetes 上進行機器學習
TAG:TensorFlow | 計算機視覺 |