您當前的位置:首頁 > 攝影

2012年至今,細數深度學習領域這些年取得的經典成果

作者:由 AI科技評論 發表于 攝影時間:2020-08-06

編譯 | 陳彩嫻

編輯 | 叢 末

2006年,Hinton 發表了一篇論文《A Fast Learning Algorithm for Deep Belief Nets》,提出了降維和逐層預訓練方法,該方法可成功運用於訓練多層神經網路,使深度網路的實用化成為可能。該論文也被視作深度學習領域的經典之作。

從原理來看,深度學習與神經網路緊密相關:神經網路由一層一層的神經元構成,層數越多,神經網路越深,而所謂“深度學習”就是模擬人類大腦,運用深層神經網路對輸入進行“思考”、“分析”並獲得目標輸出的過程。

那麼, 自2006年Hinton發表經典論文以來,深度學習領域又取得了哪些突破性成果呢?

Google Brain前員工Denny Britz 在本文中進行了回顧整理,按時間順序介紹了從2012年到2020年深度學習領域的數項關鍵性科研成就,包括運用AlexNet和Dropout處理ImageNet(2012年)、使用深度強化學習翫Atari遊戲(2013年)、應用注意力機制的編碼器-解碼器網路(2014年)、生成對抗網路(2014-2015年)、ResNet(2015年)、Transformer模型(2017年)、BERT與微調自然語言處理模型(2018年),以及2019-2020年及之後的BIG語言模型與自監督學習等。這些技術大部分應用於視覺、自然語言、語音與強化學習等領域。

這些研究均已經過時間的考驗,並得到廣泛認可。本文不僅列舉了2012年以來的部分出色成果,還涉及到大量有利於瞭解當今深度學習研究現狀的基礎技術與知識。深度學習基礎技術的概念、方法和程式碼等具有相似性,研究人員可以觸類旁通。比方說,一個終生研究計算機視覺(computer vision, CV)的學者很快也能適應自然語言處理(Natural Language Processing, NLP),在NLP方向獲得成就。如果你是深度學習領域的入門者,以下閱讀將幫助你瞭解現有先進技術的來歷與最初發明用途,方便你更好地開展自己的研究工作。

2012年:應用AlexNet和Dropout 方法處理ImageNet

相關論文:

ImageNet Classification with Deep Convolutional Neural Networks (2012),

https://

papers。nips。cc/paper/48

24-imagenet-classification-with-deep-convolutional-neural-networks

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

https://

arxiv。org/abs/1207。0580

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

https://

arxiv。org/abs/1404。5997

具體實現:

用PyTorch搭建AlexNet,

https://

pytorch。org/hub/pytorch

_vision_alexnet/

用TensorFlow搭建AlexNet,

https://

github。com/tensorflow/m

odels/blob/master/research/slim/nets/alexnet。py

2012年至今,細數深度學習領域這些年取得的經典成果

圖源:

https://

papers。nips。cc/paper/48

24-imagenet-classification-with-deep-convolutional-neural-networks

AlexNet演算法被認為是深度學習和人工智慧研究蓬勃發展的主要原因。它是一種以Yann LeCun提出的早期LeNet網路為基礎的深度卷積神經網路(Deep Convolutional Neural Networ)。AlexNet結合晶片GPU的功能和演算法優勢,大大超越了以前其他對ImageNet資料集中的影象進行分類的方法。它的出現再一次證明了神經網路的強大。此外,AlexNet是最早運用Dropout的演算法之一,之後也成為了提高各類深度學習模型泛化能力的一項關鍵技術。

AlexNet 所使用的架構,包含一系列卷積層、ReLU非線性(ReLU nonlinearity)和最大池化演算法(max-pooling),被廣泛視為後來CV架構建立和擴充套件的標準。如今,諸如PyTorch之類的軟體庫具有十分強大的功能,加上與目前最新的神經網路架構相比,AlexNet的構成十分簡單,僅需幾行程式碼即可透過 PyTorch 等軟體庫實現。有一點要注意的是:上述所介紹到的AlexNet的實現使用了論文《One weird trick for parallelizing convolutional neural networks》裡所提到的網路變數。

