1. 程式人生 > 實用技巧 >重磅盤點:過去8年中深度學習最重要的想法

重磅盤點:過去8年中深度學習最重要的想法

圖片出處:unsplash.com

原文:Deep Learning’s Most Important Ideas[1]

作者:Denny Britz(ML 研究員,Google Brain 前成員)

譯者:REN

深度學習領域每天都有大量的新研究和論文發表。在這背後,是許多經過時間考驗的、被廣泛接納的基礎演算法、模型和概念。為幫助更好地理解其發展,“資料實戰派” 奉上一份對過去幾年重磅研究的優質盤點:

深度學習是一個瞬息萬變的領域,層出不窮的論文和新思路可能會令人不知所措。即使是經驗豐富的研究人員,也很難準確將研究成果傳達給公司的公關部門,繼而傳達給大眾。

對於初學者來說,理解和實現這些技術有利於打下堅實的理論基礎,是入門的最佳方法。

在深度學習領域,很多技術都可以跨域多個應用領域,包括計算機視覺,自然語言,語音識別和強化學習等等。在計算機視覺領域使用過深度學習的人,可能很快就能將類似的技術應用到自然語言研究中,即使特定的網路結構有所不同,但其概念,實現方法和程式碼基本一致。

必須強調的是,本文側重於計算機視覺,自然語言,語音識別和強化學習領域,但不會詳細解釋每種深度學習技術,用寥寥數百字解釋清楚一篇幾十頁的論文是不現實的。另外還有一些不容易重現的重要研究,比如 DeepMind 的 AlphaGo 或 OpenAI 的 OpenAI Five(Dota 2 模型),涉及到巨大的工程和運算挑戰,因此也不是討論的重點。

這篇文章的目的,是回顧在深度學習領域影響深遠的成果,概述每種技術及其歷史背景,儘量引導深度學習新人接觸多個領域的基礎技術。它們是這個領域最值得信賴的基石,每一個技術都經過了無數次的引用、使用和改進,經得起推敲。

文末會附上論文和程式碼連結。如果想要更好地掌握基礎技術和知識,可以嘗試先不看參考程式碼,從零開始用 PyTorch 實現論文中的某些演算法。

2012 年:用 AlexNet 和 Dropout 解決 ImageNet 影象分類

AlexNet 通常被認為是近年來引領深度學習和人工智慧研究蓬勃發展的基礎演算法。它是一種深度卷積神經網路(CNN),基於人工智慧大牛 Yann LeCun 早年間開發的 LeNet 模型。

AlexNet 結合了 GPU 的強大效能和先進的演算法,在對 ImageNet 影象資料集分類時,其表現遠遠超越了之前的所有演算法。它證明了神經網路真的很好用(至少在影象分類上)。AlexNet 也是首次使用 Dropout 技巧的演算法之一,為了防止過擬合。此後 Dropout 成為了提高各種深度學習模型泛化能力的重要工具。

AlexNet 使用的結構,包括一系列卷積層,ReLU 非線性啟用函式和最大池化(Max-pooling)已成為公認標準模式,在許多計算機視覺模型結構中都有用到和進一步擴充套件。

與最新的模型相比,AlexNet 顯得異常簡單,得益於 PyTorch 等強大的軟體庫,僅需幾行程式碼即可實現。值得注意的是,目前 AlexNet 的許多實現方法都與最早論文中闡述的有些許不同,目的是為了對卷積神經網路並行運算。

2013 年:利用深度強化學習玩 Atari 遊戲

基於在影象識別和 GPU 方面取得的突破,DeepMind 團隊成功利用強化學習(RL)訓練了一個神經網路,可以通過原始畫素輸入來玩 Atari 遊戲。而且在不知道遊戲規則的前提下,相同的神經網路模型還學會了玩 7 種不同的遊戲,證明了這種方法的泛化性。

