日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习算法简要综述(下)

發布時間:2023/12/10 pytorch 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习算法简要综述(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“算法猿的成長“,關注公眾號,選擇加“星標“或“置頂”

總第 124 篇文章,本文大約 3731 字,閱讀大約需要 10 分鐘

原文:https://theaisummer.com/Deep-Learning-Algorithms/

作者:Sergios Karagiannakos

因為文章有些長,所以會分成上下兩篇文章,分開發。

上一篇文章的鏈接:

深度學習算法簡要綜述(上)


本文目錄如下:

  • 深度學習是什么?

  • 神經網絡(Neural Networks)

  • 前向神經網絡(Feedforward Neural Networks, FNN)

  • 卷積神經網絡(Convolutional Neural Networks, CNN)

  • 循環神經網絡(Recurrent Neural Networks ,RNN)

  • 遞歸神經網絡(Recursive Neural Network )

  • 自動編碼器(AutoEncoders)

  • 深度信念網絡(Deep Belief Networks)和受限制玻爾茲曼機(Restricted Boltzmann Machines)

  • 生成對抗網絡(Generative Adversarial Networks)

  • Transformers

  • 圖神經網絡(Graph Neural Networks)

  • 基于深度學習的自然語言處理

    • 詞嵌入(Word Embedding)

    • 序列模型(Sequence Modeling)

    • 基于深度學習的計算機視覺

      • 定位和目標檢測(Localization and Object Detection)

      • Single shot detectors(SSD)

      • 語義分割(Semantic Segmentation)

      • 姿勢估計(Pose Estimation)

      上一篇文章介紹了前面 6 小節,從深度學習的定義到介紹了神經網絡、前向神經網絡、卷積神經網絡、循環神經網絡以及遞歸神經網絡,接下來會介紹剩余的幾個算法以及兩大應用方向。


      7. 自動編碼器(AutoEncoders)

      自動編碼器[11] 通常是作為一個非監督算法使用,并且主要應用在降維和壓縮。它們的技巧就是嘗試讓輸出等于輸入,另外,在其他工作中,也有嘗試重構數據的做法。

      自動編碼器包括一個編碼器和一個解碼器。編碼器接收一個輸入,然后將其編碼成一個低維的隱空間中的向量,然后解碼器負責將該向量進行解碼得到原始的輸入。結構如下圖所示:

      從上圖中我們可以知道,能從網絡中間的輸出(圖中 code 部分)得到一個更少維度的輸入的特征表示,這就是實現了降維和壓縮的工作。

      另外,也可以根據這個思路來重新得到略微有些不同的輸入數據,甚至是更好的數據,這可以用于訓練數據的增強,數據的去噪等

      8. 深度信念網絡(Deep Belief Networks)和受限制玻爾茲曼機(Restricted Boltzmann Machines)

      受限制玻爾茲曼機[12] 是帶有生成能力的隨機神經網絡,也就是它可以通過輸入來學習到一個概率分布。相比其他網絡,它的最大特點就是只有輸入和隱藏層,不包含輸出

      在訓練的前向部分,傳入一個輸入并產生一個對應的特征表示,然后在反向傳播中,則從這個特征表示重構原始的輸入(這個過程非常類似自動編碼器,但是它在單個網絡中實現的)。具體網絡結構如下圖所示:

      用于協同過濾的受限制玻爾茲曼機

      多個受限制玻爾茲曼機(RBMs)疊加在一起就可以組成一個深度信念網絡[13]。它們看起來和全連接層非常相似,但不同點在于訓練的方式。深度信念網絡的訓練是根據 RBMs 的訓練過程來以成對的方式訓練其網絡層。

      然而最近深度信念網絡和受限制玻爾茲曼機的使用者越來越少,因為出現了生成對抗網絡(GANs)以及變異的自動編碼器。

      9. 生成對抗網絡(Generative Adversarial Networks)

      生成對抗網絡[14]是在 2016 年由 Ian Goodfellow 提出的一個算法,它基于這樣一個簡單但優雅的想法:如果你想生成圖片數據,你會怎么做呢?

      做法可能是先創建兩個模型,首先訓練第一個模型來生成假的數據(生成器),然后訓練第二個模型來辨別真假數據(判別器),然后將它們放在一起訓練,從而相互競爭。

      隨著訓練,生成器會越來越擅長生成圖片數據,它的終極目標就是成功欺騙判別器。判別器則具有越來越強的辨別真假數據的能力,它的終極目標就是不會被欺騙。結果就是判別器會得到非常真實的假數據,網絡結構如下圖所示:

      生成對抗網絡的應用包括視頻游戲、天文學圖片,時尚等。基本上,只要是圖片數據,都可能會用到生成對抗網絡,比如非常有名的 Deep Fakes,才有的就是生成對抗網絡。

      10. Transformers

      Transformers [15] 也是一個非常新的算法,主要應用在語言類的應用,并且逐漸替代了循環神經網絡。它主要基于注意力(attention)機制,即強制讓網絡關注一個特定的數據點。

      相比于擁有復雜的 LSTM 單元,注意力機制是根據輸入數據不同部分的重要性來賦予權重。注意力機制[16]也是一種權重層,它的目的是通過調整權重來優先關注輸入的特定部分,而暫時不關注不重要的其他部分區域。

      Transformers 實際上包含了一些堆疊的編碼器(組成了編碼層),一些堆疊的解碼器(解碼層)以及很多注意力網絡層(self-attentions 和 encoder-decoder attentions),如下圖所示:

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

      Transformers 主要是用于解決有序序列數據,比如自然語言處理的一些任務,包括機器翻譯和文本摘要。目前 BERT 和 GPT-2 是兩個性能最好的預訓練自然語言系統,應用在很多的自然語言處理任務,它們也都是基于 Transformers 的。

      11. 圖神經網絡(Graph Neural Networks)

      一般來說非結構化的數據并不是非常適合使用深度學習的算法。實際上現實生活中確實有很多應用的數據都是非結構化的,然后以圖的格式組織起來的。比如社交網絡、化學混合物、知識圖譜、空間數據等。

      圖神經網絡[17]的目標就是建模圖數據,也就是可以識別到一個圖里結點之間的關系并生成一個數值型的表征數據,類似于一個嵌入向量(embedding)。因此,它們可以應用到其他的機器學習模型中,用于所有類型的任務,比如聚類、分類等。

      12. 基于深度學習的自然語言處理

      詞嵌入(Word Embedding)

      詞嵌入是通過將單詞轉成數值向量表示來獲取單詞之間的語義和語法的相似性。這個做法是很有必要的,因為神經網絡只能接受數值類型的數據,所以必須將單詞和文本編碼為數值。

      • Word2Vec [18] ?是最常用的一種方法,它嘗試學習嵌入向量(embedding)并且可以通過上下文預測當前的單詞(CBOW)或者是基于單詞來預測上下文的單詞(Skip-Gram)。實際上 Word2Vec 也是一個兩層的神經網絡,并且輸入和輸出都是單詞。單詞將通過獨熱編碼(one-hot encoding)的方式輸入到神經網絡中。在 CBOW 的例子中,輸入是相鄰的單詞,輸出是期望的單詞,而在 Skip-Gram 的例子中,輸入和輸出正好相反,輸入是單詞,輸出是上下文單詞。

      • Glove[19] 是另一種模型,它在 Word2Vec 的基礎上結合了矩陣分解的方法,比如隱藏語義分析(Latent Semantic Analysis),這是一個被證明在全局文本分析上效果很好,但不能捕捉到局部的上下文信息。通過結合Word2Vec 和矩陣分解,可以很好利用它們各自的優勢。

      • FastText[20] 是 Facebook 提出的算法,它采用字符級別的表示,而不是單詞。

      • 上下文單詞嵌入(Contextual Word Embeddings)通過采用循環神經網絡來替代 Word2Vec,用于預測一個序列中某個單詞的下一個單詞。這個方法可以捕捉到單詞之間的長期獨立性,并且每個向量都包含著當前單詞和歷史單詞的信息。最有名的一個版本是 ELMo[21],它是一個兩層雙向 LSTM 網絡。

      • 注意力機制[22] 和 Transformers 正如之前介紹 Transformers 所說,逐漸替代了 RNN 的作用,它們可以實現賦予最相關的單詞的權重,并遺忘掉不重要的單詞

      序列模型(Sequence Modeling)

      序列模型是自然語言處理中不可分割的一部分,因為它在大量常見的應用中都會出現,比如機器翻譯[23],語音識別,自動完成以及情感分類。序列模型可以處理序列輸入,比如一篇文檔的所有單詞。

      舉例說明一下,假設你想將一句話從英文翻譯為法文。

      為了實現這個翻譯,你需要一個序列模型(seq2seq)[24]。Seq2seq 模型包括一個編碼器和一個解碼器,編碼器將序列(本例子中的英語句子)作為輸入,然后將輸入在隱空間的表示作為輸出,這個表示會輸入到解碼器中,并輸出一個新的序列(也就是法語句子)。

      最常見的編碼器和解碼器結構是循環神經網絡(大部分是 LSTMs),因為它們非常擅長捕捉到長期獨立性,而 Transformers 模型會更快并且更容易實現并行化。有時候,還會結合卷積神經網絡來提升準確率。

      BERT[25] 和 GPT-2 [26] 被認為是目前最好的兩個語言模型,它們實際上都是基于序列模型的 Transformers

      13. 基于深度學習的計算機視覺

      定位和目標檢測(Localization and Object Detection)

      圖片定位[27] 是指在一張圖片中定位到一個物體,并且用一個邊界框將其進行標記的任務,而在目標檢測中還包括了對物體的分類工作。

      這幾個相關聯的工作都是通過一個基礎的模型(以及其升級版本)來進行處理,這個模型就是 RCNN。R-CNN以及它的升級版本 Fast RCNN,Faster RCNN 采用了候補區域(region proposals)和卷積神經網絡

      以 Faster RCNN 為例,網絡的一個外部系統會給出一些以固定大小的邊界框形式展現的候補區域,這些區域可能包含目標物體。這些邊界框會通過一個 CNN (比如 AlexNet)進行分類和糾正,從而判斷該區域是否包含物體,物體是什么類別,并且修正邊界框的大小。

      Single shot detectors(SSD)

      https://github.com/karolmajek/darknet-pjreddie

      Single-shot detectors 以及其最著名的代表成員-- YOLO(You Only Look Once)[28] 并沒有采用候補區域的想法,它們采用的是一組預定義好的邊界框

      這些邊界框會傳給 CNN 并分別預測得到一個置信度分數,同時檢測每個框居中的物體,并進行分類,最終會僅保留分數最高的一個邊界框。

      這些年,YOLO 也有了好幾個升級版本--YOLOv2,YOLOv3,YOLO900 分別在速度和準確率上都得到了提升。

      語義分割(Semantic Segmentation)

      計算機視覺中一個基礎的工作就是基于上下文來將一張圖片中每個像素都進行分類,也就是語義分割[29]。在這個領域里,最常用的兩個模型就是全卷積網絡(Fully Convolutional Networks, FCN)和 U-Nets。

      • **Fully Convolutional Networks(FCN)**是一個編碼器-解碼器的網絡結構,也就是包含了卷積和反卷積的網絡。編碼器先將輸入圖片進行下采樣來捕捉語義和上下文信息,而解碼器是進行上采樣操作來恢復空間信息。通過這種方法可以使用更小的時間和空間復雜度來實現恢復圖片的上下文。

      • U-Nets 是基于一個獨特的想法--跨層連接(skip-connections)。它的編碼器和解碼器有相同的大小,skip-connections 可以將信息從第一層傳遞到最后一層,從而增加了最終輸出的維度大小。

      姿勢估計(Pose Estimation)

      姿勢估計[30] 是指定位圖片或者視頻中人物的關節點,它可以是 2D 或者是 3D 的。在 2D 中,我們估計的就是每個關節點的坐標 (x, y),而 3D 中,坐標就是 (x, y, z)。

      PoseNet[31] 是該領域[31]中最常用的模型,它使用的也是卷積神經網絡。將圖片輸入到 CNN 中,然后采用單姿勢或者多姿勢算法來檢測姿勢,每個姿勢都會得到一個置信度分數和一些關鍵點坐標,最終是僅保留一個分數最高的。


      總結

      上述就是本文的所有內容,非常簡單的介紹了深度學習中幾個常用的算法模型,包括了卷積神經網絡、循環神經網絡、自動編碼器,也有最近幾年才提出的生成對抗網絡、Tranformers,另外也分別介紹了深度學習的兩大應用,自然語言處理和計算機視覺中常見的方向。

      當然,本文也僅僅是非常簡單的科普了這些算法和應用方向的情況,后續如果想繼續深入了解,可以查看參考的鏈接,會更詳細介紹每個具體的算法模型。


      參考

    • https://en.wikipedia.org/wiki/Deep_learning

    • http://karpathy.github.io/neuralnets/

    • https://brilliant.org/wiki/backpropagation/

    • https://ruder.io/optimizing-gradient-descent/

    • https://theaisummer.com/Neural_Network_from_scratch/

    • https://theaisummer.com/Neural_Network_from_scratch_part2/

    • https://theaisummer.com/Self_driving_cars/

    • https://theaisummer.com/Sign-Language-Recognition-with-PyTorch/

    • https://www.coursera.org/lecture/nlp-sequence-models/gated-recurrent-unit-gru-agZiL

    • https://theaisummer.com/Bitcon_prediction_LSTM/

    • https://theaisummer.com/Autoencoder/

    • https://towardsdatascience.com/restricted-boltzmann-machines-simplified-eab1e5878976

    • http://deeplearning.net/tutorial/DBN.html

    • https://theaisummer.com/Generative_Artificial_Intelligence/

    • https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

    • https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html

    • https://theaisummer.com/Graph_Neural_Networks/

    • https://pathmind.com/wiki/word2vec

    • https://medium.com/@jonathan_hui/nlp-word-embedding-glove-5e7f523999f6

    • https://research.fb.com/blog/2016/08/fasttext/

    • https://allennlp.org/elmo

    • https://blog.floydhub.com/attention-mechanism/

    • https://www.tensorflow.org/tutorials/text/nmt_with_attention

    • https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html

    • https://github.com/google-research/bert

    • https://openai.com/blog/better-language-models/

    • https://theaisummer.com/Localization_and_Object_Detection/

    • https://theaisummer.com/YOLO/

    • https://theaisummer.com/Semantic_Segmentation/

    • https://theaisummer.com/Human-Pose-Estimation/

    • https://github.com/tensorflow/tfjs-models/tree/master/posenet

    • https://www.fritz.ai/pose-estimation/


    • 精選AI文章

      1.?RS(1)--10分鐘了解什么是推薦系統

      2.RS(2)--從文本數據到用戶畫像

      3.深度學習算法簡要綜述(上)

      4.常見的數據增強項目和論文介紹

      5.實戰|手把手教你訓練一個基于Keras的多標簽圖像分類器

      精選python文章

      1.?Python 基礎入門--簡介和環境配置

      2.?python版代碼整潔之道

      3.?快速入門 Jupyter notebook

      4.?Jupyter 進階教程

      5.?10個高效的pandas技巧

      精選教程資源文章

      1.?[資源分享] TensorFlow 官方中文版教程來了

      2.?[資源]推薦一些Python書籍和教程,入門和進階的都有!

      3.?[Github項目推薦] 推薦三個助你更好利用Github的工具

      4.?Github上的各大高校資料以及國外公開課視頻

      5.?GitHub上有哪些比較好的計算機視覺/機器視覺的項目?

      歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

      ?

      如果覺得不錯,在看、轉發就是對小編的一個支持!

    總結

    以上是生活随笔為你收集整理的深度学习算法简要综述(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。