1. 程式人生 > >深度學習系列(3)——使用神經網路去辨識手寫數字

深度學習系列(3)——使用神經網路去辨識手寫數字

1、人腦的數字辨識

人腦的視覺系統可以說是世界的奇蹟之一,看下面一行數字:
這裡寫圖片描述
你會覺得你毫不費力地看出了它是 50419 ,其實識別的過程並不簡單。人類大腦的每個半球中,有一個初級視覺皮層,V1區,約含有1億4000萬個神經元,它們之間的連線數更是達到了數百億。然而,人的視覺不僅僅只是V1,整個一系列的視覺皮層還有 V2、V3、V4和V5,這些都做著更復雜的影象處理。如果大家對這方面想有更深入的瞭解,可以去看看這本書:神經計算原理/(美) Fredric M. Ham, Ivica Kostanic著 葉世偉, 王海娟譯

2、計算機視覺模式識別-神經網路

1) 視覺模式識別的難度顯而易見,現在如果讓你嘗試寫一個計算機程式,以識別數字,你會覺得無從下手。神經網路以不同的方式解決問題。這個想法是採取大量的手寫體數字,稱為訓練例項,然後開發一個系統,可以學習這些訓練例項。換句話說,神經網路通過例項來自動推斷識別手寫數字的規則。此外,通過增加訓練例項的數量,網路可以瞭解更多的手寫規則,從而健壯網路提高其準確性。

這裡會有一個很有趣的問題,你是否覺得訓練樣本足夠多就能實現人工智慧。

2)後續將編寫一個程式實現一個神經網路,學習識別手寫數字。程式只需74行長,並無使用其他神經庫,但這個簡短的程式可以識別的數字精度超過百分之96。在後續的部落格中,改進方法,可以提高精度超過百分之99。

這裡之所以用手寫識別例項,因為它是一個很好的原型問題,可以作為我們學習的切入點,起始點。手寫數字識別的確是具有挑戰性,但它並沒有想象中的那麼困難,但你需要先構思一個解決方案,你的電腦要有很好的計算能力。我們會反覆地回到手寫識別的問題。在後面的學習中,我們將討論如何將這些思想應用於計算機視覺中的其他問題,以及在語言、自然語言處理和其他領域中的應用。

3)當然,如果只寫一個程式來識別手寫體數字,那麼博文將非常簡短,對於初學者可能並不理解其中應用的理論思想!這一過程中,會設計很多神經網路的核心思想,包括2類重要型別的人工神經元(感知器和乙狀結腸神經),以及神經網路的標準學習演算法,稱為隨機梯度下降法(這個不瞭解的,建議去學習ufldl,連結地址:http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B)。在整個過程中,我將著重於解釋為什麼這樣做,這和我們的神經網路區別及相似之處。在這樣一個循序漸進的討論、交流式的學習中,更深的理解神經網路,相信大家定將獲益匪淺。最終理解的深度學習是什麼,以及為什麼它很重要。

瞎掰了幾大段了,再接下來就是理論乾貨了,終於能進入正題了。