從AlexNet到BERT:深度學習中那些最重要的idea回顧

2021-03-02 七月在線實驗室
本文作者Denny Britz按時間總結的深度學習比較重要的idea集錦,幾乎給自12年以來最重要的idea 都列了出來,這些 idea 可以說得上是養活了無數人,大家都基於這些發了無數的論文,它們依次是:

AlexNet 和 Dropout:AlexNet 直接打開了深度學習時代,奠定了之後 CV 裡面 CNN 模型基本結構,Dropout 也不用說,都成了基本配置。

深度強化學習的Atari:深度強化學習的開山之作,DQN 之後也是打開了一條新路,大家開始在各種遊戲上進行嘗試。

Seq2Seq+Atten:這個在 NLP 領域的影響沒得說,有段時間,甚至都在說任何 NLP 任務都能 Seq2Seq+Atten 來解決,而且這篇其實還為之後純 Attention 的 Transformer 打下了基礎。

Adam Optimizer:不多說,訓練模型的心頭好。

Generative Adversarial Networks (GANs):這個也是從14年開始幾年裡火得一塌糊塗,大家都在搞各種各樣的 GAN,直到去年 StyleGAN 這種集大成模型出來,才算是差不多消停。引起各種爭議的 Deepfake 是成果之一,最近都有看到人用它做假資料。

Residual Networks:和 Dropout,Adam 一樣變成了基本配置,模型要深全靠它。

Transformers:純 Attention 模型,直接給 NLP 裡的 LSTM 給取代了,而且在其他領域也慢慢取得很好效果,同時也為之後 BERT 預訓練模型打下基礎。

BERT and 精調 NLP 模型:利用可擴展性非常強大的 Transformer,加上大量數據,加上一個簡單的自監督訓練目標,就能夠獲得非常強大的預訓練模型,橫掃各種任務。最近的一個是 GPT3,自從給出 API 後,網絡上展現出了各種特別 fancy 的demo,簡直了,各種自動補全。

作者會在這裡回顧深度學習領域經歷時間考驗被廣泛應用的一些想法,當然不能全面覆蓋。即使這樣,下面介紹到的深度學習技術,也已經涵蓋了理解現代深度學習研究所需的基本知識。如果你是該領域的萌新,那麼很好,這會是你一個非常好的起點。

深度學習是個瞬息萬變的領域,海量的研究論文和想法可能會令人感覺有點跟不上。就算是經驗豐富的研究人員,有時也會很懵圈,很難告訴公司PR真正的突破是哪些。

按照「時間是檢驗真理的唯一標準」,作者在這篇文章回顧了那些經受住時間考驗的研究,它們或它們的改進已被反覆用在各種研究和應用上,效果也有目共睹。

如果你想看完這篇文章之後就馬上入門,那你就想多了。最好的方法是,搞明白和復現下面提到的經典論文,這可以給你打下非常好的基礎,而且對你之後看懂最新研究和開展自己項目也會很有幫助。

此外,按下面這樣時間順序瀏覽論文也很有用,可以幫你了解當前的技術從何而來,以及它們最初為何被發明出來。

簡單來說,作者在這篇文章會總結出儘量少,但涵蓋了理解現代深度學習研究所需的大部分基本知識的研究。

關於深度學習,一個特點就是其應用領域,包含了機器視覺、自然語言、語音和強化學習等。而這些領域都用著差不多的技術,比如:一個曾用深度學習搞計算機視覺的人,能很快就在NLP研究中取得成果。

即使特定的網絡架構有些不同,但概念、方法和代碼都是相通的。本文將介紹來自不同領域的一些研究,但進入正題前,需要聲明一下:

這篇文章不是為下面提到的研究提供深入詳解或代碼示例,因為長篇複雜的論文其實很難被總結成一個簡短的段落。相反,作者只會簡要概述這些技術和相關歷史背景,並提供其論文和實現連結。

如果你想學有所得,最好在不用現有代碼庫或高級庫的情況下,從頭開始用PyTorch復現一遍論文中的實驗。

受作者個人知識和熟悉領域的影響,這個列表可能不夠全面,因為很多非常值得一提的子領域都沒有提到。但大多數人認可的主流領域,包括機器視覺、自然語言、語音和強化學習等就都包括在內了。而且作者只討論有可以跑的官方或半官方開源實現的研究。有些工程量龐大而不容易被復現的研究,例如DeepMind的AlphaGo或OpenAI的Dota 2 AI,就不說啦。

