第01课:深度学习概述
什么是深度學習
機器學習,顧名思義,是機器從數據中總結經驗,找出某種規律構建模型,并用它來解決實際問題。而深度學習,是機器學習的一個重要分支和延伸,是包含多隱層的神經網絡結構。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,從而學習到數據本身最關鍵的特征。
簡單來說,深度學習就是更深、更加復雜的神經網絡結構。首先,我將通過一個例子來解釋什么是神經網絡。
例如一個房屋價格預測問題。輸入 x 是房屋面積大小,輸出 y 是房屋的價格。如果要預測價格與面積的關系,最簡單的一種模型就是 y 與 x 近似線性相關。
如上圖所示,紅色圓圈表示真實樣本的價格與面積分布,藍色虛線表示預測線性模型。這種最簡單的線性模型被稱為線性感知機模型。線性感知機模型的基本結構如下:
其中,w 為權重系數(Weights),b 為偏移量(Bias)。線性感知機模型表征了房屋價格與單一變量(房屋面積)的線性關系。
單個神經元(Neuron)與線性感知機的基本結構非常類似,只是在線性的基礎上增加了非線性單元,目的是為了讓模型更加復雜。
這里的非線性單元指的就是激活函數。關于激活函數的概念這里不作介紹,后面章節我將詳細介紹。這里,大家把它看成是一個非線性函數即可。這樣,線性感知機和非線性單元就構成了單個神經元。
單個神經元描述的是輸出與單一變量之間的關系。還是上面的例子,如果房屋價格不僅與房屋面積有關,還和房間數目、地理位置等多個因素有關。這樣,輸入 x 不再是單一變量,而是由房屋面積、房間數目、地理位置等組成的多維向量。因此,我們就可以使用多個神經元來構建一個更加復雜的模型。
如上圖所示, x1、x2、x3 表示輸入元素,$\bigcirc$ 表示神經元。h1、h2、h3 是隱藏層神經元,之所以設置隱藏層神經元是為了分別從不同輸入中提取特征,再將這些特征經過輸出層神經元 out,預測房價 g。每一個隱藏層神經元與每個輸入元素都進行連接,這保證了提取信息的完整性。這個模型就是最簡單的神經網絡模型。
上面隱藏層個數為什么是 3?其實,隱藏層神經元個數不是固定的,可以是 2,也可以是 4,它是個可調參數。更深入地,上面的神經網絡模型只有單隱藏層,如果問題比較復雜,訓練樣本比較多,我們可以使用更多隱藏層,每一隱藏層的神經元個數都可以設置。一般來說,層數越多越深,神經網絡模型模型越復雜,學習能力越強。這樣的深層神經網絡就被稱為深度學習模型。
深度學習模型除了標準的神經網絡(Neural Network,NN)之外,還包括卷積神經網絡(Convolutional Neural Network,CNN)、循環神經網絡(Recurrent Neural Network,RNN)。
CNN 多應用于機器視覺、圖像處理,RNN 多應用于序列模型、語音處理等。關于 CNN 和 RNN 的詳細內容,我將在之后的章節中詳細介紹。
為什么要深度學習
傳統的機器學習算法,例如線性回歸、邏輯回歸、支持向量機、決策樹、隨機森林等能夠處理很多問題,實際應用也非常廣泛。許多數據挖掘競賽、機器學習算法大賽、Kaggle 等,傳統的機器學習算法都有著很優秀的表現。但是,隨著互聯網的興起與蓬勃發展,每天都有海量的數據產生,如何從大數據中尋找規律建立準確的模型,深度學習逐漸發揮其優勢,呈現出比傳統機器學習更大的能力。下面,我們用一張圖來說明。
上圖共有 4 條曲線,從下往上分別為傳統機器學習算法、規模較小的神經網絡、規模中等的神經網絡、規模較大的神經網絡。從每條曲線的趨勢可以看出,當數據量較少的時候,傳統機器學習模型的表現是不錯的,與神經網絡模型差別不大。但隨著數據量越來越大,傳統機器學習模型的性能表現開始增長緩慢,似乎到達了瓶頸。而神經網絡模型的性能仍然表現出較快的上升趨勢,且規模越大,性能提升越明顯。這主要是因為深度學習模型網絡結構更加復雜,更能從大數據中提取有效的特征,準確性較高。所以,近些年來,深度學習在處理大數據和建立復雜準確的學習模型方面,有著非常不錯的表現。
在機器視覺、圖像處理方面,深度學習可以說是帶來了革命性的變化。近些年來,在全球知名的圖像識別競賽 ILSVRC 中,深度學習模型,尤其是各種 CNN 模型在錯誤率方面,不斷刷新紀錄,相比之前傳統機器學習算法,性能提升有質的飛躍。
圖片轉載自 cs231n上圖中,從 2010 年開始,開始使用 CNN 模型。轉折點是 2012 年, AlexNet 的出現,直接將錯誤率降低了近 10 個百分點。這是之前所有機器學習模型無法做到的。2015 年,包含 152 層神經元的 ResNet 模型,竟然將錯誤率降低至 3.57%,這甚至比人類肉眼識別的準確率還高!
除了在圖像識別方面,深度學習在機器翻譯領域也取得了飛躍式的發展。基于 RNN 的機器翻譯最典型的代表就是谷歌翻譯,讓機器能夠在深度學習中不斷完善答案,給用戶最想要的信息。說白了就是更智慧、更精準了。直接改善了之前逐詞直譯的效果,而是升級為以整個句子為單位進行翻譯。從性能上來說,谷歌翻譯整合神經網絡,翻譯質量已經接近人工筆譯。
不止這些,深度學習在諸如自動駕駛、推薦系統、人臉識別等領域都取得了重大進展。
為什么能夠深度學習
近些年來,深度學習能夠飛速發展的主要原因歸結為三點:
第一,數據量指數級增長為深度學習提供了數據基礎和先決條件。任何機器學習模型的構建都是基于數據的,足夠多數據,更利于模型從中準確地挖掘數據特征,尋找數據規律。基于大數據構建的模型才能更加準確、有效。
第二,計算機硬件更新以及 GPU 的出現為深度學習提供了強大的運算能力。大數據是好事,但是要快速且準確地通過深度學習模型處理并運算這些數據需要強大的計算機硬件作為支撐。近些年來,計算機硬件不斷更新換代,運算速度大大提升,最關鍵的是 GPU 的出現和使用,大大提高了深度學習模型的訓練速度,可能原來使用 CPU 需要訓練一周、一個月的模型,使用 GPU 只要幾個小時就搞定了。這大大提高了效率。現在,很多深度學習框架都支持使用 GPU 來加速模型運算。
第三,模型和算法上的創新和改進讓深度學習的性能和速度也大大提升。近些年來,不斷有新的深度學習模型和優化算法被提出,例如 AlexNet 模型、ResNet 模型、SGD 算法、Adam 算法等。這些優化模型和算法讓深度學習模型本身更加強大,不僅大大提高了運算速度,也提高了訓練的精準度,使得模型性能大大提高。
如何進行深度學習
深度學習如此強大,那么我們如何入門并系統地學習呢?下面,我將給大家簡要介紹下本達人課的主要內容和章節分布。
深度學習的復雜性和難點主要體現在神經網絡模型的數學推導、神經網絡模型的優化,以及如何理論聯系實戰,構建一個優秀的深度學習模型來解決實際問題。為了完整地將深度學習知識點梳理清楚,本課程共包含三大部分。
第一部分(第 01-04 課)主要介紹一些深度學習的預備知識。對深度學習進行簡要概述,列舉重要的 Python 基礎知識,手把手教你搭建本課程需要的開發環境,使用 Anaconda 平臺,重點介紹 Jupyter Notebook 的使用以及知名的深度學習框架 PyTorch。
第二部分(第 05-14 課)主要介紹神經網絡的基礎,以最簡單的兩層神經網絡入手,詳細推導正向傳播與反向梯度的算法理論。然后,從簡單網絡推導至深度網絡,并重點介紹神經網絡優化算法及構建神經網絡模型的實用建議。每一部分都會有一個實戰演練的例子,方便大家實操。
第三部分(第15-18篇)主要介紹卷積神經網絡 CNN 和循環神經網絡 RNN,重點剖析兩種模型的數學原理和推導過程。最后,利用越來越火的深度學習框架 PyTorch 分別構建 CNN 和 RNN 模型,解決實際問題。
總結
以上是生活随笔為你收集整理的第01课:深度学习概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第02课:深度学习 Python 必备知
- 下一篇: 程序员思维是什么?程序员思维从哪里来?程