深入理解深度學習

guotianqing發表於2020-11-14

基礎簡介


人們在談論AI時,常常會混淆人工智慧、機器學習和深度學習的關係。

其實,它們之間的關係很簡單,一張圖就說明了:

在這裡插入圖片描述

人工智慧是非常寬泛的,一般來說將通常由人類完成的智力任務自動化,就可以稱為人工智慧。

因此,人工智慧是一個綜合性的領域,不僅包括機器學習和深度學習,還包括許多不需要學習的方法,如:

  • 一個自動化完成特定的任務的指令碼程式,如定時任務
  • 早期的國際象棋程式,由精心編寫的硬編碼規則完成,不涉及機器學習

只要足夠用心,硬編碼理論上可以解決許多明確定義的邏輯問題。但是它難以處理更復雜、模糊的問題,如影像分類、語音識別和翻譯等。

於是機器學習應運而生。

經典的程式設計方式是輸入規則和需要根據這些規則進行處理的資料,輸出結果。

而機器學習輸入的是資料和從這些資料中預期得到的答案,輸出的是規則。然後在新的資料上應用這些規則,並自主生成結果。

從下圖可以分析出兩者的差異:

在這裡插入圖片描述

所以說,機器學習是一種不同於經典程式設計的一種新的程式設計正規化。

機器學習系統是訓練出來的,不是明確地用程式編寫出來的。

將與某個特定任務相關的許多示例輸入機器學習系統,它會在這些示例中找出統計結構,從而最終找到規則並將任務自動化。

總的來說,機器學習具有以下特點:

  • 機器學習與數理統計關係密切
  • 機器學習常用於處理複雜的大型資料集
  • 機器學習真正需要使用的數學理論較少,且以工程為導向
  • 機器學習以更快的硬體和更大的資料集為驅動
  • 機器學習是需要上手實踐的學科,新的想法更多地是靠實踐來證明,而非理論推導

機器學習模型將輸入資料變為有意義的輸出,這是一個從已知的輸入和輸出中進行學習的過程。機器學習的三要素:

  • 輸入資料點。如果任務是為影像加標籤,那麼資料點就是影像。
  • 預期輸出的示例。如果任務是影像標記,那麼預期輸出就是“貓,狗”之類的標籤。
  • 衡量演算法好壞的方法。計算演算法的當前輸出與預期輸出的差距,衡量結果是一種反饋訊號,用於調節演算法的工作方式,其中的調節步驟就是學習。

因此機器學習和深度學習的核心在於有意義地變換資料,即在於學習輸入資料的有用“表示”——這種表示可以讓資料更接近預期輸出。

機器學習的技術定義就是在預先定義好的可能性空間中,利用反饋訊號的指引來尋找輸入資料的有用表示。

這個簡單的想法可以應用於很多智慧任務,包括但不限於語音識別,智慧駕駛等。

深度學習是機器學習的一個分支,它是從資料中學習表示的一種新方法,強調從連續的層中進行學習,這些層對應于越來越有意義的表示。

深度學習中的“深度”,指的就是一系列連續的表示層。資料模型中的層數,就是模型的深度。

現代深度學習通常包含數十個甚至上百個層,這些表示層是從訓練資料中通過神經網路的模型自動學習的。

說到這裡,有一點需要澄清一下,雖然深度學習的一些核心概念是從人們對大腦的理解中汲取部分靈感而形成的,但深度學習模型不是大腦模型。

可以這麼說,深度學習與神經生物學沒有任何關係,就我們的目的而言,深度學習是從資料中學習表示的一種數學框架。

深度學習的技術定義就是學習資料表示的多層級方法。這個想法很簡單,但事實證明,非常簡單的機制如果具有足夠大的規模,將會產生魔法般的效果。

工作原理


機器學習的基本過程:

  • 機器學習將輸入(如影像)對映到目標(如標籤:“狗”)
  • 這是通過觀察大量輸入和目標的示例完成
  • 深度神經網路通過一系列簡單的資料變換(層)來實現這種輸入到目標的對映
  • 資料變換是通過觀察示例學習到的

神經網路中每層對輸入資料所做的具體操作儲存在該層的權重中,本質上是一串數字。即每層實現的變換由其權重來引數化。

權重也稱為該層的引數。學習的意思是為神經網路的所有層找到一組權重值,使得該網路能夠將每個輸入與其目標正確地一一對應。

可以用下圖表示這個過程:

在這裡插入圖片描述

要想控制神經網路的輸出,就需要能夠衡量該輸出與預期值之間的距離。

這是神經網路損失函式(loss function)的任務,該函式也叫目標函式(objective function)。

損失函式的輸入是網路預測值與真實目標值(即希望網路輸出的結果),然後計算一個距離值,衡量該網路在這個示例上的效果好壞。

這個過程可以用下圖表示:

在這裡插入圖片描述

深度學習的基本技巧就是,利用這個距離值作為反饋訊號來對權重值進行微調,以降低當前示例對應的損失值。

這種調節由優化器來完成,它實現了反向傳播演算法,這是深度學習的核心演算法。

如下圖:

在這裡插入圖片描述

神經網路的權重值可能會非常多,一開始是隨機對它們賦值,此時損失值會很高,但隨著網路處理的示例越來越多,權重值也會向著正確的方向微調,損失值就會降低。

這個過程這是訓練迴圈,把這個迴圈重複足夠多的次數,得到的權重值會使損失函式達到最小。

具有最小損失值的網路,輸出值會與目標值儘可能接近,這就是訓練好的網路。

重申一次,這是一個很簡單的機制,一旦具有足夠大的規模,將會產生魔法般的效果。

應用


深度學習目前已經取得了許多的突破:

  • 接近人類水平的影像分類
  • 接近人類水平的語音識別
  • 接近人類水平的手寫文字轉錄
  • 更好的機器翻譯
  • 更好的文字到語音的轉換
  • 接近人類水平的智慧駕駛
  • 更好的廣告定向投放
  • 更好的網路搜尋結果
  • 能夠回答用自然語言提出的問題
  • 在圍棋上戰勝人類

對於深度學習在形式推理等方面的研究也在進行中。如果這行得通,那麼,深度學習將能夠協助人類進行科學研究和軟體開發等。

更多內容


深度學習是當前蓬勃發展的一個機器學習領域,另一個方向可能是梯度提升機。

具體而言,梯度提升機用於處理結構化資料問題,而深度學習用於處理影像分類等感知問題。

XGBoost庫用於處理前一種問題,而後一種問題主要使用Keras庫。

深度學習的三個驅動力:運算能力、資料和演算法,本文並未一一提及,讀者可自行查閱。

參考資料

《Python深度學習》

相關文章