一些研究的選擇可能有些隨意。因為總會有些相似技術在相近時間內被發布出來,而本文目的也不是對其進行全面回顧,而是要向萌新介紹各個領域的各種研究。

例如,GAN可能有幾百種變體,但無論你要研究哪種,GAN的基本概念都是不可不知的。

2012年:用AlexNet和Dropout處理ImageNet數據集ImageNet Classification with Deep Convolutional Neural Networks [1]:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networksImproving neural networks by preventing co-adaptation of feature detectors[2]:https://arxiv.org/abs/1207.0580One weird trick for parallelizing convolutional neural networks [14]:https://arxiv.org/abs/1404.5997https://pytorch.org/hub/pytorch_vision_alexnet/https://github.com/tensorflow/models/blob/master/research/slim/nets/alexnet.py

一般認為,是AlexNet開啟了近年來深度學習和人工智慧研究的大浪潮。而AlexNet其實就是個基於Yann LeCun早年提出的LeNet 的深度卷積網絡。

獨特之處在於,AlexNet通過結合GPU強大性能和其算法優越而獲得了非常大的提升,遠遠超越之前對ImageNet數據集進行分類的其他方法。它也證明了神經網絡的確是有效的!

AlexNet也是最早用Dropout[2]的算法之一,也是自此Dropout成為提高各種深度學習模型泛化能力的關鍵組件。

AlexNet架構是由卷積層,非線性ReLU和最大池化串成的一系列模塊,而現在這些都已被大家接受,成為了標準機器視覺的網絡結構了。

如今,由於像PyTorch這樣的庫已非常強大,跟最新一些架構相比,AlexNet實現已經非常簡單了,現在用幾行代碼就能實現。

值得注意的是,AlexNet的許多實現都用的是它的一個變種,加入了這篇論文One weird trick for parallelizing convolutional neural networks中提到的一個技巧。

Playing Atari with Deep Reinforcement Learning [7]:https://arxiv.org/abs/1312.5602https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.htmlhttps://www.tensorflow.org/agents/tutorials/1_dqn_tutorial基於最近圖像識別和GPU的發展,DeepMind成功訓練了一個可基於原始像素輸入來打Atari遊戲的神經網絡。而且,同一個神經網絡能在不設置任何遊戲規則的前提下學會打七種不同的遊戲,這也證明了該方法的通用性。https://www.youtube.com/watch?v=V1eYniJ0Rnk

其中,強化學習與監督學習(如圖像分類)的不同之處在於,強化學習的智能體必須在一段時間步(如一盤遊戲)中學習最大化獎勵總和,而不僅僅是預測標籤。

由於其智能體是能直接與環境交互的,而且每個行動都會影響下一個行動,因此,訓練其數據並不是獨立同分布的。

這也使得許多強化學習模型的訓練很不穩定,但這個問題可以用經驗重播(experience replay)等技術來解決。

儘管沒有明顯的算法創新,但這項研究巧妙結合了各種現有技術,比如在GPU上訓練卷積神經網絡和經驗重播,以及一些數據處理技巧,從而取得了超出大家預期令人印象深刻的結果

這也讓人們更有信心去擴展深度強化學習技術,以解決更複雜的任務,比如:圍棋,多塔2,星際爭霸2等。

而且從這篇論文後,Atari遊戲也變成了強化學習研究的測試標準。最初的方法儘管超過了人類的表現,但只能在7種遊戲取得這樣的表現。

而之後幾年,這些想法被不斷拓展,在越來越多的遊戲中擊敗人類。直到最近,技術才攻克了全部57款遊戲並超過了所有人類水平,其中的《蒙特祖瑪的復仇》以其需要長期規划著稱,被認為是最難攻克的遊戲之一。

2014年:編碼器-解碼器網絡加注意力機制(Seq2Seq+Atten模型)Sequence to Sequence Learning with Neural Networks [4]:https://arxiv.org/abs/1409.3215Neural Machine Translation by Jointly Learning to Align and Translate [3]:https://arxiv.org/abs/1409.0473

https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html

https://www.tensorflow.org/addons/tutorials/networks_seq2seq_nmt

深度學習中很多最讓人印象深刻的結果都是和視覺相關的任務,而且由卷積神經網絡驅動。

