快速入門——深度學習理論解析與實戰應用

紅色石頭發表於2018-08-03

1. 前言

說實話,我也是一個美劇迷,特別是一些燒腦的美劇,更是一追再追。前端時間,《西部世界》第二季也完結了。我一鼓作氣,看完之後,大呼過癮,深深地被其中栩栩如生的人工智慧機器人所吸引。不禁感嘆:現實世界真的會出現這樣厲害的人工智慧嗎?

這雖然是一個看似遙遠的事情,但也真的不好說沒有可能!縱觀這幾年,深度學習發展非常迅速,發展勢頭一直高歌猛進。無論是 AlphaGo 最終以 4:1 戰勝李世石,還是蘋果 Siri、谷歌翻譯、自動駕駛,等等。深度學習無不在影響著我們的日常生活和行為方式。因此,可以毫不誇張地說,我們有理由相信《西部世界》中的人工智慧有望成為現實,說不定哪一天,你的同事就是一個超級人工智慧機器人!

深度學習,以深而複雜的神經網路模型為基礎,更能挖掘海量資料深層蘊藏的資料規律,具備強大的學習能力。可以毫不誇張地說,深度學習徹底改變了傳統機器學習演算法的解決問題方式。下面,我用一張圖來做比較。

上圖中的 4 條曲線,從下往上分別為傳統機器學習演算法、規模較小的神經網路、規模中等的神經網路、規模較大的神經網路。從每條曲線的趨勢可以看出,當資料量較少的時候,傳統機器學習模型的表現是不錯的,與神經網路模型差別不大。但隨著資料量越來越大,傳統機器學習模型的效能表現開始增長緩慢,似乎到達了瓶頸。而神經網路模型的效能仍然表現出較快的上升趨勢,且規模越大,效能提升越明顯。這主要是因為深度學習模型網路結構更加複雜,更能從大資料中提取有效的特徵,準確性較高。所以,近些年來,深度學習在處理大資料和建立複雜準確的學習模型方面,有著非常不錯的表現。

在機器視覺、影象處理方面,深度學習可以說是帶來了革命性的變化。例如,在全球知名的影象識別競賽 ILSVRC 中,深度學習模型,尤其是各種 CNN 模型在錯誤率方面,不斷重新整理紀錄,相比之前傳統機器學習演算法,效能提升有質的飛躍。

從 2010 年開始,ILSVRC 有人開始使用 CNN 模型。轉折點是 2012 年, AlexNet 的出現,直接將錯誤率降低了近 10 個百分點。這是之前所有機器學習模型無法做到的。2015 年,包含 152 層神經元的 ResNet 模型,竟然將錯誤率降低至 3.57%,這甚至比人類肉眼識別的準確率還高!

除了在影象識別方面,深度學習在機器翻譯領域也取得了飛躍式的發展。基於 RNN 的機器翻譯最典型的代表就是谷歌翻譯,讓機器能夠在深度學習中不斷完善答案,給使用者最想要的資訊。說白了就是更智慧、更精準了。直接改善了之前逐詞直譯的效果,而是升級為以整個句子為單位進行翻譯。從效能上來說,谷歌翻譯整合神經網路,翻譯質量已經接近人工筆譯。

不止這些,深度學習在諸如自動駕駛、推薦系統、人臉識別等領域都取得了重大進展。

近些年來,深度學習發展太快了,正在慢慢改變著我們的生活方式。深度學習技術日新月異,對相關人才的需求也越來越大。所有的網際網路公司,例如 Google、 微軟、百度、騰訊等巨頭,無不在佈局人工智慧技術和市場。各大公司也迅速開展了人工智慧人才爭奪戰。百度、騰訊、阿里巴巴、京東等網際網路巨頭甚至都在美國矽谷不惜高薪挖掘人工智慧人才。現在北京、上海等地,深度學習演算法崗位,年薪 3、40w 都十分正常!

不僅如次,人工智慧連續兩年都被寫入政府工作報告中,可見國家對人工智慧是相當重視的。就在今年,我國第一本面向中學生的人工智慧教材——《人工智慧基礎(高中版)》正式釋出,人工智慧相關課程已經進入高中課堂。

面對這樣的人工智慧趨勢和浪潮,為了不被新技術淘汰,為了獲得更好的工作機會和薪資收入,實現人生價值,我們更應該深入瞭解深度學習,利用深度學習解決實際問題,成為一名優秀的深度學習專家。

2. 如何進行深度學習

深度學習,是機器學習的一個重要分支和延伸,是包含多隱層的神經網路結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,從而學習到資料本身最關鍵的特徵。簡單來數,深度學習的核心結構是神經網路,深入瞭解神經網路,是我們掌握深度學習本質的關鍵因素。

下面是我總結的深度學習入門路線圖:

程式語言與開發工具

