神經網路和深度學習

限量版 愛發表於2017-11-03

neural networks
neural networks

我是薛銀亮,感謝英文原版線上書籍,這是我學習機器學習過程中感覺非常適合新手入門的一本書。鑑於知識分享的精神,我希望能將其翻譯過來,並分享給所有想了解機器學習的人,本人翻譯水平有限,歡迎讀者提出問題和發現錯誤,更歡迎大牛的指導。因為篇幅較長,文章將會分為多個部分進行,感興趣的可以關注我的文集,文章會持續更新。


在這本神經網路和深度學習的書籍中,你將學會這些:

  • 神經網路,一種受生物啟發的程式設計技術,能從已有的觀測資料中學習的技術
  • 深度學習,一套強大的神經網路學習技術

目前,神經網路和深度學習提供了對影象識別、語言識別以及自然語言處理等等問題的解決方案。這裡將會提供很多關於神經網路和機器學習的核心對比。

關於

神經網路是一種最美妙的程式設計規範(方法)。在傳統的程式設計方法中,我們需要告訴計算機每一步要幹什麼,通過拆解一個大的問題成為很多小問題,並清晰的為計算機定義好簡單執行的程式來完成我們的需求。但是在神經網路中我們並不告訴計算機如何解決我們的問題。相反的,它(計算機)通過從已有資料中自己學習,找到解決手頭問題的方法。

自動從資料中學習聽起來非常靠譜,但是一直到2006年我們(人類)都沒能知道如何才能使神經網路在一些指定領域的解決能力超過傳統的程式設計方法。但是今天神經網路和深度學習被很多大公司,例如Google、Microsoft、Facebook、Baidu etc...應用在計算機視覺、語音識別和自然語言處理等各個領域。

這裡的一系列文章的目的是幫助你掌握深度學習和神經網路的核心概念。通過學習這些,你將會寫一些使用神經網路和深度學習的程式碼來處理影象識別問題。並且你將能夠會使用這些基礎來處理你感興趣的其他問題。

方法指導

學習時,要注重理解神經網路和深度學習的核心理論,而不是那一系列的建議。因為這樣你可以將你理解的理論快速的應用在其他的領域。在程式語言的使用中,主要考慮核心的語法、庫以及資料結構。因為一門語言有太多的庫,我們沒有那麼多的精力去全部學習,把精力集中在關鍵的地方就好。

這裡並不會指導如何使用一些神經網路的庫。如果你想學習關於一些類似庫的使用,請到相應的官網去閱讀。但是請注意:雖然直接學習一些庫能在短時間內解決一些問題,但是如果你想了解神經網路中究竟幹了什麼以及為什麼這麼幹,並希望應用這些思路來解決你自己的問題,那麼僅僅學習那些庫是不夠的。你需要去學習神經網路工作的原理。這樣才能走的更遠。Technologies come and technologies go, but insight is forever.

動手實踐

我們會通過使用計算機識別手寫數字的例子來學習神經網路和深度學習的核心原理。動手實現意味著你需要一些程式設計經驗,但是你並不需要是一個很牛逼的程式設計師。這裡的程式碼是使用的Python(version 2.7)。這裡會使用一點神經網路的庫,你可以使用這些庫來做試驗。所有的程式碼都可以在這裡下載demo,在完成這寫文章學習之後,你可以輕鬆的獲取完整的神經網路庫,並使用它來工作。

另外,閱讀這些文章可能需要一些數學功底,但是不要太害怕,因為這些是相對比較基礎的數學,為了讓更多讀者明白,我將會盡量解釋清楚。尤其在第二章節會用更多的數學公式,這需要微積分和線性代數的知識基本就可以理解。一般來說(天朝)國內本科的基礎課程都會有所涉及。如果你覺得實在是搞不懂這些,可以跳過這些演算法概念,直接看結果。

這裡的文章是市面上非常稀缺的同時兼顧理論和實踐的。我相信我們能一起建立自己的簡單神經網路。

這裡是開篇,接下來我將會呈現第一章: 使用神經網路識別手寫字。歡迎繼續閱讀我的下一篇文章。如果你能從我的文章獲得一些進步,我建議你可以關注我或打賞。

下一篇

相關文章