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

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

62 序列到序列學(xué)習(xí)(seq2seq)【動(dòng)手學(xué)深度學(xué)習(xí)v2】

2022-11-08 20:21 作者:如果我是泡橘子  | 我要投稿

序列到序列學(xué)習(xí)(seq2seq)



  • 上圖展示的是 DNA 轉(zhuǎn)錄,它也是一種序列到序列的學(xué)習(xí)



機(jī)器翻譯

  • seq2seq 最早是用來做機(jī)器翻譯的,給定一個(gè)源句子,自動(dòng)翻譯成目標(biāo)語言
  • 給定一個(gè)源語言的句子,自動(dòng)翻譯成目標(biāo)語言
  • 機(jī)器翻譯中的輸入序列和輸出序列都是長度可變





seq2seq

編碼器-解碼器(encoder-decoder)架構(gòu)

  • seq2seq 指的是一個(gè)特定的模型,它的編碼器是一個(gè) RNN(循環(huán)神經(jīng)網(wǎng)絡(luò)),使用長度可變的序列作為輸入,將其轉(zhuǎn)換為固定形狀的隱狀態(tài);然后將最終的隱藏狀態(tài)傳給解碼器,隱藏狀態(tài)包括了整個(gè)源句子(輸入序列)的信息;解碼器使用另外一個(gè) RNN ,基于輸入序列的編碼信息和輸出序列已經(jīng)看見的或者生成的詞元來預(yù)測下一個(gè)詞元,從而連續(xù)生成輸出序列的詞元
  • 編碼器將長度可變的輸入序列轉(zhuǎn)換成形狀固定的上下文變量,并且將輸入序列的信息在該上下文變量中進(jìn)行編碼
  • 編碼器可以是單向的循環(huán)神經(jīng)網(wǎng)絡(luò),其中的隱藏狀態(tài)只依賴于輸入子序列,這個(gè)子序列是由輸入序列的開始位置到隱藏狀態(tài)所在的時(shí)間步的位置(包括隱藏狀態(tài)所在的時(shí)間步)組成
  • 編碼器也可以是雙向的循環(huán)神經(jīng)網(wǎng)絡(luò),其中隱藏狀態(tài)依賴于兩個(gè)輸入子序列,兩個(gè)子序列是由隱藏狀態(tài)所在的時(shí)間步的位置之前的序列和之后的序列(包含隱藏狀態(tài)所在的時(shí)間步),因此隱藏狀態(tài)對(duì)整個(gè)序列的信息都進(jìn)行了編碼。雙向不能做語言模型,但是雙向可以做翻譯;雙向可以做編碼器,但不能做解碼器,解碼器需要做預(yù)測,編碼器不需要
  • <bos> 表示序列開始詞元,代表一個(gè)句子的開始,它是解碼器的輸入序列的第一個(gè)詞元
  • <eos> 表示序列結(jié)束詞元,代表一個(gè)句子的結(jié)束(解碼器輸出的句子長度是可以變化的,一旦輸出序列生成此詞元,模型就會(huì)停止預(yù)測)
  • RNN 做編碼器可以輸入任意長度的序列,最后返回最后時(shí)刻的隱藏狀態(tài),使用 RNN 編碼器最終的隱狀態(tài)來初始化解碼器的隱狀態(tài),解碼器一直輸出,直到看到句子的結(jié)束標(biāo)志為止
  • seq2seq 也可以做可變長度到可變長度的句子之間的翻譯

隱藏狀態(tài)是怎么傳遞的?

?
Seq2Seq P1 - 04:44
?

  • 編碼器是沒有輸出的 RNN
  • 編碼器最后時(shí)間步的隱藏狀態(tài)作為解碼器的初始隱藏狀態(tài)





訓(xùn)練

  • 訓(xùn)練時(shí)將特定的開始詞元(“<bos>”)和原始的輸出序列(不包括序列結(jié)束詞元“<eos>”)拼接在一起作為解碼器的輸入,這也稱為強(qiáng)制教學(xué)(teacher forcing,因?yàn)樵嫉妮敵鲂蛄校ㄔ~元的標(biāo)簽)被送入了解碼器)
  • 也可以將來自上一個(gè)時(shí)間步的預(yù)測得到的詞元作為解碼器的當(dāng)前輸入
  • 訓(xùn)練和推理是不同的:編碼器是相同的,但是在訓(xùn)練的時(shí)候,解碼器是知道目標(biāo)句子的,它知道真正的翻譯是什么樣子的,所以解碼器的輸入(每個(gè) RNN 時(shí)刻的輸出)所使用的實(shí)際上是真正的目標(biāo)句子的輸入,所以就算是在訓(xùn)練的時(shí)候翻譯錯(cuò)了,下一個(gè)時(shí)刻的輸入還是正確的輸入,也就是說,在訓(xùn)練的時(shí)候所使用的是真正的目標(biāo)句子來幫助訓(xùn)練,這樣就降低了預(yù)測長句子的難度





