最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Seq2Seq從理論到實戰(zhàn)【理論篇】

2023-05-25 11:45 作者:深度之眼官方賬號  | 我要投稿

來源:投稿 作者:175
編輯:學(xué)姐

引言

本著“凡我不能創(chuàng)造的,我就不能理解”的思想,本系列文章會基于純Python以及NumPy從零創(chuàng)建自己的深度學(xué)習(xí)框架,該框架類似PyTorch能實現(xiàn)自動求導(dǎo)。

要深入理解深度學(xué)習(xí),從零開始創(chuàng)建的經(jīng)驗非常重要,從自己可以理解的角度出發(fā),盡量不使用外部完備的框架前提下,實現(xiàn)我們想要的模型。本系列文章的宗旨就是通過這樣的過程,讓大家切實掌握深度學(xué)習(xí)底層實現(xiàn),而不是僅做一個調(diào)包俠。

本文介紹seq2seq模型,由論文Sequence to Sequence Learning with Neural Networks提出,能解決輸入和輸出序列長度不等的任務(wù)——機器翻譯、自動摘要、自動問答等。

Seq2Seq

Seq2Seq網(wǎng)絡(luò)即sequence to sequence,序列到序列網(wǎng)絡(luò),輸入一個序列,輸出另一個序列。這個架構(gòu)重要之處在于,輸入序列和輸出序列的長度是可變的。

Seq2Seq使用的具體方法基本都屬于編碼器-解碼器模型。

其核心思想是通過編碼器(Encoder)將輸入序列編碼成一個定長的向量表示,也稱為具有上下文信息的表示,簡稱為上下文(context)。然后將上下文向量喂給解碼器(Decoder),來生成任務(wù)相關(guān)的輸出序列。

總結(jié)一下,編碼器-解碼器架構(gòu)包含三個組件:

  • 編碼器接收一個輸入序列,x_1%5En,然后生成對應(yīng)的上下文表示,h_1%5En。常用于編碼器的網(wǎng)絡(luò)可以為RNN、CNN或Transformer等。

  • 上下文向量c,由一個函數(shù)基于h_1%5En生成,傳遞輸入的核心信息到解碼器。

  • 解碼器接收c作為輸入,然后生成一個任意長度的隱藏狀態(tài)序列h_1%5Em,從中可以得到對應(yīng)的輸出y_1%5Em。和編碼器一樣,也有多種實現(xiàn)方案。

基于RNN實現(xiàn)編碼器-解碼器

[翻譯]Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation使用RNN作為編碼器和解碼器實現(xiàn)機器翻譯。

我們本小節(jié)來看如何通過RNN來實現(xiàn)編碼器-解碼器網(wǎng)絡(luò)。

實際上會有兩個不同的RNN網(wǎng)絡(luò),一個作為編碼器,將變長的輸入序列轉(zhuǎn)換為定長的編碼(上下文向量);另一個作為解碼器,通過該上下文向量連續(xù)生成輸出序列,基于輸入序列的編碼信息和輸出序列已經(jīng)生成的單詞來預(yù)測一下單詞。上圖演示了如何在機器翻譯中使用兩個RNN進行序列號序列學(xué)習(xí)。

這里有兩個特殊單詞<eos><bos>,分別表示序列結(jié)束和開始標志。

還有一種方式,如上圖,我們只需要在輸入末尾添加<EOS>,比如這里有輸入序列A B C <EOS>。我們將輸入序列傳入模型后,將其映射為序列W X Y Z <EOS>作為輸出。

回顧RNN語言模型計算序列y的概率p(y):

編碼器的目標是生成一個輸入的上下文表示,體現(xiàn)在編碼器最后的那個隱藏狀態(tài),h%5Ee_n,也用c來表示,代表上下文。

在時刻t,將前面的t-1個單詞輸入到語言模型,通過前向推理生成隱藏狀態(tài)序列,并且以最后一個單詞的隱藏狀態(tài)作為起點來生成下一個單詞。


但是,這種方法有一個弱點是,隨著輸出序列的生成,上下文向量c的影響將逐漸減弱。一種常用的解決方法是讓解碼過程的每個時刻都能看到上下文向量c:

參考

Dive Into Deep Learning

Speech and Language Processing

關(guān)注“學(xué)姐帶你玩AI”公眾號

回復(fù)“深度學(xué)習(xí)”免費領(lǐng)取必讀電子書+課件

學(xué)起來學(xué)起來!

Seq2Seq從理論到實戰(zhàn)【理論篇】的評論 (共 條)

分享到微博請遵守國家法律
扎赉特旗| 兰考县| 沙雅县| 正蓝旗| 安新县| 卓尼县| 武平县| 凉山| 江陵县| 东源县| 永年县| 蓬溪县| 西贡区| 博白县| 昭觉县| 重庆市| 尖扎县| 仙游县| 双流县| 扬中市| 昂仁县| 大荔县| 澄迈县| 瓦房店市| 长沙县| 太仆寺旗| 丰顺县| 静乐县| 盐源县| 华池县| 历史| 达日县| 博野县| 绥滨县| 普陀区| 水城县| 阿巴嘎旗| 巨鹿县| 枣强县| 抚顺县| 西华县|