第一章 使用神經網路識別手寫數字 0 概述

2022-08-05 00:03:16 字數 1220 閱讀 2178

原文:

人類視覺系統是世界上的一大奇蹟。看這串手寫體數字:

,大多數人毫不費力便能識別出這是504192。但這種『毫不費勁』是騙人的,在我們大腦的兩個半球中,有著乙個主要的視覺皮層,被稱作v1,它包含1.4億個神經元、以及它們之間數百億的連線,並且人類不僅僅只有v1,而是乙個包含一系列視覺皮層的整體——v2,v3,v4和v5。它們做著一層比一層複雜的影象處理。大自然在我們腦殼裡面放了一部超級計算機,經過了數億年的進化和調整,使得它十分適合理解這個世界的模樣。手寫數字的識別一點兒也不容易,我們人類出乎意料地擅長理解眼睛展示給我們的事物,所有的工作都在不知不覺中完成,因此我們並沒有認識到視覺系統處理的問題有多困難。

而神經網路另闢蹊徑,它收集大量的手寫體數字,稱作訓練樣本,然後開發乙個可以從樣本中學習規則的系統。還句話說,神經網路通過樣本自動推斷手寫數字的識別規則,並且通過樣本數量的增加,該網路還能學到更多手寫相關的東西,從而提高它的準確性。所以,儘管我只展示100張手寫數字,也許我們應該構建乙個可以通過使用成千上萬甚至數百億樣本來訓練的更好的手寫識別器。

通過本章,我們將編寫乙個電腦程式來實現乙個能夠學會識別手寫數字的神經網路,這個程式只有74行**,而且沒有使用任何神經網路的專用庫。儘管如此,這個簡短的程式不加干涉依然能以96%的準確率識別手寫數字。在後面的章節中,我們還將提出一些可以將準確率提高到99%的方法,目前最好的商用神經網路效能之優,足以用來銀行處理支票,郵局識別位址。

我們將重點放在手寫識別上,因為它是乙個學習神經網路的出色的原型問題。作為乙個原型它的優點是——充滿挑戰——識別手寫數字絕非易事——但還不至於難到需要乙個及其複雜的解決方案,或者是巨大的算力。而且,通過它,還能發展出更先進的技術,比如深度學習。因此,貫穿整本書,我們會時不時地回到手寫識別的問題上。稍後的地方,我們還會討論這些點子如何應用到計算機視覺其他問題上,以及語音、自然語言處理等其他領域的問題。

當然,假如本章的關鍵只是如何編寫乙個識別手寫數字的程式,那麼本章的內容將會簡短很多!但是,一路上我們還會研究許多神經網路的關鍵想法,包括兩種重要的人工神經元型別(感知器[perceptron]和乙狀神經元[sigmoid neuron]),還有神經網路標準演算法——隨機梯度下降演算法。至始至終,我專注於解釋為什麼事情會這樣子發生,並建立你的神經網路直觀感覺。這比我僅僅介紹發生了什麼需要更多的討論,但為了你能達到更深層次的理解,這是值得的。作為回報,在本章結束時我們將能夠理解什麼是深度學習,以及它為什麼重要。

使用神經網路識別手寫數字

神經網路和深度學習為影象識別 語音識別 自然語言處理等問題提供了目前最好的解決方案。本書主要會介紹神經網路和深度學習背後關鍵的概念。更多關於本書的細節,請參考這裡。或者您可以直接從第一章開始學習。本專案是neural networks and deep learning的中文翻譯,原文作者 mich...

使用神經網路識別手寫數字

最近在看michael nielsen的 neural network and deep learning 嘗試復現書中的 但這本書的 貌似用的python2.0,所以在執行的時候,報了好多錯誤,在這裡進行記錄一下。1 載入mnist資料集出錯 unicodedecodeerror ascii co...

第一章 迴圈神經網路簡介

1 簡單介紹 我們知道在機器學習領域中,傳統的神經網路模型是從輸入層到隱藏層再到輸出層,層與層之間是全連線的,而每層之間的節點是無連線的,它的弊端我在這裡就不再贅述。我們主要介紹rnn,他為什麼稱為迴圈神經網路呢?因為它的每乙個輸出序列都與前面的輸出序列有關。具體表現在該網路會記錄前面的資訊並應用到...