【綜述專欄】系統了解Encoder-Decoder 和 Seq2Seq及其關鍵技術

2021-12-10 人工智慧前沿講習

收錄於話題 #綜述專欄 170個內容

在科學研究中,從方法論上來講,都應「先見森林,再見樹木」。當前,人工智慧學術研究方興未艾,技術迅猛發展,可謂萬木爭榮,日新月異。對於AI從業者來說,在廣袤的知識森林中,系統梳理脈絡,才能更好地把握趨勢。為此,我們精選國內外優秀的綜述文章,開闢「綜述專欄」,敬請關注。

地址:https://zhuanlan.zhihu.com/p/114933655Encoder-Decoder 模型主要是 NLP 領域裡的概念。它並不特值某種具體的算法,而是一類算法的統稱,只要是符合上面的框架的算法,都可以統稱為 Encoder-Decoder 模型。Encoder-Decoder 的通用的框架如上。
Encoder 又稱作編碼器。它的作用就是「將現實問題轉化為數學問題」
Decoder 又稱作解碼器,他的作用是「求解數學問題,並轉化為現實世界的解決方案」Encoder-Decoder 這個框架很好的詮釋了機器學習的核心思路:將現實問題轉化為數學問題,通過求解數學問題,從而解決現實問題。

其中需要注意的是:

1. 不論輸入和輸出的長度是什麼,中間的向量 C長度都是固定的,這顯然存在丟失信息的可能性,一般輸入信息太長時會導致信息丟失。2. 根據不同的任務可以選擇不同的編碼器和解碼器,Encoder-Decoder可以是RNN、LSTM、GRU。Seq2Seq(是 Sequence-to-sequence 的縮寫),就如字面意思,輸入一個序列,輸出另一個序列。這種結構最重要的地方在於輸入序列和輸出序列的長度是可變的。Seq2Seq也不特指具體方法,滿足「輸入序列、輸出序列」的目的,都可以統稱為 Seq2Seq 模型。Encoder-Decoder 和 Seq2Seq的區別:1、Seq2seq是應用層的概念,即序列到序列,強調應用場景。
2、Encoder-decoder是網絡架構層面的概念,是現在主流框架,特指同時具有encoder模塊和decode模塊的結構。
3、encoder-decoder模型是一種應用於seq2seq問題的模型。
4、目前,Seq2Seq 使用的具體方法基本都屬於Encoder-Decoder 模型的範疇Seq2Seq模型在機器翻譯,語音識別,文本摘要,問答系統等領域取得了巨大的成功,其中包含著很多非常經典的關鍵技術。下面不分析關鍵技術的論文,只對其簡單介紹,並附上論文地址。attention機制的本質是從人類視覺注意力機制中獲得靈感。大致是我們視覺在感知東西的時候,一般不會是一個場景從到頭看到尾每次全部都看,而往往是根據需求觀察注意特定的一部分。
TensorFlow.contrib.seq2seq裡面的兩種attention機制。原始論文:https://arxiv.org/pdf/1409.0473.pdf對應tf.contrib.seq2seq.BahdanauAttention後面論文:https://arxiv.org/pdf/1508.04025.pdf對應tf.contrib.seq2seq.LuongAttention目的是為了解決OOV的問題,在自然語言處理或者文本處理的時候,我們通常會有一個字詞庫(vocabulary)。這個vocabulary要麼是提前加載的,或者是自己定義的,或者是從當前數據集提取的。假設之後你有了另一個的數據集,這個數據集中有一些詞並不在你現有的vocabulary裡,我們就說這些詞彙是Out-of-vocabulary,簡稱OOV。
論文原文:Incorporating Copying Mechanism in Sequence-to-Sequence Learninghttps://arxiv.org/abs/1603.06393

3、Sequential Copying Networks

