深度學習的第一個十年

Rene Wang
翻滾吧!駭客女孩!
23 min readFeb 10, 2020

Update 2022/02/11 增加 2012 – 2013
Update 2022/02/12 增加 2014 – 2015
Update 2022/02/13 增加 2016 –2017
Update 2022/02/14 增加 2018 –2019

由 Leo Gao 所撰寫的 “The Decade of Deep Learning” 文章,回顧了 2010–2019 年,每一年關於深度學習的的重要論文。讀者可以直接前往參考資料的原文網址,閱讀英文全文或簡中翻譯。

現在,就讓我們看看 2010–2011 的最有影響力論文是:

2010–2011

2010 被選中的代表性文章是 Understanding the difficulty of training deep feedforward neural networks (7446 citations),由 Yoshua Bengio 的實驗室發表。

在這篇論文中主要討論 parameter initialization 的重要性,且提出了 Xavier initialization。相對於過去使用任意值作為 random normal distribution 的標準差,再依此分佈做參數初始,Xavier initialization 考慮深度類神經網路的輸入和輸出單元個數來計算 random normal distribution 的標準差。 這篇文章亦是最早的深度學習研究的先驅,它提供了許多關於 activation function types 和深度結構之間的關係,甚至 activation function types 和參數初始的關係。

最後,Xavier initialization 針對的是 saturate activation functions,如 sigmoid 或 tanh (事實上,該論文認為 sigmoid 不大適合 deep nets,所以提出了 SoftSign 作為 activation function)。而在五年後由中國的何愷明博士提出的 Kaiming initialization,是針對 ReLU activation 提出的 initialization 方法,大致上是對 Xavier initialization 取了平方根。除了 Kaiming initialization 這篇文章提出新的 activation function,Parametric Rectified Linear Unit (PReLU)。關於 PReLU 則會在 2011 年中討論。

2011 被選中的文張是 Deep Sparse Rectifier Neural Networks (4071 citations),仍舊由 Yoshua Bengio 的實驗室發表。

在 2010,深度類神經網路的專家們了解到使用容易 saturate 的 activation functions 會造成梯度消失的問題。所以在這篇文章中,作者提出了半 saturate 非線性的 activation function,稱為 ReLU 。ReLU 並不是全新的想法,早在這篇論文提出前,就有學者指出它的生物相關背景,也有學者偏好 ReLU 的正號線性特質,而用於物件辨認上。

ReLU 被提出後,接下來的幾年,數個相關的改進版本紛紛被提出,改進的重點都在 ReLU 的負號飽和與在零不可微分點。如,Leaky ReLU 允許小於零的數值以較緩的斜率線性啟動,但仍舊維持不可微分點。另外還有在 2010 年中提到 PReLU 即是參數化的 Leaky ReLU 。

雖然 Leaky ReLU 和 PReLU 都解決了 ReLU 負號飽和的問題,但因為線性的本質對雜訊沒有抵抗力。為此,而出現了使用 exponential function 來代替不飽和的線性和 ReLU 的 hard thresholding 改為可微的 soft thresholding。然而 ELUs 需要配合 Batch normalization 來運作,SELUs (Scaled Exponential Linear Units) 則是不需要 Batch normalization 的 ELUs 版本。

最後介紹的是合併 dropout 的 ReLU,被稱為 Gaussian Error Linear Units (GELUs)。GELUs 使 dropout 的結果依賴 activation 的輸入,而實踐上 GELUs 則使用 mask 的方法搭配 Normal assumption 來計算輸入的 cumulative distribution function (CDF) 機率值。GELUs 在大型的語言模型如 GPT/GPT2 和 BERT 有使用。

2012–2013

如果說 2010–2011 研究者們還在探索深度學習的可能性,那麼 2012–2013 年絕對是回報努力的一年。

2012 ImageNet Classification with Deep Convolutional Neural Networks (52025 citations) , AlexNet

毫無疑問,2012 年是深度學習在電腦視覺的應用上最豐收的一年。原因在於由 Geoffrey Hinton 的實驗室發表的深度類神經網路 AlexNet 在 ImageNet 大型影像資料庫比賽中嶄露頭角。AlexNet 是一個擁有多層的 convolution layers 與 fully-connected layers 構成的深層網路,在 activation function 上不再採用舊時淺層類神經網路常用的 sigmoid 或 tanh,而是使用 ReLU 做 activation function (多謝前兩年的研究)。AlexNet 除了在架構上屬於深度架構外,更在計算上使用 GPU 處理大量平行運算。在 AlexNet 之後有許多 convolution layer-based 的大型深度架構也紛紛提出,如 VGGNet 和 google 的 Inception。

