從零到一:帶你認識深度學習!
作者:Zied Haj-Yahia
翻譯:張玲
校對:丁楠雅
本文約2500字,建議閱讀15分鐘。
本文為你簡要介紹深度學習的基本構成、模型優化的幾種方式和模型訓練的一些最佳實踐。
一年多來,我在LinkedIn、Medium和Arxiv上閱讀了不少深度學習相關文章和研究論文。當我幾周之前開始麻省理工學院6.S191深度學習線上課程(這裡是課程網站的連結)以後,我決定寫下這一系列的文章來加深我對深度學習的結構化理解。
我將釋出以下4個課程:
深度學習簡介
基於神經網路的序列建模
計算機視覺中的深度學習-卷積神經網路
深度生成模型
對於每門課程,我將概述主要概念,並根據以前的閱讀資料以及我在統計學和機器學習方面的背景增加更多的細節和解釋。
從第2課程開始,我還將為每一課的開源資料集新增一個應用程式。
好的,讓我們開始吧!
深度學習簡介
背景
傳統的機器學習模型在處理結構化資料方面一直非常強大,並且已經被企業廣泛用於信用評分、客戶流失預測、消費者定位等。
這些模型的成功很大程度上取決於特徵工程階段的效能:我們越接近業務,從結構化資料中提取相關知識越多,模型就越強大。
當涉及到非結構化資料(影象、文字、語音、視訊)時,手動特徵工程是耗時的、脆弱的,而且在實踐中是不可擴充套件的,這就是神經網路因其可以從原始資料中自動發現特徵或者分類所需要的表示而越來越受歡迎的原因。它取代手動特徵工程,允許一臺機器既能學習特徵又能利用這些特徵執行特定的任務。
硬體(GPU)和軟體(與AI相關的高階模型/研究)的進步也提升了神經網路的學習效果。
基本架構
深度學習的基本組成部分是感知器,它是神經網路中的單個神經元。
給定一組有限的m個輸入(例如,m個單詞或m個畫素),我們將每個輸入乘以一個權重,然後對輸入的加權組合進行求和,並新增一個偏差,最後將它們輸入非線性啟用函式,輸出。
偏差會向輸入空間新增另一個維度。因此,在輸入全零向量的情況下,啟用函式依然提供輸出。它在某種程度上是輸出的一部分,與輸入無關。
啟用函式的目的是將非線性引入網路。實際上,無論輸入分佈如何,線性啟用函式都會產生線性決策。非線性使我們能夠更好地逼近任意複雜的函式,這裡有一些常見的啟用函式示例:
深度神經網路只是組合多個感知器(隱藏層),以產生輸出。
現在,我們已經瞭解了深度神經網路的基本架構,讓我們看看它如何用於給定的任務。
訓練神經網路
比方說,對於一組X射線影象,我們需要模型來自動區分病人與正常人。
為此,機器學習模型需要像人一樣通過觀察病人和正常人的影象來學會區分這兩類影象。因此,它們自動理解可以更好地描述每類影象的模式,這就是我們所說的訓練階段。
具體地說,模式是一些輸入(影象、部分影象或其他模式)的加權組合。因此,訓練階段只不過是我們估計模型權重(也稱為引數)的階段。
當談論估計時,談論的是我們必須優化的目標函式。構建這個函式,應該最好地反映訓練階段的效能。當涉及到預測任務時,這個目標函式通常稱為損失函式,度量不正確的預測所產生的成本。當模型預測非常接近真實輸出的東西時,損失函式非常低,反之亦然。
在存在輸入資料的情況下,我們計算經驗損失(分類的二元交叉熵損失和迴歸的均方差損失)來度量整個資料集上的總損失。
由於損失是網路權重的函式,我們的任務是找到實現最低損失的權重集:
如果只有兩個權重,我們可以繪製下面的損失函式圖。我們想要做的是找出這種損失的最小值,從而找出損失達到最小值時的權重值。
為了最小化損失函式,我們可以應用梯度下降演算法:
首先,我們隨機選擇權重的初始p向量(例如,遵循正態分佈)。
然後,我們計算初始p向量中損失函式的梯度。
梯度方向指示的是使損失函式最大化的方向。 因此,我們在梯度的反方向上邁出了一小步,使用此更新規則相應地更新權重值:
我們不斷移動,直至收斂達到這張圖的最低點(區域性最小值)。
注意:
在更新規則中,是學習率,決定著我們在梯度反方向上移動步伐的大小。它的選擇非常重要,因為現代神經網路的架構是非常非凸的。如果學習率太低,模型可能陷入區域性最小值;如果學習率太大,模型則可能發散。可以採用自適應學習率來調整梯度每次迭代時的學習率。有關更詳細的說明,請閱讀Sebastian Ruder對梯度下降優化演算法的概述。
為了計算給定向量的損失函式的梯度,我們使用反向傳播。考慮上面的簡單神經網路絡,它包含一個隱含層和一個輸出層。想要計算與每個引數有關的損失函式的梯度,首先,應用鏈規則,因為。然後,再次應用鏈規則來將梯度反向傳播給前一層。出於同樣的原因,我們可以這樣做,因為(隱藏狀態)僅取決於輸入。因此,反向傳播包括使用來自後面層的梯度對網路中每個權重重複這樣的過程。
神經網路實踐
在存在大資料集的情況下,關於每個權重的梯度計算可能非常昂貴(考慮反向傳播中的鏈規則)。為此,我們可以計算資料子集(小批量)的梯度,將其作為真實梯度的估計值。它能給出比僅隨機進行一次觀察的隨機梯度下降(SGD)更準確的梯度估計值,而且比使用全部資料進行梯度計算的方式要快。每次迭代使用小批量梯度計算,可以快速訓練模型,特別是當我們使用不同的執行緒(GPU)時。我們可以平行計算每個迭代:每個權重和梯度的批處理在單獨的執行緒中計算。然後,收集計算以完成迭代。
和任何其他“經典”機器學習演算法一樣,神經網路可能面臨過度擬合的問題。理想情況下,在機器學習中,我們希望構建這樣的模型:能夠從訓練資料中學習問題描述,而且也能夠很好地概括看不見的測試資料。正則化是一種限制優化問題、避免產生複雜模型(即避免記憶資料)的方法。當談論正則化時,我們通常會討論Dropout。它在訓練階段隨機丟棄(丟棄,即將相關啟用設定為0)某些隱藏神經元或者在有可能過度擬合的情況下提前結束訓練過程。為此,我們計算相對於訓練迭代次數的訓練和測試階段的損失。當測試階段的損失函式開始增加時,我們停止學習。
總結
第一篇文章是對深度學習的介紹,可歸納為3個要點:
首先,我們瞭解了深度學習的基本組成部分,即感知器。
然後,我們學會了將這些感知器組合在一起以組成更復雜的層次模型,並學會了如何使用反向傳播和梯度下降從數學上來優化這些模型。
最後,我們已經看到了在現實生活中訓練這些模型的一些實際挑戰,以及一些最佳實踐,如自適應學習,批處理和避免過度擬合的正則化。
下一篇文章將是關於神經網路的序列建模。我們將學習如何模擬序列,重點關注遞迴神經網路(RNN)及其短期記憶和長期短期記憶(LSTM)以及它們在多個時間步長內跟蹤資訊的能力。
敬請關注!
原文標題:
Introduction to Deep Learning
原文連結:
https://www.kdnuggets.com/2018/09/introduction-deep-learning.html
譯者簡介
張玲,在崗資料分析師,計算機碩士畢業。從事資料工作,需要重塑自我的勇氣,也需要終生學習的毅力。但我依舊熱愛它的嚴謹,痴迷它的藝術。資料海洋一望無境,資料工作充滿挑戰。感謝資料派THU提供如此專業的平臺,希望在這裡能和最專業的你們共同進步!
翻譯組招募資訊
工作內容:將選取好的外文前沿文章準確地翻譯成流暢的中文。如果你是資料科學/統計學/計算機專業的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友,資料派翻譯組歡迎你們加入!
你能得到:提高對於資料科學前沿的認知,提高對外文新聞來源渠道的認知,海外的朋友可以和國內技術應用發展保持聯絡,資料派團隊產學研的背景為志願者帶來好的發展機遇。
其他福利:和來自於名企的資料科學工作者,北大清華以及海外等名校學生共同合作、交流。
點選文末“閱讀原文”加入資料派團隊~
轉載須知
如需轉載,請在開篇顯著位置註明作者和出處(轉自:資料派THU ID:DatapiTHU),並在文章結尾放置資料派醒目二維碼。有原創標識文章,請傳送【文章名稱-待授權公眾號名稱及ID】至聯絡郵箱,申請白名單授權並按要求編輯。
釋出後請將連結反饋至聯絡郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。
點選“閱讀原文”擁抱組織