原先的CopyNet(Copy Mechanism)每次copy一個詞,這篇文章一次可以copy多個詞(詞組),通過給每個copy的詞打標籤來判斷是否結束。
論文原文:Sequential Copying Networkshttps://arxiv.org/abs/1807.02301v1scheduled sampling翻譯成「計劃採樣」, 用於解決exposure bias問題。傳統的神經網絡訓練時和預測時的輸入不一樣,當在某一步做出一個錯誤選擇後,後面可能會產生累積錯誤。論文原文:Scheduled Sampling for Sequence Prediction with Recurrent Neural Networkshttps://proceedings.neurips.cc/paper/2015/file/e995f98d56967d946471af29d7bf99f1-Paper.pdf

5、Self-critical sequence training

針對圖像描述(Image Caption)的問題。論文原文:Self-critical Sequence Training for Image Captioninghttps://arxiv.org/abs/1612.00563Beam Search算法是以較少的代價在相對受限的搜索空間中找出其最優解,得出的解接近於整個搜索空間中的最優解。Beam Search算法一般分為兩部分:路徑搜索:是指在受限空間中檢索出所有路徑。路徑打分:是指對某一條路徑進行評估打分。論文原文:Sequence-to-Sequence Learning as Beam-Search Optimization.https://arxiv.org/abs/1606.02960解決seq2seq模型生成句子中經常有重複片段的現象。論文原文:Get To The Point: Summarization with Pointer-Generator Networkshttps://arxiv.org/pdf/1704.04368.pdf註:如果上面的論文連結不能打開,可以Google學術搜索論文。認為文章有價值的同學,歡迎關注我的專欄,跟蹤搜尋引擎、推薦系統等機器學習領域前沿。https://zhuanlan.zhihu.com/c_1218177030141050880https://easyai.tech/ai-definition/encoder-decoder-seq2seq/https://blog.csdn.net/appleml/article/details/87929579https://blog.csdn.net/thormas1996/article/details/81536977https://zhuanlan.zhihu.com/p/47929039

本文目的在於學術交流,並不代表本公眾號贊同其觀點或對其內容真實性負責,版權歸原作者所有,如有侵權請告知刪除。

分享、點讚、在看,給個三連擊唄!