推理

  • 推理的時(shí)候沒有真正的目標(biāo)句子作為參考,每一個(gè)時(shí)刻只能將上一個(gè)時(shí)刻的輸出作為這一時(shí)刻的輸入,以此來不斷地進(jìn)行預(yù)測,即每個(gè)解碼器當(dāng)前時(shí)間步的輸入都來自前一個(gè)時(shí)間步的預(yù)測詞元,因此能夠一個(gè)詞元接一個(gè)詞元地預(yù)測輸出序列
  • 和訓(xùn)練類似,序列開始詞元(“<bos>”)在初始時(shí)間步就被輸入到了解碼器中
  • 當(dāng)輸出序列的預(yù)測遇到序列結(jié)束詞元(“<eos>”)時(shí),預(yù)測就結(jié)束了





BLEU(bilingual evaluation understudy)

  • 可以通過與真實(shí)標(biāo)簽序列進(jìn)行比較來評(píng)估預(yù)測序列
  • BLEU 最先是用于評(píng)估機(jī)器翻譯的結(jié)果,但是它已經(jīng)被廣泛用于測量許多應(yīng)用的輸出序列的質(zhì)量
  • 原則上說,對(duì)于預(yù)測序列中的任意 n 元語法(n-grams),BLEU 的評(píng)估都是這個(gè) n 元語法是否出現(xiàn)在標(biāo)簽序列中
  • BLEU 的值越大越好,最大值為 1 ,越小的話效果越差

BLEU的定義

1、pn 表示 n-grams 的精度,它是兩個(gè)數(shù)量的比值:第一個(gè)是預(yù)測序列與標(biāo)簽序列中匹配的 n 元語法的數(shù)量,第二個(gè)是預(yù)測序列中 n 元語法的數(shù)量的比率

?
Seq2Seq P1 - 08:14
?

  • p1:考慮預(yù)測序列中所有的 1-gram,有 5 個(gè) 1-gram,即 A、B、B、C、D,所以分母為 5 ;再考慮這 5 個(gè) 1-gram ,是不是每一個(gè) 1-gram 都在標(biāo)簽序列中出現(xiàn)過(預(yù)測序列中除了第二個(gè) B 并沒有出現(xiàn),因?yàn)樵跇?biāo)簽序列中 B 只出現(xiàn)了一次,其它都出現(xiàn)了,所以 p1 = 4/5)
  • p2:考慮預(yù)測序列中所有的 2-gram,有 4 個(gè) 2-gram,即AB、BB、BC、CD,所以分母為 4 ;再考慮這 4 個(gè) 2-gram ,是不是每一個(gè) 2-gram 都在標(biāo)簽序列中出現(xiàn)過(預(yù)測序列中除了第二個(gè) BB 并沒有出現(xiàn),因?yàn)樵跇?biāo)簽序列中 B 只出現(xiàn)了一次,其它都出現(xiàn)了,所以 p2 = 3/4)
  • p3:考慮預(yù)測序列中所有的 3-gram,有 3 個(gè) 3-gram,即ABB、BBC、BCD,所以分母為 3 ;再考慮這 3 個(gè) 3-gram ,是不是每一個(gè) 3-gram 都在標(biāo)簽序列中出現(xiàn)過(預(yù)測序列中只有 BCD 在標(biāo)簽序列中出現(xiàn)了一次,其它都沒有出現(xiàn)了,所以 p3 = 1/3)
  • p4:考慮預(yù)測序列中所有的 4-gram,有 2 個(gè) 4-gram,即ABBC、BBCD,所以分母為 2 ;再考慮這 2 個(gè) 4-gram ,是不是每一個(gè) 4-gram 都在標(biāo)簽序列中出現(xiàn)過(預(yù)測序列中所有的 4-gram 都沒有在標(biāo)簽序列中出現(xiàn)過,所以 p4 = 0/2)

2、len(label)、len(pred) 分別表示標(biāo)簽序列中的詞元數(shù)預(yù)測序列中的詞元數(shù),兩個(gè)序列的詞元數(shù)可以是不一樣的

  • 如果預(yù)測的長度比標(biāo)簽(真實(shí))的長度少很多的話,len(label)/len(pred) 就會(huì)大于 1 ,整個(gè)指數(shù)項(xiàng)就會(huì)變成一個(gè)很小的數(shù)
  • 所以說真實(shí)的標(biāo)簽很長,預(yù)測的長度很短的話,會(huì)導(dǎo)致前面的指數(shù)項(xiàng)比較小,因?yàn)轭A(yù)測的長度很短的話,就會(huì)越容易命中真實(shí)的標(biāo)簽,所以前半部分的指數(shù)項(xiàng)是為了懲罰較短的預(yù)測序列,防止預(yù)測的長度過短