2013年:使用深度強化學習翫轉 Atari遊戲

相關論文:

Playing Atari with Deep Reinforcement Learning (2013),

https://

arxiv。org/abs/1312。5602

具體實現:

用PyTorch搭建深度強化學習模型(DQN),

https://

pytorch。org/tutorials/i

ntermediate/reinforcement_q_learning。html

用TensorFlow搭建DQN,

https://www。

tensorflow。org/agents/t

utorials/1_dqn_tutorial

2012年至今,細數深度學習領域這些年取得的經典成果

圖源:

https://

deepmind。com/research/p

ublications/human-level-control-through-deep-reinforcement-learning

DeepMind團隊,基於近年來在影象識別和GPU方面取得的一系列突破,成功訓練了一個能透過原始畫素輸入來玩Atari遊戲的網路。不僅如此,同一個神經網路架構還在沒有被告知詳細遊戲規則的前提下,學會了玩7款不同的遊戲,從而證明了該方法的普適性。

強化學習與監督學習(比如影象分類)的不同之處在於:在強化學習裡,智慧體必須在多個時間步(time step)內學會如何獲得最多獎勵。具體來說,就是它必須贏得比賽,而不是僅僅預測某個標籤。由於智慧體與環境直接互動,且每個動作都會影響下一個動作,所以訓練資料不是獨立且分佈均勻的,這就使得許多機器學習模型的訓練十分不穩定。這個現象可以使用經驗回放(experience replay)等技術來解決。

儘管這項研究沒有實現明顯的演算法創新,但卻巧妙地結合了現有技術、基於GPU訓練的卷積神經網路、經驗回放以及一些額外的資料處理技術,並獲得了大多數人始料未及的出色結果。這也提升了研究人員擴充套件深度強化學習技術的信心,有望借鑑這個成果來解決包括圍棋、Dota 2、Starcraft 2等等更復雜的任務。

Atari遊戲在之後也成為了強化學習研究的標準基準。早期的深度強化學習方法僅超過人類基本水平、學會7款遊戲,但在後來幾年時間裡,基於這些思路所取得的進步,開始在更多遊戲裡打敗人類。其中有一款遊戲叫《蒙特祖瑪的復仇》,以需要長期規劃而聞名,被認為是難度最大的遊戲之一。直到最近,AI 已經在57款遊戲中超越了人類玩家的基準線。

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

相關論文:

Sequence to Sequence Learning with Neural Networks,

https://

arxiv。org/abs/1409。3215

Neural Machine Translation by Jointly Learning to Align and Translate,

https://

arxiv。org/abs/1409。0473

具體實現:

用Pytorch搭建採用注意力的Seq2Seq,

https://

pytorch。org/tutorials/i

ntermediate/seq2seq_translation_tutorial。html#

用TensorFlow搭建採用注意力的Seq2Seq,

https://www。

tensorflow。org/addons/t

utorials/networks_seq2seq_nmt

2012年至今,細數深度學習領域這些年取得的經典成果

圖源:

https://

ai。googleblog。com/2017/

04/introducing-tf-seq2seq-open-source。html

深度學習最卓越的成就大多體現在與視覺相關的任務中,並且由卷積神經網路驅動。雖然NLP研究已使用LSTM網路和編碼器-解碼器架構在語言建模和翻譯方面取得了一定成功,但該領域也是直到注意力機制的出現才開始取得令人矚目的成就。

在處理語言時,每個 token 都會被輸入迴圈網路(如LSTM)中,並對先前處理過的輸入保持了記憶。token可能是字元,可能是單詞,也可能是介於字元和單詞之間的某物。換句話說,每個token都是一個時間步,一個句子就像一個時間序列。這些迴圈模型通常不擅長處理間隔長時間的依賴關係。在處理序列時,他們很容易“忘記”較早之前的輸入,因為它們的梯度需要透過大量時間步進行傳播。透過梯度下降方法最佳化這些模型非常困難。

新的注意力機制則有助於緩衝這一阻礙。它引入快捷連線(shortcut connections),給網路提供了一個能夠在早期的時間步上適應性地“回頭看”的選擇。這些連線可以幫助網路決定生成特定輸出時哪些輸入是重要的。一個典型的例子就是機器翻譯:在生成輸出詞時,它通常會對映一個甚至多個特定的輸入詞。

