使用神經網路識別手寫數字
簡介
《神經網路與深度學習》是一本免費的線上電子書。本書主要介紹以下內容:
-
神經網路,一種啟發自生物學的優美的程式設計正規化,能夠從觀測到的資料中進行學習
-
深度學習,一系列神經網路中強大的學習技巧
神經網路和深度學習為影象識別、語音識別、自然語言處理等問題提供了目前最好的解決方案。本書主要會介紹神經網路和深度學習背後關鍵的概念。
更多關於本書的細節,請參考這裡。或者您可以直接從第一章開始學習。
譯者注
本專案是Neural Networks and Deep Learning的中文翻譯,原文作者 Michael Nielsen
人類的視覺系統是世上的一個奇蹟。考慮以下這串手寫的數字:
大部分人都能輕易地識別出圖上的數字是504192。這個看似簡單的過程的背後,實際上很複雜。在我們大腦的每個腦半球中,有一個叫做初級視皮層(primary visual cortex)的部分,也被稱作V1。它擁有1億4千萬個神經元,包含了上百億的神經元連線。然而,人類的視覺系統不僅僅依賴於V1,還依賴於整套視皮層——V2、V3、V4和V5的協同工作,來實現複雜的影象處理任務。我們的大腦就像一臺超級計算機,經過了上億年的進化,才得以能夠出色地理解視覺的世界。識別手寫數字不是一個簡單的任務,但是,人類極其擅長理解眼睛所看到的東西,並且幾乎所有這些工作都是在無意識的情況下完成的,所以我們通常不會意識到我們的視覺系統解決了的任務有多麼困難。
當你企圖實現一個用來識別類似上圖數字的計算機程式時,你就會逐漸意識到視覺模式識別的難度。一個本來對於人類看似很簡單的事情,突然就變得極其困難。「數字9的上部有一個圓圈,右下部有一筆豎線」這種人類識別形狀的直覺,在演算法上卻很難表示。當你試圖定義明確的識別規則時,你會很快地被一大堆特例所困擾。這似乎毫無解決的希望。
神經網路(Neural Networks)使用一種不同的思路解決這個問題。它的思想是利用大量的手寫數字,亦被稱為訓練樣例,
從這些訓練樣例學習並建立一個系統。換一種說法,神經網路使用這些樣例,從中能夠自動地學習到識別手寫數字的規則。而且,隨著訓練樣例的增加,神經網路可以從中學習到更多資訊,從而提高它的準確度。所以,儘管我上面只給出了100個訓練數字,也許我們可以使用上千、上萬、上億的訓練樣例來構建一個更好的手寫識別器。
在本章中,我們會實現一個神經網路的計算機程式,來學習並識別手寫數字。雖然這個程式僅僅只有74行,並且沒有使用任何特別的神經網路庫,但是它可以在沒有任何人工干預的情況下,達到超過百分之96的手寫數字識別準確率。在之後的章節中,我們會進一步改善我們的方法,使之達到超過百分之99的準確率。實際上,目前最好的商用神經網路已經足夠好到能被銀行用來處理支票,以及被郵局用來識別地址。
我們會專注於手寫數字的識別這個問題,因為它基本上是學習神經網路最好的示範問題,之所以這麼說是因為它戳中了幾個痛點:它具有挑戰性,識別手寫數字不是一個簡單的工程;同時它的難度也不是特別大,並不需要極其複雜的方法,或者大量的計算資源。而且它是實現更高階技術的基礎,例如深度學習(deep learning)。所以,手寫數字識別問題會貫穿本書。在本書的後部分,我們會討論如何將這些想法應用到計算視覺的其它問題上,甚至語音處理、自然語言處理以及其它領域。
當然,本章的主旨如果只是實現一個程式來識別手寫數字,那麼本章的內容就會少很多!實際上,在這個過程中,我們會產生許多關於神經網路的關鍵思想,包括兩種重要的人工神經元(感知機和sigmoid神經元),以及神經網路的標準學習演算法,稱為隨機梯度下降(stochastic gradient descent)。在本書中,我關注於解釋為什麼問題能夠被這樣解決,以及為你建立關於神經網路的直覺。儘管相比於僅僅展示基礎理論過程,這需要更長的篇幅來討論,但是這對於你的深入理解是很有價值的。從中的收穫,就是在章節的最後,我們就能夠理解深度學習是什麼,以及為什麼它能夠起作用。
連載中:
下一篇:感知機
相關文章
- 使用人工神經網路訓練手寫數字識別模型神經網路模型
- 手寫數字圖片識別-卷積神經網路卷積神經網路
- 《手寫數字識別》神經網路 學習筆記神經網路筆記
- 卷積神經網路CNN實戰:MINST手寫數字識別——網路定義卷積神經網路CNN
- 一個單層的基礎神經網路實現手寫數字識別神經網路
- AI BP神經網路判斷手寫數字AI神經網路
- 機器學習之神經網路識別手寫數字(純python實現)機器學習神經網路Python
- TensorFlow.NET機器學習入門【5】採用神經網路實現手寫數字識別(MNIST)機器學習神經網路
- 卷積神經網路初探——LeNet-5的原理與手寫數字識別的實現卷積神經網路
- 手寫數字圖片識別-全連線網路
- 用TensorFlow搭建卷積神經網路識別數字0~9卷積神經網路
- 【機器學習】手寫數字識別機器學習
- matlab練習程式(神經網路識別mnist手寫資料集)Matlab神經網路
- 使用Pytorch和卷積神經網路進行簡單的數字識別(MNIST)PyTorch卷積神經網路
- 【自己動手寫神經網路】---人人都可以學的神經網路書神經網路
- 神經網路 | 基於MATLAB 使用CNN擬合一個迴歸模型來預測手寫數字的旋轉角度(卷積神經網路)神經網路MatlabCNN模型卷積
- 04_利用手寫數字問題引入深度神經網路神經網路
- 基於神經網路的OCR識別神經網路
- 【Python】keras神經網路識別mnistPythonKeras神經網路
- 用神經網路來識別人物影象性別神經網路
- tensorflow.js 手寫數字識別JS
- 卷積神經網路進行影像識別卷積神經網路
- 構建多層感知器神經網路對數字圖片進行文字識別神經網路
- 瀏覽器中的手寫數字識別瀏覽器
- 【Get】用深度學習識別手寫數字深度學習
- Spark學習筆記——手寫數字識別Spark筆記
- 程式碼實現(機器學習識別手寫數字)機器學習
- 初識神經網路----一神經網路
- 圖神經網路知識神經網路
- TensorFlow 卷積神經網路之貓狗識別卷積神經網路
- 【Python】keras卷積神經網路識別mnistPythonKeras卷積神經網路
- Tensorflow2.0-mnist手寫數字識別示例
- Tensorflow實現RNN(LSTM)手寫數字識別RNN
- 機器學習:scikit-learn實現手寫數字識別機器學習
- OpenCV + sklearnSVM 實現手寫數字分割和識別OpenCV
- 利用淺層神經網路識別圖片中的英文神經網路
- 如何用Python和深度神經網路識別影象?Python神經網路
- OpenCV進階之路:神經網路識別車牌字元OpenCV神經網路字元