2013 這一年則是搭上深度學習便車的自然語言和強化學習收穫的一年,作者認為具有影響力的論文有:

Distributed Representations of Words and Phrases and their Compositionality (16923 citations): 這篇論文說的就是 Google 所發展的 Word2vec,一個深度結構的神經語言模型,用來訓練可作為字彙的字義表現,也就是一個連續數值的向量。一個能夠查閱字彙所代表的向量為何的查閱矩陣被稱為 embedding,因為該項量可在原來的字彙空間中嵌入(embed)一個維度較低的子空間。

為了能達成這個目的, Word2vec 採取預測鄰近字彙的監督式學習方法來訓練模型。經過此法習得的向量,能有效捕捉字詞間字義的關係,因此提供了一個量化字彙間關係的方法。與 word2vec 相似概念但藉由最佳化字詞間共同出現機率而得的 GloVe,並非是一個類神經語言模型,但它與 word2vec 在往後的兩三年,都被用來當作 pre-trained embedding,也都被證實縮短神經語言模型的訓練時間以及較高的正確率。

第二篇文章為 Playing Atari with Deep Reinforcement Learning (3251 citations) 由 DeepMind 提出。當Alpha GO 或許只是一個正在醞釀的主意時,Atari 遊戲 agent 先用上了 Deep Reinforcement Learning,中文稱深度強化學習。在這裡指的深度強化學習指的是使用 Deep Q-Learning(DQN),主要是併入convolution network 來擷取遊戲影像的特徵並評估相對應的 Q-value。

在強化學習中,agent 的獎賞是在遊戲的歷程中依靠強化學習產生,與傳統監督式學習需要事先準備標注不同。而 Q-value 是由 Q-function 接受一組 agent 所在的狀態和該狀態欲採取的行為作為輸入產生。在獲得 Q-value 後,我們就可以憑著最大化 Q-value 來找到最大獎賞的行為決策 policy。深度強化學習就是利用類神經網路可構成任何連續函示的特點,用來學習 Q-function 和產生 Q-value。

2014–2015

2014 對深度學習來說是個豐收的一年,從作者提出的三篇影響力論文即可略知一二:

2014

第一篇是 Generative Adversarial Networks (13917 citations):由 Yoshua Bengio 的實驗室提出。這篇文章是第一篇利用賽局理論來產生與來源影像分佈相似的影像。這在影像的領域中是一個相當艱鉅的挑戰,因為影像通常需要相當高維的特徵空間來捕捉細微的不同。Generative Adversarial Networks (GAN) 目前已經演變成好幾個不同的版本,而已取代 GAN 原先版本成為標準的是 Wasserstein-GAN (WGAN)。

WGAN 不使用一般 entropy-based 的做法(Jensen-Shannon distance)但採取 Wasserstein metric 來量度兩個群落的分佈距離。隨後在同一年的 WGAN 改進版本,使用新的 weights clipping 的方式來穩定學習。除了 WGAN,另一個突出的 GAN 框架則是 2018 年由 Nvidia 提出的 StyleGAN。和 WGAN 不同的是 StyleGAN 仍舊採用原來的損失函數或距離量度,但改善生成者的架構。

在此篇作者提出的生成者架構,併入了風格轉換(style transfer)的風格定義到他們的生成者架構。在風格轉換中使用 convolution 輸出的 volume depth 或又被稱為 channel 來計算 Style matrix,也就是計算風格間的關聯性。不同於風格轉換中,使用影像或 convolution layer 的輸出來計算 style,在 StyleGAN 的生成者架構中,首先會把 latent vector 透過一個擁有 8 個 fully-connected layers 的 encoder,來產生 style vectors,最後再將 style vectors 透過類似 instance normalization 的方法正規後,注入到傳統 GAN 的 deconvolution network 做生成。 最後,StyleGAN 也採取漸進式的方式逐步從生成低像素影像到產生高解析影像,以達到幾可亂真的地步。更多有關於風格轉換的介紹,可看此篇,而關於 GAN,蓻可看這裡

第二篇文章則是來自於機械翻譯。Neural Machine Translation by Jointly Learning to Align and Translate (9882 citations):由 Yoshua Bengio 的實驗室發表。這篇文章是 sequence-to-sequence 再加上 attention 的深度學習架構應用在機械翻譯的文章。 在文章中仍是使用 RNN 的方式來建構 sequence-to-sequence,這個 sequence-to-sequence 雖然以 encoder 和 decoder 來稱呼來源語言編碼器和目標語言解碼器,但它其實是一個 transducer,意思就是使用一個 context vector 來連結 encoder 和 decoder 的介面。

