深度學習六十年簡史
作者|Jean de Dieu Nyandwi
來源|機器之心
1
1958 年:感知機的興起
1958 年,弗蘭克 · 羅森布拉特發明了感知機,這是一種非常簡單的機器模型,後來成為當今智能機器的核心和起源。
感知機是一個非常簡單的二元分類器,可以確定給定的輸入圖像是否屬於給定的類。為了實現這一點,它使用了單位階躍激活函數。使用單位階躍激活函數,如果輸入大於 0,則輸出為 1,否則為 0。
下圖是感知機的算法。
感知機
Frank 的意圖不是將感知機構建為算法,而是構建成一種機器。感知機是在名為 Mark I 感知機的硬件中實現的。Mark I 感知機是一台純電動機器。它有 400 個光電管(或光電探測器),其權重被編碼到電位器中,權重更新(發生在反向傳播中)由電動機執行。下圖是 Mark I 感知機。
Mark I 感知機。圖片來自美國國家歷史博物館
就像你今天在新聞中看到的關於神經網絡的內容一樣,感知機也是當時的頭條新聞。《紐約時報》報道説,“[海軍] 期望電子計算機的初步模型能夠行走、説話、觀察、書寫、自我複製並意識到它的存在”。今天,我們都知道機器仍然難以行走、説話、觀察、書寫、複製自己,而意識則是另一回事。
Mark I 感知機的目標僅僅是識別圖像,而當時它只能識別兩個類別。人們花了一些時間才知道添加更多層(感知機是單層神經網絡)可以使網絡具有學習複雜功能的能力。這進一步產生了多層感知機 (MLP)。
2
1982-1986 : 循環神經網絡 (RNN)
在多層感知機顯示出解決圖像識別問題的潛力之後,人們開始思考如何對文本等序列數據進行建模。
循環神經網絡是一類旨在處理序列的神經網絡。與多層感知機 (MLP) 等前饋網絡不同,RNN 有一個內部反饋迴路,負責記住每個時間步長的信息狀態。
前饋網絡與循環神經網絡
第一種 RNN 單元在 1982 年到 1986 年之間被發現,但它並沒有引起人們的注意,因為簡單的 RNN 單元在用於長序列時會受到很大影響,主要是存在記憶力短和梯度不穩定的問題。
3
1998:LeNet-5,第一個CNN架構
LeNet-5 是最早的卷積網絡架構之一,於 1998 年用於文檔識別。LeNet-5 由 3 個部分組成:2 個卷積層、2 個子採樣或池化層和 3 個全連接層。卷積層中沒有激活函數。
正如論文所説,LeNet-5 已進行商業化應用,每天讀取數百萬張支票。下面是 LeNet-5 的架構。該圖像取自其原始論文。
LeNet-5 在當時確實是一個有影響力的研究,但它(常規的卷積網絡)直到 20 年後才受到關注!LeNet-5 建立在早期工作的基礎上,例如福島邦彥提出的第一個卷積神經網絡、反向傳播(Hinton 等人,1986 年)和應用於手寫郵政編碼識別的反向傳播(LeCun 等人,1989 年)。
4
1998:長短期記憶(LSTM)
由於梯度不穩定的問題,簡單 RNN 單元無法處理長序列問題。LSTM 是可用於處理長序列的 RNN 版本。LSTM 基本上是 RNN 單元的極端情況。
LSTM 單元的一個特殊設計差異是它有一個門機制,這是它可以控制多個時間步長的信息流的基礎。
簡而言之,LSTM 使用門來控制從當前時間步長到下一個時間步長的信息流,有以下 4 種方式:
-
輸入門識別輸入序列。
-
遺忘門去掉輸入序列中包含的所有不相關信息,並將相關信息存儲在長期記憶中。
-
LTSM 單元更新“更新單元“的狀態值。
-
輸出門控制必須發送到下一個時間步長的信息。
LSTM 架構。圖片取自 MIT 的課程《6.S191 Introduction to Deep Learning》
LSTM 處理長序列的能力使其成為適合各種序列任務的神經網絡架構,例如文本分類、情感分析、語音識別、圖像標題生成和機器翻譯。
LSTM 是一種強大的架構,但它的計算成本很高。2014 年推出的 GRU(Gated Recurrent Unit)可以解決這個問題。與 LSTM 相比,GRU的參數更少,效果也很好。
5
2012 年:ImageNet 挑戰賽、AlexNet 和 ConvNet 的興起
如果跳過 ImageNet 大規模視覺識別挑戰賽 (ILSVRC) 和 AlexNet,就幾乎不可能討論神經網絡和深度學習的歷史。
ImageNet 挑戰賽的唯一目標是評估大型數據集上的圖像分類和對象分類架構。它帶來了許多新的、強大的、有趣的視覺架構。
挑戰賽始於 2010 年,但在 2012 年發生了變化,AlexNet 以 15.3% 的 Top 5 低錯誤率贏得了比賽,這幾乎是此前獲勝者錯誤率的一半。AlexNet 由 5 個卷積層、隨後的最大池化層、3 個全連接層和一個 Softmax 層組成。AlexNet 提出了深度卷積神經網絡可以很好地處理視覺識別任務的想法。但當時,這個觀點還沒有深入到其他應用上!
在隨後的幾年裏,ConvNets 架構不斷變得更大並且工作得更好。例如,有 19 層的 VGG 以 7.3% 的錯誤率贏得了挑戰。GoogLeNet(Inception-v1)更進一步,將錯誤率降低到 6.7%。2015 年,ResNet(Deep Residual Networks)擴展了這一點,並將錯誤率降低到 3.6%,並表明通過殘差連接,我們可以訓練更深的網絡(超過 100 層),在此之前,訓練如此深的網絡是不可能的。人們發現更深層次的網絡做得更好,這導致產生了其他新架構,如 ResNeXt、Inception-ResNet、DenseNet、Xception 等。
讀者可以在這裏找到這些架構和其他現代架構的總結和實現:http://github.com/Nyandwi/ModernConvNets
ModernConvNets 庫
ImageNet 挑戰賽。圖片來自課程《 CS231n》
6
2014 年 : 深度生成網絡
生成網絡用於從訓練數據中生成或合成新的數據樣本,例如圖像和音樂。
生成網絡有很多種類型,但最流行的是由 Ian Goodfellow 在 2014 年創建的生成對抗網絡 (GAN)。GAN 由兩個主要組件組成:生成假樣本的生成器,以及區分真實樣本和生成器生成樣本的判別器。生成器和鑑別器可以説是互相競爭的關係。他們都是獨立訓練的,在訓練過程中,他們玩的是零和遊戲。生成器不斷生成欺騙判別器的假樣本,而判別器則努力發現那些假樣本(參考真實樣本)。在每次訓練迭代中,生成器在生成接近真實的假樣本方面做得更好,判別器必須提高標準來區分不真實的樣本和真實樣本。
GAN 一直是深度學習社區中最熱門的研究之一,該社區以生成偽造的圖像和 Deepfake 視頻而聞名。如果讀者對 GAN 的最新進展感興趣,可以閲讀 StyleGAN2、DualStyleGAN、ArcaneGAN 和 AnimeGANv2 的簡介。如需 GAN 資源的完整列表:http://github.com/nashory/gans-awesome-applications。下圖説明了 GAN 的模型架構。
生成對抗網絡(GAN)
GAN 是生成模型的一種。其他流行的生成模型類型還有 Variation Autoencoder (變分自編碼器,VAE)、AutoEncoder (自編碼器)和擴散模型等。
7
2017 年:Transformers 和注意力機制
時間來到 2017 年。ImageNet 挑戰賽結束了。新的卷積網絡架構也被製作出來。計算機視覺社區的每個人都對當前的進展感到高興。核心計算機視覺任務(圖像分類、目標檢測、圖像分割)不再像以前那樣複雜。人們可以使用 GAN 生成逼真的圖像。
NLP 似乎落後了。但是隨後出現了一些事情,並且在整個網絡上都成為了頭條新聞:一種完全基於注意力機制的新神經網絡架構橫空出世。並且 NLP 再次受到啟發,在隨後的幾年,注意力機制繼續主導其他方向(最顯著的是視覺)。該架構被稱為 Transformer 。
在此之後的 5 年,也就是現在,我們在這裏談論一下這個最大的創新成果。Transformer 是一類純粹基於注意力機制的神經網絡算法。Transformer 不使用循環網絡或卷積。它由多頭注意力、殘差連接、層歸一化、全連接層和位置編碼組成,用於保留數據中的序列順序。下圖説明了 Transformer 架構。
圖片來自於《Attention Is All You Need》
Transformer 徹底改變了 NLP,目前它也在改變着計算機視覺領域。在 NLP 領域,它被用於機器翻譯、文本摘要、語音識別、文本補全、文檔搜索等。
讀者可以在其論文 《Attention is All You Need》 中瞭解有關 Transformer 的更多信息。
8
2018 年至今
自 2017 年以來,深度學習算法、應用和技術突飛猛進。為了清楚起見,後來的介紹是按類別劃分。在每個類別中,我們都會重新審視主要趨勢和一些最重要的突破。
Vision Transformers
Transformer 在 NLP 中表現出優異的性能後不久,一些勇於創新的人就迫不及待地將注意力機制用到了圖像領域。在論文《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》中,谷歌的幾位研究人員表明,對直接在圖像塊序列上運行的正常 Transformer 進行輕微修改,就可以在圖像分類數據集上產生實質性的結果。他們將這種架構稱為 Vision Transformer (ViT),它在大多數計算機視覺基準測試中都有不錯表現(在作者撰寫本文時,ViT 是 Cifar-10 上最先進的分類模型)。
ViT 設計師並不是第一個嘗試在識別任務中使用注意力機制的人。我們可以在論文 Attention Augmented Convolutional Networks 中找到第一個使用注意力機制的記錄,這篇論文試圖結合自注意力機制和卷積(擺脱卷積主要是由於 CNN 引入的空間歸納偏置)。
另一個例子見於論文《Visual Transformers: Token-based Image Representation and Processing for Computer Vision,這篇論文在基於濾波器的 token 或視覺 token 上運行 Transformer。
這兩篇論文和許多其他未在此處列出的論文突破了一些基線架構(主要是 ResNet)的界限,但當時並沒有超越當前的基準。ViT 確實是最偉大的論文之一。這篇論文最重要的見解之一是 ViT 設計師實際上使用圖像 patch 作為輸入表示。他們對 Transformer 架構沒有太大的改變。
Vision Transformer(ViT)
除了使用圖像 patch 之外,使 Vision Transformer 成為強大架構的結構是 Transformer 的超強並行性及其縮放行為。但就像生活中的一切一樣,沒有什麼是完美的。一開始,ViT 在視覺下游任務(目標檢測和分割)上表現不佳。
在引入 Swin Transformers 之後,Vision Transformer 開始被用作目標檢測和圖像分割等視覺下游任務的骨幹網絡。Swin Transformer 超強性能的核心亮點是由於在連續的自注意力層之間使用了移位窗口。下圖描述了 Swin Transformer 和 Vision Transformer (ViT) 在構建分層特徵圖方面的區別。
圖片來自 Swin Transformer 原文
Vision Transformer 一直是近來最令人興奮的研究領域之一。讀者可以在論文《Transformers in Vision: A Survey》中瞭解更多信息。其他最新視覺 Transformer 還有 CrossViT、ConViT 和 SepViT 等。
視覺和語言模型
視覺和語言模型通常被稱為多模態。它們是涉及視覺和語言的模型,例如文本到圖像生成(給定文本,生成與文本描述匹配的圖像)、圖像字幕(給定圖像,生成其描述)和視覺問答(給定一個圖像和關於圖像中內容的問題,生成答案)。很大程度上,Transformer 在視覺和語言領域的成功促成了多模型作為一個單一的統一網絡。
實際上,所有視覺和語言任務都利用了預訓練技術。在計算機視覺中,預訓練需要對在大型數據集(通常是 ImageNet)上訓練的網絡進行微調,而在 NLP 中,往往是對預訓練的 BERT 進行微調。要了解有關 V-L 任務中預訓練的更多信息,請閲讀論文《A Survey of Vision-Language Pre-Trained Models》。有關視覺和語言任務、數據集的一般概述,請查看論文《Trends in Integration of Vision and Language Research: A Survey of Tasks, Datasets, and Methods》。
前段時間,OpenAI 發佈了 DALL·E 2(改進後的 DALL·E),這是一種可以根據文本生成逼真圖像的視覺語言模型。現有的文本轉圖像模型有很多,但 DALL·E 2 的分辨率、圖像標題匹配度和真實感都相當出色。
DALL·E 2 尚未對公眾開放,以下是 DALL·E 2 創建的一些圖像示例。
上面呈現的 DALL·E 2 生成的圖像取自一些 OpenAI 員工,例如 @sama、@ilyasut、@model_mechanic 和 openaidalle。
大規模語言模型 (LLM)
語言模型有多種用途。它們可用於預測句子中的下一個單詞或字符、總結一段文檔、將給定文本從一種語言翻譯成另一種語言、識別語音或將一段文本轉換為語音。
開玩笑地説,發明 Transformers 的人必須為語言模型在朝着大規模參數化方向前進而受到指責(但實際上沒有人應該受到責備,Transformers 是過去十年中最偉大的發明之一,大模型令人震驚的地方在於:如果給定足夠的數據和計算,它總能更好地工作)。在過去的 5 年中,語言模型的大小一直在不斷增長。
在引入論文《Attention is all you need》一年後,大規模語言模型開始出現。2018 年,OpenAI 發佈了 GPT(Generative Pre-trained Transformer),這是當時最大的語言模型之一。一年後,OpenAI 發佈了 GPT-2,一個擁有 15 億個參數的模型。又一年後,他們發佈了 GPT-3,它有 1750 億個參數,用了 570GB 的 文本來訓練。這個模型有 175B 的參數,模型有 700GB。根據 lambdalabs 的説法,如果使用在市場上價格最低的 GPU 雲訓練GPT-3,需要 366 年,花費 460 萬美元!
GPT-n 系列型號僅僅是個開始。還有其他更大的模型接近甚至比 GPT-3 更大。如:NVIDIA Megatron-LM 有 8.3B 參數;最新的 DeepMind Gopher 有 280B 參數。2022 年 4 月 12 日,DeepMind 發佈了另一個名為 Chinchilla 的 70B 語言模型,儘管比 Gopher、GPT-3 和 Megatron-Turing NLG(530B 參數)小,但它的性能優於許多語言模型。Chinchilla 的論文表明,現有的語言模型是訓練不足的,具體來説,它表明通過將模型的大小加倍,數據也應該加倍。但是,幾乎在同一周內又出現了具有 5400 億個參數的 Google Pathways 語言模型(PaLM)!
Chinchilla 語言模型
代碼生成模型
代碼生成是一項涉及補全給定代碼或根據自然語言或文本生成代碼的任務,或者簡單地説,它是可以編寫計算機程序的人工智能系統。可以猜到,現代代碼生成器是基於 Transformer 的。
可以確定地説,人們已經開始考慮讓計算機編寫自己的程序了(就像我們夢想教計算機做的所有其他事情一樣),不過代碼生成器是在 OpenAI 發佈 Codex 後受到關注。
Codex 是在 GitHub 公共倉庫和其他公共源代碼上微調的 GPT-3。OpenAI 表示:“OpenAI Codex 是一種通用編程模型,這意味着它基本上可以應用於任何編程任務(儘管結果可能會有所不同)。我們已經成功地將它用於編譯、解釋代碼和重構代碼。但我們知道,我們只觸及了可以做的事情的皮毛。” 目前,由 Codex 支持的 GitHub Copilot 扮演着結對程序員的角色。
在我使用 Copilot 後,我對它的功能感到非常驚訝。作為不編寫 Java 程序的人,我用它來準備我的移動應用程序(使用 Java)考試。人工智能幫助我準備學術考試真是太酷了!
在 OpenAI 發佈 Codex 幾個月後,DeepMind 發佈了 AlphaCode,這是一種基於 Transformer 的語言模型,可以解決編程競賽問題。AlphaCode 發佈的博文稱:“AlphaCode 通過解決需要結合批判性思維、邏輯、算法、編碼和自然語言理解的新問題,在編程競賽的參與者中估計排名前 54%。” 解決編程問題(或一般的競爭性編程)非常困難(每個做過技術面試的人都同意這一點),正如 Dzmitry 所説,擊敗 “人類水平仍然遙遙無期”。
前不久,來自 Meta AI 的科學家發佈了 InCoder,這是一種可以生成和編輯程序的生成模型。更多關於代碼生成的論文和模型可以在這裏找到:
http://paperswithcode.com/task/code-generation/codeless
再次回到感知機
在卷積神經網絡和 Transformer 興起之前的很長一段時間裏,深度學習都圍繞着感知機展開。ConvNets 在取代 MLP 的各種識別任務中表現出優異的性能。視覺 Transformer 目前也展示出似乎是一個很有前途的架構。但是感知機完全死了嗎?答案可能不是。
在 2021 年 7 月,研究人員發表了兩篇基於感知機的論文。一個是 MLP-Mixer: An all-MLP Architecture for Vision,另一個是 Pay Attention to MLPs(gMLP).
MLP-Mixer 聲稱卷積和注意力都不是必需的。這篇論文僅使用多層感知機 (MLP),就在圖像分類數據集上取得了很高的準確性。MLP-Mixer 的一個重要亮點是,它包含兩個主要的 MLP 層:一個獨立應用於圖像塊(通道混合),另一個是層跨塊應用(空間混合)。
gMLP 還表明,通過避免使用自注意和卷積(當前 NLP 和 CV 的實際使用的方式),可以在不同的圖像識別和 NLP 任務中實現很高的準確性。
讀者顯然不會使用 MLP 去獲得最先進的性能,但它們與最先進的深度網絡的可比性卻是令人着迷的。
再次使用卷積網絡:2020 年代的卷積網絡
自 Vision Transformer(2020 年)推出以來,計算機視覺的研究圍繞着 Transformer 展開(在 NLP 領域,Transformer 已經是一種規範)。Vision Transformer (ViT) 在圖像分類方面取得了最先進的結果,但在視覺下游任務(對象檢測和分割)中效果不佳。隨着 Swin Transformers 的推出,使得Vision Transformer 很快也接管了視覺下游任務。
很多人(包括我自己)都喜歡卷積神經網絡。卷積神經網絡確實能起效,而且放棄已經被證明有效的東西是很難的。這種對深度網絡模型結構的熱愛讓一些傑出的科學家回到過去,研究如何使卷積神經網絡(準確地説是 ResNet)現代化,使其具有和 Vision Transformer 同樣的吸引人的特徵。特別是,他們探討了「Transformers 中的設計決策如何影響卷積神經網絡的性能?」這個問題。他們想把那些塑造了 Transformer 的祕訣應用到 ResNet 上。
Meta AI 的 Saining Xie 和他的同事們採用了他們在論文中明確陳述的路線圖,最終形成了一個名為 ConvNeXt 的 ConvNet 架構。ConvNeXt 在不同的基準測試中取得了可與 Swin Transformer 相媲美的結果。讀者可以通過 ModernConvNets 庫(現代 CNN 架構的總結和實現)瞭解更多關於他們採用的路線圖。
9
結論
深度學習是一個非常有活力、非常寬廣的領域,很難概括其中所發生的一切。作者只觸及了表面,論文多到一個人讀不完,很難跟蹤所有內容。例如,我們沒有討論強化學習和深度學習算法,如 AlphaGo、蛋白質摺疊 AlphaFold(這是最大的科學突破之一)、深度學習框架的演變(如 TensorFlow 和 PyTorch),以及深度學習硬件。或許,還有其他重要的事情構成了我們沒有討論過的深度學習歷史、算法和應用程序的很大一部分。
作為一個小小的免責聲明,讀者可能已經注意到,作者偏向於計算機視覺的深度學習,對其他專門為 NLP 設計的重要深度學習技術作者可能並沒有涉及。
此外,很難確切地知道某項特定技術是什麼時候發表的,或者是誰最先發表的,因為大多數奇特的東西往往受到前人作品的啟發。如有紕漏,讀者可以去原文評論區與作者討論。
(本文經授權後發佈,原文鏈接:
http://www.getrevue.co/profile/deeprevision/issues/a-revised-history-of-deep-learning-issue-1-1145664)
其他人都在看
歡迎下載體驗OneFlow v0.7.0:http://github.com/Oneflow-Inc/oneflow/
本文分享自微信公眾號 - OneFlow(OneFlowTechnology)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閲讀的你也加入,一起分享。
- OneFlow源碼解析:Eager模式下的設備管理與併發執行
- OpenAI創始人:GPT-4的研究起源和構建心法
- GPT-4創造者:第二次改變AI浪潮的方向
- NCCL源碼解析①:初始化及ncclUniqueId的產生
- GPT-4問世;LLM訓練指南;純瀏覽器跑Stable Diffusion
- 適配PyTorch FX,OneFlow讓量化感知訓練更簡單
- 超越ChatGPT:大模型的智能極限
- ChatGPT作者John Schulman:我們成功的祕密武器
- YOLOv5全面解析教程⑤:計算mAP用到的Numpy函數詳解
- GPT-3/ChatGPT復現的經驗教訓
- ChatGPT背後:從0到1,OpenAI的創立之路
- 一塊GPU搞定ChatGPT;ML系統入坑指南;理解GPU底層架構
- YOLOv5全面解析教程④:目標檢測模型精確度評估
- ChatGPT數據集之謎
- OneFlow源碼解析:Eager模式下的SBP Signature推導
- YOLOv5全面解析教程③:更快更好的邊界框迴歸損失
- ChatGPT背後的經濟賬
- Sam Altman的成功學|升維指南
- 開源機器學習軟件對AI的發展意味着什麼?
- “一鍵”模型遷移,性能翻倍,多語言AltDiffusion推理速度超快