強化學習與監督學習(例如影象分類)的不同之處在於,AI 代理(agent)必須學會在多個時間點上最大化整體獎勵,比如贏得一場比賽,而不僅僅是預測分類標籤。

由於 AI 代理直接與環境互動且每個動作都會影響環境,因此訓練資料不是獨立同分布的(i.i.d.),這使得許多機器學習模型的訓練非常不穩定。這可以使用經驗回放等技術解決。

儘管沒有明顯的演算法創新,但 DeepMind 的研究巧妙地結合了當時的現有技術,在 GPU 上訓練的卷積神經網路,經驗回放以及一些資料處理技巧,從而實現了超出大部分人預期的驚豔結果。這使人們有信心繼續探索深度強化學習技術,以解決更復雜的任務,由此演變出 AlphaGo 圍棋 AI,Dota 2 AI 和星際爭霸 2 AI 等等。

此後,Atari 系列遊戲成為了強化學習研究的基準。最初的演算法只能在 7 個遊戲中超越人類,但未來幾年中,更先進的模型開始在越來越多的遊戲中擊敗人類。其中一款名為 “蒙特祖瑪的復仇” 的遊戲因需要長期規劃而聞名,也被認為是最難解決的遊戲之一,於 2018 年被攻克。

今年 4 月,AI 終於在 Atari 的全部 57 款遊戲中超越了人類。

2014 年:採用注意力機制的編碼器 - 解碼器網路

在自然語言處理領域,儘管有長短期記憶網路(LSTM)和編碼器 - 解碼器網路(Encoder-Decoder),能夠處理語言建模和翻譯任務,但其實直到 2014 年注意力機制(Attention Mechanism)的問世,才獲得了跨越式的進步。

在處理語言時,每個標記(token)—— 可能是字元,單詞或介於兩者之間的某種東西 —— 都會被輸入一個迴圈神經網路(RNN)之中。例如 LSTM,該網路可以記住之前一定時間之內的輸入值。

換句話說,句子與時間序列非常相似,每個標記都是一個時間步長。這些迴圈神經網路模型通常很難處理長時間的相關性,因為會 “忘記” 較早的輸入值,而且使用梯度下降來優化這些模型同樣非常困難。

新的注意力機制有助於緩解這一問題。它通過引入 “快捷連線(shortcut connections)”,使神經網路可以自適應選擇 “回顧” 前面的輸入值(將輸入加到輸出上)。在生成特定輸出時,這些連線允許網路決定哪些輸入很重要。翻譯模型是一個經典例子,在生成翻譯後的輸出字 / 詞時,模型會將其對映到一個或多個特定的輸入字 / 詞。

2014 年:Adam 優化器

訓練神經網路需要使用優化器使損失函式(比如平均分類錯誤)最小化。優化器負責弄清楚如何調整網路引數,實現學習目標。

大多數優化器都基於隨機梯度下降(SGD)及其變種。許多優化器本身都包含可調引數,例如學習率(learning rate)。為特定問題找到正確的引數配置,不僅可以減少訓練時間,還可以找到更好的損失函式區域性最小值,得到更好的訓練結果。

大型研究實驗室經常執行昂貴的超引數搜尋,需要設計非常複雜的學習率變化計劃,以便從優化器中獲得最大收益。有時候,他們找到的最終結果超過了現有基準,但這是花費了大量資金對優化器進行優化的結果。類似的細節經常在論文中被忽略,導致沒有相同預算來優化其優化器的研究人員找不到最優解。

Adam 優化器使用了自適應矩估計方法,對隨機目標函式執行一階梯度優化並自動調整學習率。結果非常可靠,並且對超引數選擇不太敏感。

簡而言之,Adam 不需要像其他優化器一樣進行大量的調整。儘管調整得非常好的 SGD 優化器可以得到更好的結果,但是 Adam 讓研究更容易完成,因為如果無法得到預想中的結果,科研人員至少可以排除優化器調整不當這一原因。

2014/2015 年:生成式對抗網路(GAN)