相關焦點

  • 十分鐘掌握Keras實現RNN的seq2seq學習
    很多人問這個問題:如何在Keras中實現RNN序列到序列(seq2seq)學習?本文將對此做一個簡單的介紹。序列到序列學習(seq2seq)是一種把序列從一個域(例如英語中的句子)轉換為另一個域中的序列(例如把相同的句子翻譯成法語)的模型訓練方法。
  • tensorflow源碼解析之seq2seq.py文件(上)
    現在正式開始研究tensorflow源碼,由於要參加之後的京東對話系統挑戰賽,因此就從nlp部分的seq2seq開始。這裡使用的tensorflow版本為1.2.1。2、*全部的序列模型包括:-basic_rnn_seq2seq:#最簡單版本,輸入和輸出都是embedding的形式;最後一步的state vector#作為decoder的initial state;encoder和decoder用相同的RNN cell, #但不共享權值參數;-tied_rnn_seq2seq:#同basic_rnn_seq2seq
  • Abstractive Text Summarization using Seq2Seq RNNs and Beyond
    同時,本文還提出多種模型來研究自動文摘中的重要問題,比如對關鍵詞進行建模,並且得出詞對於文檔研究起關鍵作用的結論。研究結果表明本文的解決方案在性能上有很大的提升,另外,還貢獻了一個包括多句子文摘的數據集和基準。
  • seq2seq 的 keras 實現
    seq2seq 的 keras 實現接下來討論如何用 keras 建立 seq2seq。當然,我們可以直接用 keras 的 seq2seq 模型:https://github.com/farizrahman4u/seq2seq下面是幾個例子:簡單的 seq2seq 模型:import seq2seqfrom seq2seq.models import SimpleSeq2Seqmodel = SimpleSeq2Seq
  • 直觀理解並使用Tensorflow實現Seq2Seq模型的注意機制
    採用帶注意機制的序列序列結構進行英印地語神經機器翻譯Seq2seq模型構成了機器翻譯、圖像和視頻字幕、文本摘要、聊天機器人以及任何你可能想到的包括從一個數據序列到另一個數據序列轉換的任務的基礎。如果您曾使用過谷歌Translate,或與Siri、Alexa或谷歌Assistant進行過互動,那麼你就是序列對序列(seq2seq)神經結構的受益者。我們這裡的重點是機器翻譯,基本上就是把一個句子x從一種語言翻譯成另一種語言的句子y。機器翻譯是seq2seq模型的主要用例,注意機制對機器翻譯進行了改進。
  • pytorch編程之基於注意力機制的 seq2seq 神經網絡翻譯
    )(如果您以前是 Lua Torch 用戶)了解序列到序列網絡及其工作方式也將很有用:您還將找到先前的 NLP 從零開始:使用字符級 RNN 對名稱進行分類的教程,以及 NLP 從零開始:使用字符級 RNN 生成名稱的指南,因為這些概念是有用的 分別與編碼器和解碼器模型非常相似。
  • 基於seq2seq模型的中文糾錯任務
    深度學習近來在自然語言處理領域獲得了 廣泛運用,seq2seq 模型在諸多自然語言處理任務,如詞性標註、語義依存分析、 機器翻譯等,均取得了顯著的成績。獲取上下文語意信 息的一種比較好的方式是通過 RNN 來學習,故而本項目選用 seq2seq 框架(兩組 RNN 分別構成 encoder 和 decoder,作為 encoder 的 RNN 學習句子語意表示)來 進行處理。此外,項目缺少可靠的數據來源,中文領域可利用的糾錯數據有限,如何有 效的構造大量訓練數據也成了本項目的一個關注點。
  • python用於NLP的seq2seq模型實例:用Keras實現神經機器翻譯
    我們將使用seq2seq通過Python的Keras庫創建我們的語言翻譯模型。假定您對循環神經網絡(尤其是LSTM)有很好的了解。本文中的代碼是使用Keras庫用Python編寫的。  數據預處理神經機器翻譯模型通常基於seq2seq架構。seq2seq體系結構是一種編碼-解碼體系結構,由兩個LSTM網絡組成:編碼LSTM和解碼LSTM。 在我們的數據集中,我們不需要處理輸入,但是,我們需要生成翻譯後的句子的兩個副本:一個帶有句子開始標記,另一個帶有句子結束標記。
  • 玩轉Keras之Seq2Seq自動生成標題 | 附開原始碼
    要自己實現 Seq2Seq,關鍵是搞懂 Seq2Seq 的原理和架構,一旦弄清楚了,其實不管哪個框架實現起來都不複雜。早期有一個第三方實現的 Keras 的 Seq2Seq 庫 [1],現在作者也已經放棄更新了,也許就是覺得這麼簡單的事情沒必要再建一個庫了吧。
  • 【乾貨】seq2seq模型實例:用Keras實現機器翻譯
    作者通過一個seq2seq編碼器-解碼器網絡實現英語到法語的自動翻譯。作者在博文中詳細介紹了自己的模型架構和訓練數據,並使用代碼片段分步驟對訓練過程進行講解。總之,這是一篇比較詳盡的機器翻譯應用示例教程,如果你有從事機器翻譯或seq2seq模型相關的研究,可以詳細閱讀一下,相信一定對您的工程和理論都有所幫助。專知內容組編輯整理。
  • 從Seq2seq到Attention模型到Self Attention(二)
    到Attention模型到Self Attention(一)——作者:Bgg——系列一介紹了Seq2seq和 Attention model。「The transformer」和Seq2seq模型皆包含兩部分:Encoder和Decoder。
  • Seq2seq框架下的文本生成
    前言文本生成,旨在利用NLP技術,根據給定信息產生特定目標的文本序列,應用場景眾多,並可以通過調整語料讓相似的模型框架適應不同應用場景。本文重點圍繞Encoder-Decoder結構,列舉一些以文本摘要生成或QA系統文本生成為實驗場景的技術進展。
  • IBM、哈佛聯合提出Seq2Seq-Vis:機器翻譯模型的可視化調試工具
    例如,之前由於 seq2seq 翻譯系統將「早上好」錯誤的翻譯為了「攻擊他們」,導致錯誤的逮捕事故。深度學習模型的不可解釋性更是普遍存在的問題。基於注意力的 sequence-to-sequence models (seq2seq) [3, 49],通常也稱為編碼器-解碼器(encoder-decoder)模型,就是這一趨勢的範例。在很多諸如機器翻譯、自然語言生成、圖像描述以及總結的應用場景中,seq2Seq 模型都表現出了當前最優的效果。最新研究表明,這些模型能夠在特定的重要場景下,實現人類級別的機器翻譯效果。
  • 模型匯總17 基於Depthwise Separable Convolutions的Seq2Seq模型_SliceNet原理解析
    基於RNN(LSTM、GRU)的Seq2Seq模型在自然語言處理領域取得了巨大成功,特別是對機器翻譯領域,神經機器翻譯(NMT)已經完全替代了以前的統計(SMT)。但基於RNN的Seq2Seq有2個致命缺點:    1、基於sequence中t-i的context計算t時刻估計,不適合併行計算,因此計算效率低。
  • 突破2.4kstar!一個Seq2seq模型的Pytorch實現庫
    機器學習算法與自然語言處理出品@公眾號原創專欄作者 憶臻
  • 專題 自然語言處理學習筆記(二):encoder-decoder框架和attention mechanism兩種研究
    Abstractive是一個True AI的方法,要求系統理解文檔所表達的意思,然後用可讀性強的人類語言將其簡練地總結出來。這裡包含這麼幾個難點:1、理解文檔。所謂理解,和人類閱讀一篇文章一樣,可以說明白文檔的中心思想,涉及到的話題等等。2、可讀性強。
  • 谷歌開源神經機器翻譯技術,推出tf-seq2seq框架
    陳樺 編譯自 Google官方博客量子位 報導 | 公眾號 QbitAI谷歌研究軟體工程師、谷歌大腦團隊成員Anna Goldie和Denny Britz今天撰文,宣布在「谷歌神經機器翻譯」的基礎上推出開源框架tf-seq2seq,給外部研究人員提供幫助。
  • 深度學習第51講:自編碼器(AutoEncoder)及其keras實現
    自編碼器在適當的維度和係數約束下可以學習到比PCA等技術更有意義的數據映射。自編碼器的keras實現     原始的自編碼器實現起來非常容易,我們來看一下如何使用keras來實現一個簡易的自編碼器。)encoded_input = Input(shape=(encoding_dim,))decoder_layer = autoencoder.layers[-1]decoder = Model(input=encoded_input, output=decoder_layer(encoded_input))對自編碼器模型進行編譯並使用mnist數據進行訓練:
  • 谷歌開放GNMT教程:如何使用TensorFlow構建自己的神經機器翻譯系統
    在機器翻譯的眾多方法中,序列到序列(sequence-to-sequence,seq2seq)模型 [1, 2] 近期獲得巨大成功。由於其可以使用深度神經網絡獲取句義,該模型成為谷歌翻譯等多數商業翻譯系統事實上的標準模型。但是,儘管有關 OpenNMT 或 tf-seq2seq 等 seq2seq 模型的資料已經非常豐富,但能夠指導人們快速構建高質量翻譯系統的知識和技能仍然略顯不足。
  • 經典Seq2Seq與注意力Seq2Seq模型結構詳解
    注意力機制什麼是Seq2Seq模型?在Seq2seq模型中,神經機器翻譯以單詞序列的形式接收輸入,並生成一個單詞序列作為輸出。例如,義大利語的「Cosa vorresti ordinare?」時間步驟#2:單詞「attento」被發送到編碼器編碼器根據其輸入和之前的輸入更新其隱藏狀態(h2)。