天天看點

觀察|深度學習為何強大?适當的神經網絡架構+大資料

據Emergen Research分析稱,到2028年,全球深度學習市場規模預計将以39.1%的穩定複合年增長率達到933.4億美元,推動其市場收入的關鍵因素是采用基于雲的技術和在大資料分析中使用深度學習系統。

那麼,究竟什麼是深度學習?它如何工作?

據《VentureBeat》在近日《這就是深度學習如此強大的原因》一文中總結道:深度學習是機器學習的一個子集,它使用神經網絡來執行學習和預測。深度學習在各種任務中都表現出了驚人的表現,無論是文本、時間序列還是計算機視覺。深度學習的成功主要來自大資料的可用性和計算能力,這使得深度學習的表現遠遠優于任何經典的機器學習算法。

深度學習的本質:神經網絡和函數

有網友曾笑言,“當你想要拟合任何函數或者任何分布,而又沒有思路時,試試神經網絡吧!”

先上兩個重要結論:

神經網絡是一個互相連接配接的神經元網絡,每個神經元都是一個有限函數逼近器。這樣,神經網絡被視為通用函數逼近器。

深度學習是具有許多隐藏層(通常大于2個隐藏層)的神經網絡。深度學習是從層到層的函數的複雜組合,進而找到定義從輸入到輸出的映射的函數。

觀察|深度學習為何強大?适當的神經網絡架構+大資料

在高中數學我們會學到,函數就是從輸入空間到輸出空間的映射。一個簡單的sin(x)函數是從角空間(-180°到180°或0°到360°)映射到實數空間(-1到1)。函數逼近問題是函數論的重要組成部分,涉及的基本問題是函數的近似表示問題。

那麼,為什麼神經網絡被認為是通用函數逼近器呢?

每個神經元學習一個有限的函數:f(.)=g(W*X)其中W是要學習的權重向量,X是輸入向量,g(.)是非線性變換。W*X可以可視化為高維空間(超平面)中的一條線,而g(.)可以是任何非線性可微函數,如sigmoid、tanh、ReLU等(常用于深度學習領域)。

在神經網絡中學習無非就是找到最佳權重向量W。例如,在y=mx+c中,我們有2個權重:m和c。現在,根據二維平面空間中點的分布,我們找到滿足某些标準的m及c的最佳值,那麼對于所有資料點,預測y和實際點之間的差異最小。

神經網絡“層”效果:學習具體到類别概括的映射

如果輸入是獅子的圖像,輸出是屬于獅子類的圖像分類,那麼深度學習就是學習将圖像向量映射到類的函數。類似地,輸入是單詞序列,輸出是輸入句子是否具有正面/中性/負面情緒。是以,深度學習是學習從輸入文本到輸出類的映射:中性或正面或負面。

如何實作上述任務呢?

每個神經元都是一個非線性函數,我們将幾個這樣的神經元堆疊在一個“層”中,每個神經元接收相同的一組輸入但學習不同的權重W。是以,每一層都有一組學習函數:f1,f2,…,fn,稱為隐藏層值。這些值再次組合,在下一層:h(f1,f2,...,fn)等等。這樣,每一層都由前一層的函數組成(類似于h(f(g(x))))。已經表明,通過這種組合,我們可以學習任何非線性複函數。

深度學習作為曲線拟合的插值:過度拟合挑戰與泛化目标

深度學習先驅Yann LeCun(卷積神經網絡的創造者和圖靈獎獲得者)曾在推特上發帖稱,“深度學習并沒有你想象的那麼令人驚歎,因為它僅僅是美化曲線拟合的插值。但是在高維中,沒有插值之類的東西。在高維空間,一切都是外推。”

觀察|深度學習為何強大?适當的神經網絡架構+大資料

插值(interpolation)是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值。

從生物學的解釋來看,人類通過逐層解釋圖像來處理世界的圖像,從邊緣和輪廓等低級特征,到對象和場景等進階特征。神經網絡中的函數組合與此一緻,其中每個函數組合都在學習關于圖像的複雜特征。用于圖像最常見的神經網絡架構是CNN(Convolutional Neural Networks,卷積神經網絡),它以分層方式學習這些特征,然後一個完全連接配接的神經網絡将圖像特征分類為不同的類别。

比如,給定一組平面上的資料點,我們嘗試通過插值拟合曲線,該曲線在某種程度上代表了定義這些資料點的函數。我們拟合的函數越複雜(例如在插值中,通過多項式次數确定),它就越适合資料;但是,它對新資料點的泛化程度越低。

這就是深度學習面臨挑戰的地方,也就是通常所說的過度拟合問題:盡可能地拟合資料,但在泛化方面有所妥協。幾乎所有深度學習架構都必須處理這個重要因素,才能學習在看不見的資料上表現同樣出色的通用功能。

深度學習如何學習?問題決定了神經網絡架構

那麼,我們如何學習這個複雜的函數呢?

這完全取決于手頭的問題,其決定了神經網絡架構。如果我們對圖像分類感興趣,那麼我們使用CNN。如果我們對時間相關的預測或文本感興趣,那麼我們使用RNN(Recurrent Neural Network,循環神經網絡) 或Transformer,如果我們有動态環境(如汽車駕駛),那麼我們使用強化學習。

除此之外,學習還涉及處理不同的挑戰:

·通過使用正則化(regularization,用來防止訓練的模型産生過拟合與欠拟合現象)處理確定模型學習通用函數,而不僅僅适合訓練資料。

·根據手頭的問題,選擇損失函數。粗略地說,損失函數是我們想要的(真實值)和我們目前擁有的(目前預測)之間的誤差函數。

·梯度下降是用于收斂到最優函數的算法。決定學習率變得具有挑戰性,因為當我們遠離最優時,我們想要更快地走向最優,而當我們接近最優時,我們想要慢一些,以確定我們收斂到最優和全局最小值。

·大量隐藏層需要處理梯度消失問題。跳過連接配接和适當的非線性激活函數等架構變化,有助于解決這個問題。

基于神經架構與大資料:深度學習帶來計算挑戰

現在我們知道深度學習隻是一個學習複雜的函數,它帶來了其他計算挑戰:

要學習一個複雜的函數,我們需要大量的資料;為了處理大資料,我們需要快速的計算環境;是以,我們需要一個支援這種環境的基礎設施。

使用CPU進行并行處理不足以計算數百萬或數十億的權重(也稱為DL的參數)。神經網絡需要學習需要向量(或張量)乘法的權重。這就是GPU派上用場的地方,因為它們可以非常快速地進行并行向量乘法。根據深度學習架構、資料大小和手頭的任務,我們有時需要1個GPU,有時,資料科學家需要根據已知文獻或通過測量1個GPU的性能來做出決策。

通過使用适當的神經網絡架構(層數、神經元數量、非線性函數等)以及足夠大的資料,深度學習網絡可以學習從一個向量空間到另一個向量空間的任何映射。這就是讓深度學習成為任何機器學習任務的強大工具的原因。

繼續閱讀