生成式模型的目標是建立逼真的資料樣本,例如栩栩如生的假人臉圖片。因為這類模型必須對全部資料分佈進行建模(畫素很多),而不僅僅是分類圖片,所以它們通常很難訓練。生成式對抗網路(GAN)就是這樣一種模型。

GAN 的基本思想是訓練兩個神經網路:生成器和判別器。生成器的目標是生成樣本,矇蔽判別器,而判別器則是要區分真實影象和(生成器生成的)虛假影象。隨著訓練的進行,鑑別器的表現會越來越好,但生成器也會變得更好,生成的影象也更加逼真。

初代 GAN 只能產生模糊的低解析度影象,並且訓練起來非常不穩定。但是隨著人們不斷努力,誕生了諸如 DCGAN,Wasserstein GAN,CycleGAN,StyleGAN 等多種多樣的模型,現在已經可以生成高解析度的逼真影象和視訊。

2015 年:殘差網路(ResNet)

自 2012 年以來,研究人員在 AlexNet 的基礎上添磚加瓦,發明了效能更好的基於卷積神經網路的模型,例如 VGGNet 和 Inception 等等。ResNet 是其中最有代表性的一個,標誌著下一個迭代。

目前,ResNet 的變體通常用作各種任務的基準模型,也被用來構建更復雜的模型。

除了在 ILSVRC 2015 分類挑戰中獲得第一名之外,ResNet 的過人之處還在於它的模型深度:論文中提到的最深 ResNet 有 1000 層,並且仍然表現良好,儘管在基準任務上比其 101 和 152 層對應的網路稍差。由於梯度消失,訓練這種非常深的網路是一個極具挑戰性的優化問題,幾乎沒有研究人員認為訓練如此深的網路可以帶來良好的穩定結果。

ResNet 使用了 “身份快捷連線(identity shortcut connections)” 連線來幫助實現梯度流動。解釋這些連線的一種方法是,ResNet 只需要學習從一層到另一層的 “增量 delta”,這通常比學習完整的(傳遞)要容易得多。

2017 年:Transformer

引入注意力機制的 Seq2Seq 模型已經有很好的表現,但缺點在於需要順序計算,很難做到並行。這讓研究人員很難將它們擴大到非常長的序列,即使引入了注意力機制,該模型在構建複雜的長期相關關係時仍然相形見絀。大多數的 “工作” 似乎都在迴圈層中完成。

Transformer 的出現解決了這些問題,方法是完全消除迴圈,用多個前饋自我注意力層代替,然後並行處理序列中的所有單詞或符號。由於輸入和輸出之間的路徑較短,更容易通過梯度下降優化,進而實現快速訓練且易於擴充套件。此外,Transformer還會使用位置編碼技術,將輸入值的順序告訴神經網路。

Transformer的效果超出了所有人的預料。在接下來的幾年中,它成為了絕大多數自然語言處理任務和其他序列任務的標準架構,甚至還用到了計算機視覺領域中。

2018 年:BERT 和微調自然語言處理模型

預訓練是指訓練模型執行某些任務,然後將學到的引數作為初始引數,用於其他類似任務中。這符合人們的直覺:一個已經學會將影象分類為貓或狗的模型,應該已經掌握了有關影象和毛茸茸的動物的通用知識。所以微調該模型並對狐狸分類時,人們希望它比從零學習的模型做得更好。

類似地,學會預測句子中下一個單詞的模型應該已經學會了有關人類語言模式的通用知識。人們希望它在翻譯或情緒分析等相關任務中起點更高。

預訓練和微調已在計算機視覺領域作為標準使用許久,但將其運用在自然語言處理中更具挑戰性。大多數表現最好的結果仍來自完全監督模型。隨著Transformer的出現,研究人員終於可以更方便的開展預訓練,由此誕生了 ELMo,ULMFiT 和 OpenAI GPT 之類的模型。