2014年:Adam最佳化器

相關論文:

Adam: A Method for Stochastic Optimization,

https://

arxiv。org/abs/1412。6980

具體實現:

用PyTorch搭建實現Adam最佳化器,

https://

d2l。ai/chapter_optimiza

tion/adam。html

PyTorch Adam實現,

https://

pytorch。org/docs/master

/_modules/torch/optim/adam。html

TensorFlow Adam實現,

https://

github。com/tensorflow/t

ensorflow/blob/v2。2。0/tensorflow/python/keras/optimizer_v2/adam。py#L32-L281

2012年至今,細數深度學習領域這些年取得的經典成果

圖源:

http://

arxiv。org/abs/1910。1175

8

神經網路透過運用最佳化器將損失函式(如平均分類誤差)最小化進行訓練。最佳化器負責調整網路引數來使網路學習目標。大多數最佳化器都是基於隨機梯度下降(Stochastic Gradient Descent, SGD)的變數。但是,也有很多此類最佳化器包含了可調節的引數,比如最佳化器本身的學習率。針對特定問題尋找正確設定不僅能減少訓練時間,還能透過找到區域性最小損失函式來獲取更好的結果。

大型研究實驗室往往會執行成本高昂的、使用了複雜學習速率排程器(learning rate schedules)的超引數檢索來獲取簡單但對超引數敏感的最佳化器(比如SGD)中最好的那一個。有時候,他們的效果雖然超越了現有基準,但是往往是花費了大筆資金調節最佳化器的結果。科研論文裡往往不會提到研究成本這些細節。也就是說,研究人員如果沒有足夠的資金預算來最佳化他們的最佳化器,就只能深陷“效果不佳”的泥潭。

Adam最佳化器主張使用梯度的一階矩和二階矩來自動調整學習率。研究也表明,運用Adam最佳化器所獲取的結果非常“魯棒”,且對超引數的調整不敏感。換句話說,Adam在大部分情況下無需太多調整就可以正常執行。就研究結果而言,目前一個被調整得很好的SGD表現更好,但Adam能幫助研究人員以較少成本進行研究。這是因為,如果實現的效果不好,研究者起碼知道並不是由於某個調整得不佳的最佳化器所造成的。

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

相關論文:

Generative Adversarial Networks,

https://

arxiv。org/abs/1406。2661

Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks,

https://

arxiv。org/abs/1511。0643

4

具體實現:

用PyTorch搭建DCGAN,

https://

pytorch。org/tutorials/b

eginner/dcgan_faces_tutorial。html

用TensorFlow搭建DCGAN,

https://www。

tensorflow。org/tutorial

s/generative/dcgan

2012年至今,細數深度學習領域這些年取得的經典成果

圖源:

https://

developers。google。com/m

achine-learning/gan/gan_structure

生成模型(如變分自編器)必須對整個資料分佈進行建模,影象資料的畫素極大,不像判別模型(discriminative model)一樣僅是區分貓貓與狗狗。生成模型的目標是建立看起來逼真的資料樣本,比如你可能在某處已經見過的人臉影象。生成對抗網路(GAN)就屬於這類生成模型。

GAN的基本內容是對生成器(generator)和判別器(discriminator)進行一前一後的訓練。判別器經過訓練來分辨真實影象和生成影象,而生成器的目標就是生成一些能夠騙過判別器的樣本。隨著訓練的深入,判別器識別偽造物體的能力會提高,但生成器也會越來越狡猾,並漸漸生成看起來更逼真的樣本。第一代GAN生成的影象解析度低,模糊不清,並且訓練起來十分不穩定。但隨著時間的推移,研究者發明了許多改良版本,包括深度卷積生成對抗網路(DCGAN)、CycleGAN、StyleGAN(v2)等等。這些改良版本基於第一代 GAN 的思路,成功生成高解析度的、擬真的影象和影片。

2015年:殘差網路(ResNet)

相關論文:

Deep Residual Learning for Image Recognition,

https://