儘管NLP領域有通過用LSTM以及編碼器-解碼器架構在語言模型和翻譯上並取得一些成功,但直到注意力機制的出現,該領域才取得真正令人矚目的成就。

在處理語言時,每個token(可以是一個字符,單詞或介於兩者之間)都會被餵入一個循環網絡(如LSTM)中,該網絡會存儲先前處理過的輸入。

換句話說,這就像一個時間序列的句子,每個token代表一個時間步。而這些循環模型在處理序列時很容易「忘記」較早的輸入,因此很難處理長距離依賴關係。

由於其中梯度要通過很多時間步來傳播,這會導致梯度爆炸和梯度消失等問題,所以用梯度下降來優化循環模型也變得困難。

而引入注意力機制有助於緩解該問題,通過直接連接,它為網絡提供了一種自適應的能「回顧」較早時間步的方法。這些連接使網絡可以決定在生成特定輸出時,重要的輸入有哪些。

簡單用翻譯來舉例子:當生成一個輸出詞時,通常有一個或多個特定的輸入單詞被注意力機制選中,作為輸出參考。

Adam: A Method for Stochastic Optimization  [12]:https://arxiv.org/abs/1412.6980https://d2l.ai/chapter_optimization/adam.htmlhttps://pytorch.org/docs/master/_modules/torch/optim/adam.htmlhttps://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/keras/optimizer_v2/adam.py#L32-L281

神經網絡一般是通過用優化器最小化損失函數來進行訓練的,而優化器的作用則是搞明白怎麼調節網絡參數使其能學習到指定目標。