BERT 是這種思路的最新成果,許多人認為它開啟了自然語言處理研究的新紀元。該模型在預訓練中會對句子中故意被刪掉的單詞進行預測,還會判斷兩個句子彼此相連的可效能,而不是單純地預訓練如何預測下一個單詞。

完成這些任務不需要標記資料,因此它可以在任何文字上訓練,這意味著取之不盡的訓練資料。該預訓練模型已經學習了一些語言方面的常規屬性,之後對其進行微調就能用來解決監督式任務,例如問題回答或預測情緒。

BERT 在各種各樣的任務中都表現出色,還有 HuggingFace 一類的公司,允許人們輕鬆獲取和微調用於各種自然語言處理任務的 BERT 類模型。時至今日,在 BERT 的基礎上出現了 XLNet,RoBERTa 和 ALBERT 等更加先進的模型。

2019/2020 年及未來:巨大的語言模型和自我監督式學習

縱觀深度學習歷史及其發展趨勢,人們不難發現,可以更好地並行運算,擁有更多資料和更多模型引數的演算法一次又一次地擊敗了所謂的 “更聰明的技術”。這種趨勢似乎一直持續至今,OpenAI 放出了擁有 1750 億個引數的巨大語言模型 GPT-3,儘管它只有簡單的訓練目標和標準網路結構,卻顯示出無可比擬的強大泛化能力。

同樣的趨勢還出現在自我監督學習方法上,比如 SimCLR,它們可以更好地利用未標記的資料。隨著模型變大和訓練速度變快,那些可以更有效地利用網路上大量未標記的資料,並將學習到的通用知識轉移到其他任務上的模型將變得越來越有價值。

文中提到的論文和程式碼實現清單

2012 年:用 AlexNet 和 Dropout 解決 ImageNet 影象分類

論文:

·ImageNet Classification with Deep Convolutional Neural Networks (2012)

·Improving neural networks by preventing co-adaptation of feature detectors (2012)

·One weird trick for parallelizing convolutional neural networks (2014)

程式碼實現:

·AlexNet in PyTorch

·AlexNet in TensorFlow

2013 年:利用深度強化學習玩 Atari 遊戲

論文:

·Playing Atari with Deep Reinforcement Learning (2013)

程式碼實現:

·DQN in PyTorch

·DQN in TensorFlow

2014 年:採用注意力機制的編碼器 - 解碼器網路

論文:

·Sequence to Sequence Learning with Neural Networks

·Neural Machine Translation by Jointly Learning to Align and Translate

程式碼實現:

·Seq2Seq with Attention in PyTorch

·Seq2Seq with Attention in TensorFlow

2014 年:Adam 優化器

論文:

·Adam: A Method for Stochastic Optimization

程式碼實現:

·Implementing Adam in Python

·PyTorch Adam implementation

·TensorFlow Adam implementation

2014/2015 年:生成式對抗網路(GAN)

論文:

·Generative Adversarial Networks

·Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

程式碼實現:

·DCGAN in PyTorch

·DCGAN in TensorFlow

2015 年:殘差網路(ResNet)

論文:

·Deep Residual Learning for Image Recognition

程式碼實現:

·ResNet in PyTorch

·ResNet in Tensorflow

2017 年:Transformer

論文:

·Attention is All You Need

程式碼實現:

·PyTorch: Sequence-to-Sequence Modeling with nn.Transformer and TorchText

·Tensorflow: Transformer model for language understanding

·HuggingFace Transformers Library

2018 年:BERT 和微調自然語言處理模型

論文:

·BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

程式碼實現:

·Fine-Tuning BERT with HuggingFace


Refrence:

[1]https://www.kdnuggets.com/2020/09/deep-learnings-most-important-ideas.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+kdnuggets-data-mining-analytics+%28KDnuggets%3A+Data+Mining+and+Analytics%29

來源:資料實戰派

讀者,你好!我們建立微信交流群,對人工智慧感興趣的朋友歡迎進群!

你可以加我的微信,邀請你進群!