arxiv。org/abs/1512。0338

5

具體實現:

用PyTorch搭建ResNet,

https://

github。com/pytorch/visi

on/blob/master/torchvision/models/resnet。py

用TensorFlow搭建ResNet,

https://

github。com/tensorflow/t

ensorflow/blob/v2。2。0/tensorflow/python/keras/applications/resnet。py

2012年至今,細數深度學習領域這些年取得的經典成果

研究人員基於AlexNet 的突破進行了一段時間的深入研究,提出了一系列基於卷積神經網路的效能更佳的架構,如VGGNet、Inception等等。而ResNet 就是緊接這一波迅速發展的新架構的下一代神經網路架構。迄今為止,ResNet的變體被視為各類任務的基準模型架構和更復雜架構的基本構建要素,並得到廣泛應用。

ResNet的出眾,不僅是因為它在ILSVRC 2015的分類挑戰賽中取得了第一名的好成績,還因為與其他網路架構相比,它具有明顯的深度優勢。論文《Deep Residual Learning for Image Recognition》裡介紹到該網路最深的層數可以達到1000層,而且,雖然該網路在基準任務上的表現略遜於101層和152層的網路,但總體表現依然十分優秀。這類深度網路的訓練是一個非常有挑戰性的最佳化問題,這是因為在訓練深層網路的過程中,梯度會隨著層數的增加而遞減直至消失,這使得網路最佳化異常艱難。梯度消失的問題在序列模型(sequence model)中也有出現。極少研究人員相信訓練層數如此深的網路能達到出色而穩定的表現結果。

ResNet應用恆等快捷連線(identity shortcut connections)來促進梯度的流動。ResNet只需要逐層學習“變化量(Δ)”,難度較低,往往比學習整個變化量容易。這種恆等連線是“高速網路”(Highway Network)裡所提到的連線特例,反過來又受到長短期記憶網路(LSTM)的門控機制(gating mechanism)的啟發。

2017年:Transformer模型

相關論文:

Attention is All You Need,

https://

arxiv。org/abs/1706。0376

2

具體實現:

PyTorch: 應用nn。Transformer和TorchText的序列到序列模型,

https://

pytorch。org/tutorials/b

eginner/transformer_tutorial。html

Tensorflow: 用於語言理解的Transformer模型,

https://www。

tensorflow。org/tutorial

s/text/transformer

HuggingFace的Transformers開發庫,

https://

github。com/huggingface/

transformers

2012年至今,細數深度學習領域這些年取得的經典成果

圖源:

https://

arxiv。org/abs/1706。0376

2

上文提到,具有注意力的序列到序列模表現地非常好,但由於該模型的迴圈特性需要用到序列演算法,所以還存在一些缺點。它們很難並行處理,因為每次只運用一個步驟處理輸入。每個時間步都受到上一個時間步的影響。這也使得時間步很難擴充套件為長序列。即使具備了注意力機制,模型仍然在對複雜的長程依賴關係建模上面臨挑戰。大多數“工作”似乎都是在迴圈層中完成的。

Transformer模型有效解決了上述問題。模型應用多個前饋自注意層(feed-forward self-attention layers)取代迴圈層(recurrence),從而完全消除迴圈過程,從而能夠平行處理所有輸入並且生成輸入和輸出間相對較短的路徑(這就意味著梯度下降更易於最佳化)。在這種情況下,模型能夠進行快速訓練,易於擴充套件並處理更多資料。此外,Transformer模型使用了位置編碼來向網路傳遞輸入順序(這是迴圈模型無法做到的)。一開始學習Transformer模型也許有些摸不著頭腦,但如果想了解更多Transformer模型的應用原理,可以參考以下連結裡的講解:

http://

jalammar。github。io/illu

strated-transformer

Transformer模型的表現超出了所有人的期待。在接下來的幾年裡,Transfomer會成為大多數序列任務(如NLP)甚至是計算機視覺的架構標準。

2018年:BERT和微調NLP模型

相關論文:

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

https://

arxiv。org/abs/1810。0480

5

具體實現:

具備Hugging Face的微調BERT,

https://

huggingface。co/transfor

mers/training。html