至於 attention 的部分則是利用 Feed forward network 再加上一個 softmax 輸出來實現每一個 decoder state 要給每一個 encoder state positions 多少 attention(global attention)。除了在此篇論文中提出使用 feed network 建立的 attention 架構,通常又稱 Bahdanau Attention 或 additive attention,另外一個也是架構在 sequence-to-sequence 的 Luong Attention 或又稱 multiplicative attention 則是與往後非架構在 sequence-to-sequence 的 attention mechanism, Transformer 相似。 Luong Attention 由 Christopher Manning 的實驗室發表,名為 Effective Approaches to Attention-based Neural Machine Translation (3088 citations) 的論文。這篇論文,作者給漏掉了,在此提出。

因為 attention 的使用,而視覺化來源語言和目標語言翻譯對齊的結果。同樣的電腦視覺的學者們也改造 sequence-to-sequence 的 attention 機制以應用到影像生成中,成為 self-attention GAN (SAGAN)。SACAN 也是先產生低解析度影像,再利用 attention layer 使 discriminator 注意在細節的地方,使 generator 生成更細緻的影像。

Adam: A Method for Stochastic Optimization (34082 citations): 一個好的深度學習絕對不能只有深度架構,事實上因為類神經網路一直使用梯度下降最佳法來學習,為了能不使只有局部訊息的梯度下降法困在深度結構的局部最小值中,最佳化的專家們陸續發展了好幾個不同的梯度下降演算法,其中一個是 Adam。Adam 結合可對每一個參數做動態調整的技術和使用動量。兩者都是使用指數衰退權重移動平均來計算,並作偏差校正。雖然 Adam 推出後,立刻成為許多深度學習使用者最喜愛的演算法,然而仍舊有不少的反對的實驗結果發表。在這些實驗結果中都發現在某些任務中 SGD + momentum 的方法有時會比 Adam 更早收斂,也就是 Adam 仍有 generalize 廣度不夠的問題。

到了 2015 年,除了深度學習的應用外,關於如何學習深度架構仍在進行著。其中包括了由中國何愷明博士所提出的 ResNet 和有許多爭議的 Batch Normalizaiton

2015

Deep Residual Learning for Image Recognition (34635 citations) 這篇論文提出了錢所述的 ResNet。有了 AlexNet 的成功後,電腦視覺的專家們似乎對由 ReLU 構成的深度網路感到不滿意。他們希望能找到一個方法,能使更為加深類神經網路的深度。而為了解決這個層級的梯度消失問題(是的,它並沒有因為 ReLU 的廣泛使用而消失)而發展了 ResNet。簡單的來說就是利用一個 Residual Block 來確保深度學習過程中,即使深度網路的表現不如預期,但也能與直接拷貝輸入一樣。而實踐的方法則是仰賴一個捷徑連結。這個捷徑連結會跳過一層線性轉換和非線性啟動輸出,直接成為上兩層中 activation function 的輸入,因為這個捷徑連結,對來源層的輸出,提供了一個等同於 identity transform 或作直接拷貝的連結到非相鄰的目標層,減少了一層的轉換,所以又被稱為 skip connection。

目前 Residual block 已成了 convolution network 的標準配備。在 2018 年,更有人提出了 Residual block 的連續版本,也就是應用常微分方程(Ordinary Differential Equation, ODE)來訓練此類網路,而非反向傳播。這類的類神經網路被稱為類神經常微分方程。

Accelerating Deep Network Training by Reducing Internal Covariate Shift (14384 citations) 這篇由 google 所發表的關於加速學習的小技巧,被稱為 Batch Normalization,主要是在每一繩的輸入前,先將資料做標準化而得到平均為零,標準差唯一的圓形分佈。大家都知道在餵給類神經網路資料前需做標準化的好處(我們需要圓形的損失曲面!),然而卻很少人在類神經網路的架構中進行標準化。所以,當 Batch Normalization 這麼簡易的技巧被發表時,學者們都想知道 batch normalization 使學習加速的秘訣為何。但,很不幸的,這仍是個未解之謎。而可能原因從保持輸入的 internal covariate shift(顯然地,ReLU 把輸入的資料漸漸地往右移了),而到提供一個較為平滑的損失曲面。但,不管背後的理由為何,能夠作用的好技巧,就繼續保持吧!

在 Batch Normalization 以後,陸續也有不同的 normalization 方法被實踐,包括了:應用到 RNN 的 layer normalization,用在 StyleGAN 的 instance normalization 和用於影像分割的 Group normalization。

2016–2017

2016 – 2017 年則是強化學習(Reinforcement learning)開花落地的一年,現在就來看看有哪些具有影響力的論文被提及:

2016

Mastering the game of Go with deep neural networks and tree search (6310 citations):這篇論文由 DeepMind 發表,也就是打敗人類圍棋專家的 AlphaGo 的原始論文。和 Atari 的文章不相同的是,在這篇文章中。AlphaGo 使用了 Monte Carlo Tree Search(MCTS)方法,該方法模擬在當前步驟後的棋局演化,並以統計的方法來決定該下哪一步才有最大的勝算。在圍棋 GO 或其他的電腦 board game, MCTS 已經是很常用的方法。另外一個不同處則是 AlphaGo 使用了 兩個類神經網路來對 Monte Carlo Search Tree 做修剪。這兩個網絡分別是:policy network 和 value network。

Policy network 主要是用來選取 MCTS 上的 action (哪一個棋步),或利用人類過往比賽的棋局資料庫來做監督學習,預測人類專家對手的棋步。而 value network,使用 regression 任務來預測棋局結果。兩個網絡都可以修剪 MCTS 的枝葉,而使搜索的空間變小。

在發表了 AlphaGo 之後,DeepMind 又發展了 self-play 的版本,稱為 AlphaGo Zero 。在這個版本中,AlphaGo Zero 可以在沒有人類知識下靠著與自己對戰而自我學習。這篇論文的結果是讓人振奮的,因為 AlphaGo Zero 在幾天後便可學到如人類專家的能力,在一個月後,甚至打敗 AlphaGo 自己,成為圍棋界的冠軍。

2017

另外一個強化學習的勝利,則是在類神經網路的架構搜索上。這篇由 Google 發表的 Neural Architecture Search with Reinforcement Learning (1186 citations)。 Neural Architecture Search 又簡稱 NAS,的目的是希望能自動尋找最佳化任務表現的類神經網路架構。在這個論文所提出的是利用一個 RNN 來產生架構所需的參數字串,如 stride width 用在產生 Convolution Network 的 filter 等。每一個 RNN 字串都能建構一個相對應的網路,又稱之為 child network。這個 child network 會透過訓練資料進行學習和使用驗證集評估此模型表現,因而產生強化學習中所用的獎勵。在這個 NAS 架構中,有能力去組成更複雜的網路架構,如加入 Residual block。

在 2014 年提出了 sequence-to-sequence 的 Attention 後,Google 在 2018 年推出 “Attention Is All You Need (5059 citations)” 。這篇論文說明了 Attention 機制無須要架構在 RNN 上。在這個以 Transformer 名字著名的 encoder-decoder 架構,包含了多層具有 Residual block 的 Feedforward network。而 Attention 機制,以 Multi-head Attention layer 來實現,也被包含在 encoder 和 decoder 架構的最底層。

Multi-head Attention layer 可以看做有數個平行讀寫頭(Multi-head)同時進行 scaled-dot product attention 的計算後再合併送入 Feedforward network.Scaled-dot product attention 是之前所提到的 Luong Attention 的延伸,每一個讀寫頭有名為 Query, Value 和 Key 的 三種輸入。

由 Query 和 Key 計算出的 scaled dot-product 結果是尚未經過 softmax 運算給予每一個 value 的 scaled attention。為了能保證所有 Value 的 attention 值相加為一,需對所有 value 的 attention 用 softmax 來輸出最後 attention 值。因為 Transformer 使用的是 self-attention,所以 Key, Query 和 Value 的輸入都是相同的。最後,輸入的格式則是透過 sine 和 cosine 的三角函數構成的 position encoding。Position encoding 的輸出為週期性的連續浮點數,並非常見的 position-index 連續整數。

Transformer 的架構因為不再使用 RNN,於是節省了記憶體空間,因為容易平行化,所以效能較高。然而在面對較長的文字時,使用 attention 的 Transformer,需要 N x N 的記憶體量來貯存 attention matrix,這裡的 N 是輸入長度。所以在 2020 的一月,Google 又提出了更有效率的 Transformer,被稱為 Reformer,改以 LSH 的方式來儲存。

2018–2019

2018

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (3025 citations) 這篇由 Google 發表,建構在 Transformer 的語言模型,無疑地替自然語言領域開啟了ImageNet 或使用 pre-trained 模型的時代。

一個好的 pre-train 語言模型需要能夠產生泛化能力好的 word embedding,能夠提供下游不同任務的一個好的 fine-tune 起點。而 BERT 是一個不依賴 RNN 的 bi-directional 語言模型,和 word2vec 一樣,產生高品質的 word embedding。但和 word2vec 不同的是 BERT 在訓練時就採用 multi-tasking 的方法,一次學習多個任務,每個任務都根據不同的應用情況而有不同的標注資料。