3、pn 都是一個(gè)小于等于 1 的數(shù),當(dāng)預(yù)測序列和標(biāo)簽序列完全相同時(shí),BLEU 為 1

  • 由于 n 元語法越長則匹配難度越大,所以 BLEU 為更長的 n 元語法的精確度分配了更大的權(quán)重





總結(jié)

1、Seq2Seq 從一個(gè)句子生成另一個(gè)句子,機(jī)器翻譯算是其中的一個(gè)應(yīng)用場景

2、Seq2Seq 使用的是編碼器-解碼器的架構(gòu),編碼器和解碼器都是 RNN

3、將編碼器最后時(shí)間隱藏狀態(tài)來初始解碼器隱狀態(tài)來完成信息傳遞

4、在“編碼器-解碼器”訓(xùn)練中,強(qiáng)制教學(xué)方法將原始輸出序列(而非預(yù)測結(jié)果)輸入到解碼器中

5、BLEU 是一種常用的評(píng)估方法,它通過測量預(yù)測序列和標(biāo)簽序列之間的 n 元語法的匹配度來衡量生成預(yù)測序列的好壞





Q&A

  • 1、請(qǐng)問老師 PPT 里面的圖是怎么制作的,直接在 PPT 里面畫的,還是有其它一些工具,可以介紹一下嗎,比如之前的 GRU 里面的各種門的解釋圖咋畫的?
  • ?
    QA P3 - 00:00
    ?
  • 2、請(qǐng)問老師,encoder 輸出和 decoder 的輸入,拼接和按位相加起來有什么區(qū)別嗎?
  • ?
    QA P3 - 00:46
    ?
  • 3、embedding 層是做 word2vec 嗎?
  • ?
    QA P3 - 01:12
    ?
  • 4、encoder 的 output 和 decoder 的 output 是不是都是預(yù)測的詞?encoder 的 output 是預(yù)測的英語沒有使用,decoder 的 ouput 是預(yù)測的法語?
  • ?
    QA P3 - 01:39
    ?
  • 5、請(qǐng)問 valid length 是怎么選擇的?Y_valid_len 是什么?
  • ?
    QA P3 - 02:23
    ?
  • 6、num_hiddens=32 為什么這么定義呢?
  • ?
    QA P3 - 02:59
    ?
  • 7、老師,現(xiàn)在 seq2seq 好像都用 transformer 實(shí)現(xiàn)了。RNN/LSTM 還有什么使用場景嗎?
  • ?
    QA P3 - 03:11
    ?
  • 8、老師,我 bert、xlnet 這些模型都學(xué)過了,但是完全不知道 kaggle 該如何做,例如 ber 任務(wù)、信息抽取任務(wù)或者聊天機(jī)器人任務(wù)等,請(qǐng)問這是為什么,該如何入門呢?
  • ?
    QA P3 - 04:55
    ?
  • 9、實(shí)際句子的長度超過了設(shè)定的句子長度,是直接截掉不用了還是放到下一個(gè)句子?
  • ?
    QA P3 - 06:05
    ?
  • 10、請(qǐng)問老師,decoder 的輸入和最終預(yù)測的輸出一定是同一個(gè)東西嗎?還是說二者可以不同呢?如果不同,怎么理解 decoder 學(xué)習(xí)到的是什么內(nèi)容呢?此時(shí)該怎樣理解 encoder 和 decoder 之間的關(guān)系?
  • ?
    QA P3 - 06:48
    ?





----end----

其他參考

1、《動(dòng)手學(xué)深度學(xué)習(xí)》,課程 PPT,https://courses.d2l.ai/zh-v2/assets/pdfs/part-3_9.pdf

2、《動(dòng)手學(xué)深度學(xué)習(xí)》,教程,https://zh-v2.d2l.ai/chapter_recurrent-modern/seq2seq.html

62 序列到序列學(xué)習(xí)(seq2seq)【動(dòng)手學(xué)深度學(xué)習(xí)v2】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
荣成市| 富源县| 文成县| 绥棱县| 英德市| 兴隆县| 田阳县| 民勤县| 米脂县| 汉川市| 临安市| 湖南省| 巢湖市| 平泉县| 江阴市| 莆田市| 进贤县| 岳普湖县| 油尖旺区| 临西县| 扶沟县| 德令哈市| 朝阳市| 龙泉市| 洮南市| 上虞市| 手机| 汽车| 本溪| 金湖县| 青州市| 垦利县| 额尔古纳市| 邹平县| 芜湖县| 嵩明县| 大丰市| 崇阳县| 康马县| 鄂伦春自治旗| 阿瓦提县|