2012年至今,細數深度學習領域這些年取得的經典成果

預訓練指的是事先訓練一個模型來執行特定任務,然後將訓練過程中學到的引數作為初始值以繼續學習其他相關任務。直觀來說,就是如果一個模型已經學會進行影象分類、區分貓貓和狗狗,也應當大概瞭解影象和毛茸動物的一般特徵。當我們對這個能夠區分貓貓狗狗的模型進行微調,來對狐狸進行分類時,我們希望這個模型能夠比必須從頭開始訓練的模型表現得更好。同樣地,一個已經學會預測句子裡的下一個單詞的模型,也應該對人類語言模式有一定的瞭解。我們可能期望這個模型可以作為翻譯或情感分析等相關任務的好的初始化模型。

預訓練和微調在計算機視覺和自然語言處理中都已有了成功的應用。雖然預訓練和微調在計算機視覺領域中作為標準已有很長一段時間了,但要在 NLP 領域得到很好的應用,似乎還困難重重。NLP 中取得的 SOAT 結果,依舊還是由於使用了完全監督模型。

隨著Transformer的出現,研究者們終於可以在 NLP 任務中很好地應用預訓練模型,並隨之提出了ELMo、ULMFiT和OpenAI‘s GPT等方法。

BERT 便是預訓練模型在 NLP 領域取得的最新進展,許多人認為它開啟了NLP研究的新時代。BERT並不像其他大多數模型一樣進行預測下一個字的預訓練。它所接受的預訓練是預測整個句子被故意刪除/遮蔽的詞以及兩個句子之間是否有銜接關係。請注意:這些任務不需要用到標註的資料。它可以在任何文字上進行訓練,而且適用於篇幅長的文字。這個預訓練模型可能已學會語言的一些普遍特徵,之後可以微調來執行有監督的任務(比如回答問題和預測情緒)。

BERT在許多不同型別的任務中均有出色表現。之後BERT成為了XLNet、RoBERTa和ALBERT等先進技術的奠基之作。

2019/2020年及之後:BIG語言模型,自監督學習?

《慘痛的教訓》一文非常清晰地描述了深度學習發展史的趨勢。演算法在並行化計算(更多資料)和更多模型引數方面所取得了進步,一次又一次地超越了所謂“更聰明的技術”。這個趨勢一直持續到2020年GPT-3的出現。GPT-3是一個由OpenAI建立的擁有1750億引數的巨大語言模型。儘管GPT-3的訓練目標和標準架構十分簡單,但卻展示了意料之外的良好泛化能力。

文章連結:

http://www。

incompleteideas。net/Inc

Ideas/BitterLesson。html

同樣的發展趨勢還包括對比性自監督學習(contrastive self-supervised learning,如SimCLR)等能更好利用未標記資料的方法。隨著模型變得越來越大,訓練速度變得越來越快,這些能夠高效利用網頁上的大量未標記資料以及能夠學習可遷移到其他任務上的通用知識的技術,將變得越來越具有價值,越來越普遍使用。

作者注:

本文不針對所提及的技術進行深入解析與程式碼示例。我們主要介紹技術的歷史背景、相關論文連結和具體實現。建議有興趣的讀者能在不借助現有程式碼和高階開發庫的前提下將這些論文研究成果重新演示一遍,相信一定會有收穫。

本文聚焦於深度學習的主流領域,包括視覺、自然語言、語音和強化學習/遊戲等。

本文僅討論執行效果出色的官方或半官方開放原始碼實現。有些研究(比如Deep Mind的AlphaGo和OpenAI的Dota 2 AI)因為工程巨大、不容易被複制,所以在此沒有被重點介紹。

同一個時間段往往釋出了許多相似的技術方法。但由於本文的主要目標是幫助初學者瞭解涵蓋多個領域的不同觀點,所以在每一類方法裡選取了一種技術作為重點。比方說,GAN模型有上百種,但如果你想學習GAN的整體概念,只需要學習任意一種GAN即可。

via

https://

dennybritz。com/blog/dee

p-learning-most-important-ideas/

2012年至今,細數深度學習領域這些年取得的經典成果

標簽: https  模型  org  學習  訓練