當時同樣企圖的語言模型包括了 ELMo 和 OpenAI 的 GPT。ELMo 採用 bi-directional RNN,雖然是雙向的,但是兩個方向互相獨立。GPT 也是架構在 Transformer 的單向語言模型,但在它們的模型中移除了右向左的連結,保留了語言模型依賴上文的特性,但也成了只有單一方向的語言模型。BERT 的 bi-directional 方式,保留 Transformer 的 fully-connected layer 的所有連結,因此是 bi-directinoal 而且兩個方向是相依的。

然而 BERT 引以為傲的相依雙向模型也有一個問題,那就是在預測下文的任務時會透過反向洩露。於是,發表 BERT 的學者採用隨機 mask 一個字彙的方式來訓練,所以該模型又被稱為 Mask Language Model。OpenAI 在 GPT 發表後,又發表了另一個更多參數,在語言生成的任務上出色的超大模型 GPT2。至於 Google 則忙著搞定更長的句子,因而發表了兩個模型:使用 segment-level RNN 和 relative position embedding 來處理較長句子的 TransformerXL。以及繼承 TransformerXL 的精神來處理更長句子,但使用 permutation language model 方法解決 BERT 因為直接在字詞上使用 mask 造成 pre-trained 與 fine tune 模型的不一致。

2019

第一篇文章是 Deep Double Descent: Where Bigger Models and More Data Hurt:在傳統的機械學習概念中,模型的複雜度和訓練實例的關係是用 bias-variance trade-off 來解釋。簡單的來說,差勁的模型可以有兩種:一種是高 bias 的差勁,指的是模型不足以解釋所有訓練實例的情況而產生高驗證誤差的情況,另一種是高 variance 的差勁,則是指模型過度解釋每一個訓練實例而產生高驗證誤差的情況。

一個正在長大的模型(意思是模型的複雜度逐漸增加)會先經歷高 bias 的差勁,隨著模型的複雜度增高,驗證誤差逐漸下降,直到模型本身複雜到發生高 variance 問題,驗證誤差才又開始上升。整體而言,在傳統機械學習 bias-variance 的法則下,模型複雜度和驗證損失關係是一個 U 型,也就是只有經歷「一次下降」(single descent)後即上升的圖形。然而,最近深度學習的研究者卻提報另一個下降被觀察到,當模型的複雜度成長到穿越了某一個「重要區域」後,驗證誤差又開始下降了!

這樣兩次下降(Double Descent)的行為,不只是在類神經網路中觀察到, 事實上 Belkin et al (在原文也有提及此文章,算是發現 Double Descent 的第一篇文章)也在 decision tree 和 ensemble 方法中也曾發現此現象。而本篇論文的作者們,則發現 Double Descent 的現象不只有在繪製模型複雜度時出現(model-wise double descent),它同時在繪製驗證誤差與訓練實例(sample-wise double descent),以及繪製驗證誤差與訓練長度時出現(epoch-wise double descent)。

除此之外,本文作者們進行了大規模的研究,他們嘗試過不同的模型架構,包括 convolution nets,ResNet 和 Transformer。也變化不同的最佳演算法,如 SGD 或 Adam,都有發現 Double Descent。除此之外,本文的作者也藉著定義一個稱為 Effective Model Complexity 的數值,企圖用數學去量化「重要區域」。然而,不似傳統 bias-variance tradeoff 本身有良好的統計知識支持,Double descent 是來自實踐者的第一手觀察,這說明了如同 batch normalization 一般,要找到真正背後的原因似乎仍需要經歷一段時間的爭議和證明。

第二篇文章則是 “The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks“。在這篇文章中,我們又回到了傳統機械學習的領域,來問一個問題。這個問題就是,我們是否能找到一個更小的替代模型並且擁有相同的驗證誤差。而這篇論文的作者則告訴我們,「是的!我們可以!只要這些初始權重夠幸運!」

那麼,要多幸運呢?起碼要像贏到樂透彩卷那麼幸運!這篇文章的作者表示,若希望在一個 over-parameterized 的網路中找到一個能力相當的小型網路(subnet),則需要有些權重幸運地被初始化到適合的權重,而那就像是贏得彩卷一樣。除此之外,通常不是很幸運的多數,還是從大型網路來訓練起,因為小又稀疏的網路非常難以從頭訓練,更別說達到同樣的表現。

參考資料:

  1. 原文文章連結(英):https://leogao.dev/2019/12/31/The-Decade-of-Deep-Learning/
  2. 簡中版翻譯:https://www.jiqizhixin.com/articles/2020-01-01

--

--