大部分優化器都是基於隨機梯度下降法(SGD)(https://ruder.io/optimizing-gradient-descent/)來改進。

但要指出的是,很多優化器本身還包含可調參數,如學習率。所以,為特定問題找到正確的設置,不光能減少訓練時間,而且還能找到更好的損失函數局部最優,這往往也能使模型獲得更好結果。

之前,財大氣粗的研究室通常要跑特燒錢的超參搜索,來弄出一套給SGD用的學習率調節方案。雖然它能超過之前最好的表現,但往往也意味著要花大量的錢來調節優化器。

這些細節在論文裡一般不會提的,所以那些沒有相同預算來調優化器的貧窮研究員們,就總會被較差的結果卡住,還沒辦法。

而Adam給這些研究員帶了福音,它能通過梯度的一階和二階矩來自動調整學習率。而且實驗結果證明其非常可靠,對超參的選擇也不太敏感。

換句話說,Adam拿來就能用,不用像其它優化器那樣要進行大量調參。儘管調優後的SGD可能獲得更好的結果,但Adam卻使研究變得更容易了。

因為一旦出現問題時,你就知道應該不太可能是調參引起的問題。

Generative Adversarial Networks [6] :https://arxiv.org/abs/1406.2661Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks [17]:https://arxiv.org/abs/1511.06434https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.htmlhttps://www.tensorflow.org/tutorials/generative/dcgan圖2:模型樣本的可視化。最右邊的列顯示了最接近訓練示例的鄰近樣本,以證明模型並不是記住訓練集。樣本是隨機抽取的而不是精心挑選的。與深層生成模型的大多數其他可視化不同,這些圖像顯示的是模型分布中的實際樣本,而不是給定隱單元樣本的條件均值。而且這些樣本是不相關的,因為其採樣過程不依賴於馬爾可夫鏈混合,a)MNIST b)TFD c)CIFAR-10(全連接模型) d)CIFAR-IO(卷積判別器和反卷積生成器)生成模型(例如變分自動編碼器,VAE)的目標是生成以假亂真的數據樣品,比如不存在的人臉。這裡,模型必須對整個數據分布進行建模(很多像素!),而不僅僅是像判別模型一樣給貓或狗分類,所以此類模型很難訓練。生成對抗網絡(GAN)就是這樣一種模型。

GAN的基本思想是同時訓練兩個網絡,生成器和判別器。生成器的目標是產生能欺騙判別器的樣本,而判別器經過訓練,則要分辨真實圖像和生成圖像。

隨著訓練進行,判別器將變得更善於識別假圖片,而生成器也將變得更善於欺騙判別器,產生更逼真的樣本,這就是對抗網絡之為對抗所在。剛開始的GAN產生的還是模糊低解析度的圖像,而且訓練起來相當不穩定。

但隨著技術進步,類似於DCGAN[17]、Wasserstein GAN[25]、CycleGAN[26]、StyleGAN(v2)[27]等變體和改進都能產生更高解析度的逼真圖像和視頻。

Deep Residual Learning for Image Recognition [13]:https://arxiv.org/abs/1512.03385https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.pyhttps://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/keras/applications/resnet.py

研究者們在AlexNet的基礎上,又發明了基於卷積神經網絡的性能更好的架構,如VGGNet[28]、Inception[29]等。

而ResNet則是這一系列進展中的最重要的突破所在。時至今日,ResNet變體已被用作各種任務的基準模型架構,也被用於更複雜架構的基礎。

RseNet之所以特別,除了其在ILSVRC 2015分類挑戰賽中獲得冠軍外,更在於其相比於其他網絡架構的深度

論文中提到的網絡最深的有1000層,儘管在基準任務上比101和152層的略差些,但仍然表現出色。因為梯度消失問題,訓練這樣一個深度的網絡其實是非常具有挑戰的,序列模型也有同樣的問題。

在此之前,很少有研究者認為訓練如此深的網絡還能有這麼穩定的結果。

ResNet使用捷徑連接的方式來幫助梯度傳遞。一種理解是,ResNet僅需要學習從一層到另一層的「差分」,這比學習一個完全轉換要簡單些。

此外,ResNet中的殘差連接算是Highway Networks[30]的一種特殊情況,而Highway Networks 又受到了LSTM裡門控機制的啟發。

Attention is All You Need [5] :https://arxiv.org/abs/1706.03762https://pytorch.org/tutorials/beginner/transformer_tutorial.htmlhttps://www.tensorflow.org/tutorials/text/transformerHuggingFace Transformers庫:https://github.com/huggingface/transformers

Transformer – 模型架構

Seq2Seq+Atten模型(前面已經介紹過了)性能很好,但由於它的遞歸特性,導致需要按時序計算。所以很難並行,一次只能處理一步,而每一步又取決於前一個。

這也使得它很難用在長序列數據上,即使有注意力機制,仍然難以對複雜的長距離依賴關係進行建模,而且其大部分工作還是在遞歸層裡實現的。

Transformers直接解決了這些問題,丟掉了遞歸部分,取而代之的是多個前饋的自注意力層,並行處理所有輸入,並在輸入與輸出之間找到相對較短(容易用梯度下降優化)的路徑。

這使得它的訓練速度非常快,易於擴展,並且能夠處理更多的數據。為了加入輸入位置信息(在遞歸模型中是隱式的),Transformers還用了位置編碼。

要了解有關Transformer工作原理的更多信息,建議閱讀這個圖解博客。

(http://jalammar.github.io/illustrated-transformer/)

如果僅僅只是說Transformers比幾乎所有人預期的表現都要好,那簡直就是對它的侮辱。

因為在接下來的幾年裡,它不光表現更好,而且還直接幹掉了RNN,成為了絕大多數NLP和其他序列任務標準架構,甚至還用在了機器視覺上。

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding [9]:https://arxiv.org/abs/1810.04805https://huggingface.co/transformers/training.html

預訓練指訓練一個模型來執行某個任務,之後用學到的參數來作為初始化參數來學習一個相關任務

這個其實很直觀,一個已經學會分類貓或狗圖像的模型,應該已經學會了一些關於圖像和毛茸茸動物的基礎知識。

當這個模型被微調用來對狐狸進行分類時,可以預計它比一個從頭開始學習的模型更好。同樣,一個學會了預測句子中下一個詞的模型,應該已經學會了一些關於人類語言模型的知識。

那麼它的參數對於相關任務(如翻譯或情感分析)也會是一個很好的初始化。

預訓練和微調已經在計算機視覺和NLP領域取得了成功,雖然在計算機視覺中其早已成為標準,但如何在NLP領域更好的發揮作用似乎還有些挑戰。大多數最佳結果仍然出自完全監督模型。

隨著ELMo [34], ULMFiT [35]等方法出現,NLP研究者終於也能開始做預訓練的工作了(之前詞向量其實也算),特別是對Transformer的應用,更是產生了一系列如 GPT和BERT的方法。

BERT算是預訓練比較新的成果,很多人認為它開創了NLP研究新紀元。它沒有像大多數預訓練模型一樣,訓練預測下一個單詞,而是預測句子中被掩蓋(故意刪除)的單詞,以及兩個句子是否相鄰。

注意,這些任務不需要標註數據,它可以在任何文本上進行訓練,而且可以是一大堆文本! 於是預訓練好的模型,就能學會了一些語言的一般屬性,之後就可以進行微調了,用來解決監督任務,如問答或情感預測。

BERT在各種任務中的表現都非常好,出來就屠榜。而像HuggingFace這樣的公司也坐上浪頭,讓用於NLP任務的微調BERT模型變得容易下載和使用。

之後,BERT又被XLNet[31]和RoBERTa[32]以及ALBERT[33]等新模型不斷傳頌,現在基本上整個領域人都知道了。

2019/2020及未來 –BIG語言模型,自監督學習?

縱觀整個深度學習的歷史,最明顯的趨勢或許就是 Sutton 說的 the bitter lesson(苦痛的一課)。如裡面說的,能夠利用更好並行(更多數據)並且有更多模型參數的算法,能一次又一次地戰勝一些所謂 "更聰明的技術"。

這種趨勢似乎到2020年還在持續,OpenAI的GPT-3模型,一個擁有1750億參數的龐大語言模型,儘管其訓練目標和架構都很簡單,但卻表現出了意想不到的泛化性(各種效果非常好的demo)。

有著同樣趨勢的還有contrastive self-supervised learning等方法,如SimCLR(https://arxiv.org/abs/2002.05709),它能更好的利用無標籤數據。

隨著模型變得越來越大,訓練速度越來越快,也讓能有效利用網上的大量無標註數據集,學習可遷移通用知識的技術正變得越來越有價值。

https://dennybritz.com/blog/deep-learning-most-important-ideas/

參考文獻:

[1] ImageNet Classification with Deep Convolutional Neural Networks

Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton (2012)

Advances in Neural Information Processing Systems 25

[http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf] [Semantic Scholar] [Google Scholar]

[2] Improving neural networks by preventing co-adaptation of feature detectors

Geoffrey E. Hinton, Nitish Srivastava, Alex Krizhevsky, Ilya Sutskever, Ruslan R. Salakhutdinov (2012)

arXiv:1207.0580 \[cs\]

[http://arxiv.org/abs/1207.0580] [Semantic Scholar] [Google Scholar]

[3] Neural Machine Translation by Jointly Learning to Align and Translate

Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio (2016)

arXiv:1409.0473 \[cs, stat\]

[http://arxiv.org/abs/1409.0473] [Semantic Scholar] [Google Scholar]

[4] Sequence to Sequence Learning with Neural Networks

Ilya Sutskever, Oriol Vinyals, Quoc V. Le (2014)

arXiv:1409.3215 \[cs\]

[http://arxiv.org/abs/1409.3215] [Semantic Scholar] [Google Scholar]

[5] Attention Is All You Need

Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin (2017)

arXiv:1706.03762 \[cs\]

[http://arxiv.org/abs/1706.03762] [Semantic Scholar] [Google Scholar]

[6] Generative Adversarial Networks

Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio (2014)

arXiv:1406.2661 \[cs, stat\]

[http://arxiv.org/abs/1406.2661] [Semantic Scholar] [Google Scholar]

[7] Playing Atari with Deep Reinforcement Learning

Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra, Martin Riedmiller (2013)

arXiv:1312.5602 \[cs\]

[http://arxiv.org/abs/1312.5602] [Semantic Scholar] [Google Scholar]

[8] The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks

Jonathan Frankle, Michael Carbin (2019)

arXiv:1803.03635 \[cs\]

[http://arxiv.org/abs/1803.03635] [Semantic Scholar] [Google Scholar]

[9] BERT: Pre-training of Deep Bi

相關焦點

  • 從AlexNet到BERT:深度學習中那些最重要idea的最簡單回顧
    本文作者Denny Britz按時間總結的深度學習比較重要的idea集錦,推薦新人看,幾乎給自12年以來最重要的idea 都列了出來,這些 idea
  • AlexNet:深度學習時代的開始
    我的個人網站會持續更新,詳情:https://lulaoshi.info/machine-learning/convolutional/alexnet.html深度學習的前夜雖然Yann LeCun在上個世紀就提出了卷積神經網絡LeNet,並使用LeNet進行圖像分類,但卷積神經網絡並沒有就此飛速發展。
  • 【深度學習系列】用PaddlePaddle和Tensorflow實現經典CNN網絡AlexNet
    ,熟悉Tensorflow,PaddlePaddle等深度學習框架,負責過多個機器學習落地項目,如垃圾評論自動過濾,用戶分級精準營銷,分布式深度學習平臺搭建等,都取了的不錯的效果。博客專欄:https://www.cnblogs.com/charlotte77/前文傳送門:【好書推薦&學習階段】三個月教你從零入門深度學習【深度學習系列】PaddlePaddle之手寫數字識別【深度學習系列】卷積神經網絡CNN原理詳解(一)——基本原理【深度學習系列】PaddlePaddle之數據預處理
  • 從 one-hot 到 BERT,帶你一步步理解 BERT
    理解複雜的語言也是人工智慧的重要組成部分。而自google在2018年10月底公布BERT在11項nlp任務中的卓越表後,BERT(Bidirectional Encoder Representation from Transformers)就成為NLP一枝獨秀,本文將為大家層層剖析bert。
  • 一文總結深度學習這半年:從BERT到圖網絡
    原作:Ross Taylor嶽排槐 編譯整理量子位 出品 | 公眾號 QbitAI追蹤深度學習這樣一個大熱領域的進展並不容易。我們一起來總結下2018下半年的關鍵突破,以及深度學習社群的未來之路。最熱模型:BERT、vid2vid和graph_netsGoogle AI十月發布的BERT論文,引發了深度學習界的強烈關注。這篇論文提出了一種深度雙向Transformer模型。
  • 深度學習筆記16:CNN經典論文研讀之AlexNet及其Tensorflow實現
    這一成績引起了學界和業界的極大關注,計算機視覺也開始逐漸進入深度學習主導的時代。      AlexNet 繼承了 LeCun 的 Le-Net5 思想,將卷積神經網絡的發展到很寬很深的網絡當中,相較於 Le-Net5 的六萬個參數,AlexNet 包含了 6 億三千萬條連接,6000 萬個參數和 65 萬個神經元,其網絡結構包括 5 層卷積,其中第一、第二和第五層卷積後面連接了最大池化層,然後是 3 個全連接層。
  • 乾貨 TensorFlow之深入理解AlexNet
    前言前面看了一些Tensorflow的文檔和一些比較有意思的項目,發現這裡面水很深的,需要多花時間好好從頭了解下,尤其是cv這塊的東西,特別感興趣,接下來一段時間會開始深入了解ImageNet比賽中中獲得好成績的那些模型: AlexNet、GoogLeNet、VGG(對就是之前在nerual network用的pretrained的model
  • NLP中的詞向量對比:word2vec/glove/fastText/elmo/GPT/bert
    假如每個非葉子節點向左轉標記為1,向右轉標記為0,那麼每個單詞都具有唯一的從根節點到達該葉子節點的由{0 1}組成的代號(實際上為哈夫曼編碼,為哈夫曼樹,是帶權路徑長度最短的樹,哈夫曼樹保證了詞頻高的單詞的路徑短,詞頻相對低的單詞的路徑長,這種編碼方式很大程度減少了計算量)。CBOW中的目標函數是使條件概率
  • 谷歌NLP深度學習模型BERT特徵的可解釋性表現怎麼樣?
    如今,幾乎所有機器學習業內人士都能熟背「國王減去男人加上女人等於女王」這類箴言。目前,這些可解釋的詞嵌入已成為許多基於深度學習的 NLP 系統的重要部分。看上去,Google 又完成了驚人之舉:他們提出了一種新的學習上下文詞表徵的模型,該模型在 11 個 NLP 任務上都優化了當前最好結果,「甚至在最具挑戰性的問答任務上超過了人類的表現」。然而,這中間仍然存在著一個問題:這些上下文詞表示究竟編碼了什麼內容?這些特徵是否能像 Word2Vec 生成的詞嵌入那樣具有可解釋性?
  • 知乎熱議:深度學習領域,你心目中 idea 最驚豔的論文是哪篇?
    知乎熱議:深度學習領域,你心目中 idea 最驚豔的論文是哪篇?❝科研路上我們往往會讀到讓自己覺得想法很驚豔的論文,心中對不同的論文也會有一個排名。希望本問題下大家能分享自己心目中的排名,同時相互學習。拋磚引玉,我個人認為最驚豔的一篇論文是Hourglass作者的Associate Embedding(姿態識別)發表於NIPS 2017。
  • 三分鐘帶你讀懂 BERT
    Transformer算法使用編碼-解碼器網絡,但是,由於BERT是預訓練模型,它僅使用編碼來學習輸入文本中的潛在表達。MLM使得BERT能夠從文本中進行雙向學習,也就是說這種方式允許模型從單詞的前後單詞中學習其上下文關係。此前的模型這是做不到的。此前最優的算法稱為Generative Pre-training (GPT) 該方法採用了從左到右的訓練方式,另外ELMo 採用淺雙向學習(shallow bidirectionality)。
  • bert之我見-attention
    ,不知道bert的已經少之又少了,而bert的講解文章也已經有了很多,這裡我談一下我最近學習得到的理解。(風格依舊,不會重複別人寫過的東西)今天給大家談的是bert中的attention,通篇可能不會有太多篇幅對著bert講,而是把attention講懂,然後再去看bert中的attention幹了什麼,這樣大家能對bert中的attention,甚至整個注意力機制有更加深刻的理解。
  • 深度學習的學習歷程
    看來看去,感覺好像什麼都懂了,不就那些模塊嗎,conv、lstm、pooling、fc、drop out等等,這些模塊的公式早就能背得滾瓜爛熟。alexnet、vgg、googlenet、resnet等網絡就像樂高一樣,把這些模塊當積木一樣組合起來,好像也沒啥特別的。又好像什麼都不懂,學會這些模塊的公式就算會深度學習了嗎?
  • 深度 | 從AlexNet到殘差網絡,理解卷積神經網絡的不同架構
    這是深度學習背後的哲學,不存在內置硬編碼特徵提取器。它將提取和分類模塊整合進一個系統,它通過辨別不同圖像的表徵進行提取,根據監督數據進行分類。這樣的系統包括多層感知機,即多層神經元互相緊密相連的神經網絡。深度 vanilla 神經網絡就具備大量參數,因為缺乏充分的訓練樣本,它訓練出的系統會發生模型過擬合的情況。
  • BERT詳解:開創性自然語言處理框架的全面指南
    第三,BERT是一個「深度雙向」的模型。雙向意味著BERT在訓練階段從所選文本的左右上下文中汲取信息。模型的雙向性對於理解語言的真正意義很重要。來看一個例子,有兩句話,都涉及「bank」一詞:最後,也是BERT最令人印象深刻的一面。可以通過添加幾個額外的輸出層來進行微調,從而成為各種自然語言處理任務最頂尖的模型。2. 從Word2vec到BERT: 自然語言處理對學習語言表徵的探究「自然語言處理的最大挑戰之一是缺乏訓練數據。
  • 一文讀懂深度學習:從神經元到BERT
    今天,螞蟻金服財富對話算法團隊整理對比了深度學習模型在自然語言處理領域的發展歷程。從簡易的神經元到當前最複雜的BERT模型,深入淺出地介紹了深度學習在 NLP 領域進展,並結合工業界給出了未來的 NLP 的應用方向,相信讀完這篇文章,你對深度學習的整體脈絡會有更加深刻認識。一個神經網絡結構通常包含輸入層、隱藏層、輸出層。
  • 【深度度量學習系列】MSloss及GPW框架是什麼?
    一、背景度量學習(Metric Learning)也叫距離度量學習(Distance Metric Learning),是一種傳統的機器學習方法,隨著深度學習的興起,將深度學習結合在度量學習這種傳統方法上也逐漸成為一種趨勢,即Deep Metric Learning。本文將解讀一篇深度度量學習論文,從中可以看到一種通用的樣本對加權框架,及一種度量學習損失函數。
  • 文本挖掘從小白到精通(十六)--- 像使用scikit-learn一樣玩轉BERT
    基於此,本篇文章就來談談,如何通過繼承Sci-kit Learn中的兩個基類 --- TransformerMixin和BaseEstimator來實現一個高度定製化且易用的BERT特徵提取器。在NLP中獲得最先進的結果曾經是一項艱巨的任務。
  • 如何用 Python 和 BERT 做多標籤(multi-label)文本分類?
    它處理自然語言任務,靠的是遷移學習的威力。複習一下,我在《如何用 Python 和深度遷移學習做文本分類?》其原理就是首先讓一個深度神經網絡在海量文本上自監督學習(self-supervised learning)。