深度學習首選 Python,Python 已經成為深度學習主導性的程式語言。而且,現在許多主流的深度學習框架,例如 PyTorch、TensorFlow 也都是基於 Python 的。Anaconda 作為 Python 的一個整合管理工具,它把 Python 相關資料計算與分析科學包都整合在了一起,省去了各個安裝的麻煩,非常方便。而且,Anaconda 自帶了 Jupyter Notebook,Jupyter Notebook 是一個非常強大的工具,允許使用者為資料分析、教育、檔案等任何你可以想到的內容建立漂亮的互動式文件,已迅速成為資料分析、機器學習、深度學習的必備工具。

夯實深度學習理論基礎

有人說深度學習就像一個黑匣子,完全不知道內部發生了什麼。也有人說深度學習不需要數學理論,只要會調引數就行了。其實,這兩種說法都有失偏頗。掌握基本的深度學習理論非常重要。例如神經網路的正向傳播過程,啟用函式的選擇與比較,反向傳播引數優化的過程,等等。只有對神經網路模型結構和推導過程有清晰的認識才能更好地建立模型優化直覺,構建效能良好的神經網路模型。而不是做只會使用框架和庫,知其然不知其所以然的“調包俠”。

積累豐富的實戰

俗話說:紙上得來終覺淺,覺知此事要躬行!理論與模型的建立都是為了更好地實踐,為了解決實際問題。深度學習也是這樣,掌握每個理論知識後,更重要的是將理論用於實踐。例如,使用深度學習模型解決影象識別、語音識別等,或者參加 kaggle。通過實戰,更能加深自己的理解,幫助自己更加熟練地掌握深度學習應用技巧。

靈活使用深度學習框架

使用深度學習框架,俗話說靈活地使用“輪子”,方便我們構建更大、更復雜的深度學習模型,能幫助我們更快地構建模型來解決實際問題。當然,這一步,個人覺得還是要建立在具備紮實的深度學習理論基礎上。常用的深度學習框架有 TensorFlow、PyTorch、Keras 等。簡單來說, TensorFlow 適合工業應用構建大型專案,PyTorch 適合學術研究構建小型專案。個人推薦使用 PyTorch,原因很簡單,因為簡單易懂。而且,它還彌補了 Tensorflow 靜態構圖的致命弱點。PyTorch 是可以構建動態計算圖。也就是說你可以隨時改變神經網路的結構,而不影響其計算過程。而 Tensorflow 這種靜態圖模組,一旦搭建好了神經網路, 你想修改結構也不行。

3. 深度學習知識網路

  • 一、深度學習預備知識
    • 01:深度學習概述
    • 02:深度學習 Python 必備知識點

    • 03:Anaconda 與 Jupyter Notebook

    • 04:深度學習框架 PyTorch

  • 二、 深度學習核心理論與實戰

    • 05:神經網路基礎知識
    • 06:淺層神經網路(NN)

    • 07:專案實戰:自己動手寫一個神經網路模型

    • 08:深層神經網路(DNN)

    • 09:專案實戰:讓你的神經網路模型越來越深

    • 10:優化神經網路:如何防止過擬合

    • 11:優化神經網路:梯度優化

    • 12:優化神經網路:網路初始化技巧與超引數除錯

    • 13:構建神經網路模型的實用建議

    • 14:專案實戰:深度優化你的神經網路模型

  • 三、 卷積神經網路 CNN 與 迴圈神經網路 RNN

    • 15:卷積神經網路(CNN)
    • 16:專案實戰:利用 PyTorch 構建 CNN 模型

    • 17:迴圈神經網路(RNN)

    • 18:專案實戰:利用 PyTorch 構建 RNN 模型

重點來了,為了更加詳細地對深度學習進行理論解析,講解實戰經驗,《深度學習理論解析與實戰應用》課程應運而生。《深度學習理論解析與實戰應用》針對深度學習的複雜性和難點進行講解和分析,主要體現在神經網路模型的數學推導、神經網路模型的優化,以及如何構建一個優秀的深度學習模型解決實際問題。希望通過課程內容的學習,大家可以掃清學習過程中的障礙,再上新臺階。本課程具有以下特色:

  • 內容深入淺出、理論推導詳細。
  • 理論結合實踐,在程式碼實踐中鞏固知識。

  • 知識體系完善,深度學習知識點各個擊破

作者簡介:

王柳,北京大學碩士畢業。CSDN 部落格專家,長期活躍於 CSDN、知乎、掘金等各大知識平臺。擅長機器學習、深度學習演算法理論,實戰經驗豐富,創辦了機器學習公眾號:AI 有道(ID:redstonewill)。

如果你熱愛深度學習,如果你想快速入門深度學習,如果你想鞏固深度學習理論並渴望自己動手寫神經網路,《深度學習理論解析與實戰應用》將給你提供完整的知識體系,幫助你快速掌握深度學習核心理論和實戰經驗。

掃碼試讀或點此試讀

相關文章