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

Seq2Seq(把一個句子運(yùn)用到另一個句子)
最早是用來做機(jī)器翻譯的。

是一個encoder和decoder的架構(gòu)
encoder是給一個句子,比如Hello Word,然后要翻譯成法語的句子
Hello word 之后給信息壓到這個地方,然后就去輸出一個法語的內(nèi)容
Hello word 之后給信息壓到這個地方,然后就去輸出一個法語的內(nèi)容
編碼器是一個RNN,讀取輸入句子
可以是雙向
解碼器使用另外一個RNN來輸出
雙向可以做encoder,不能做decoder
把最后那個時刻的隱層狀態(tài)傳給解碼器,這個狀態(tài)包括了整個源碼句子的信息,這個東西可以是雙向的,雙向的不能做語言模型,但雙向可以做翻譯,decoder要預(yù)測,encoder不需要
雙向RNN用來encoder里面
encoder可以看到整個句子,所以可以正向看一下,反向看一下,雙向RNN經(jīng)常會用在Encoder里面
給定隱藏狀態(tài),之后給定一個輸出
上一層的翻譯做下一層的輸出,得到整個原句子的輸出
這樣子對長度是可以變換的
所以我們可以看到不管原句子多長還是什么多長都可以
decoder一直往前走,走到看到句子的結(jié)束
變長到變長
隱藏狀態(tài)過來,給原句子的隱層狀態(tài)之后給一個輸出開始翻譯,把上一個刻的翻譯是下一刻的輸入
編碼器解碼器細(xì)節(jié)
最后一層的RNN最后那個時刻的狀態(tài)輸出了
句子的embedding的輸出弄起來,encoder最后一層的東西回到下一層,跟輸入放在一起

編碼器不需要全連接層
編碼器沒有輸出的RNN
編碼器最后時間步的隱狀態(tài)
用作解碼器的最初隱狀態(tài)
訓(xùn)練
訓(xùn)練時解碼器使用目標(biāo)句子作為輸入
預(yù)測的句子
衡量生成序列的好壞的BLEU

所有的n-gram
n-gram
unigram一個詞
bytegram兩個詞
unigram的精度考慮我們預(yù)測訓(xùn)練里面所有的unigram
每個是否再這里出現(xiàn)了
4個出現(xiàn)了,一個出現(xiàn)了5
p2-bytegram
AB,BB,BC,CD
3/4
P3-1/3
P4 -- 0
有了這些東西之后,算這些東西
預(yù)測的長度和真實的長度
BLEU是越大越好
長匹配有高權(quán)重
n越大給你的權(quán)重也會變的越大
兩個句子的匹配
【總結(jié)】
seq2seq從一個句子生成另一個句子
編碼器和解碼器都是RNN
將編碼器最后時間隱狀態(tài)來初始解碼器隱狀態(tài)來完成信息傳遞
常用BLEU來衡量生成序列的好壞