Seq2Seq模型結構

2021-10-03 21:47:54 字數 3449 閱讀 7043

seq2seq(sequence to sequence) 是乙個處理序列問題的模型,傳統的 rnn 或 lstm 只能處理 輸入及輸出是定長即 一對一或多對多的問題,而 seq2seq 則能處理一對多的問題,它也是 rnn 最重要的乙個變種:n vs m(輸入與輸出序列長度不同),

編碼-解碼模型,主要的思想就是二個 rnn,乙個 rnn 作為 encoder,另乙個 rnn 作為 decoder

encoder 主要負責將輸入序列壓縮成指定長度向量,這個向量可以看成是這個序列的語義,這個過程叫做編碼

decoder 主要負責將語義詞向量分成指定的序列,這個過程叫解碼

讓模型在解碼過程中學習集中關注輸入序列特定部分的模型

以 英-中 翻譯為例,給定 "cat chase mouse ", 輸出 「貓捉老鼠」,在翻譯 「mouse」 時,我們發現 「cat」、「chase」、「mouse」 對 「老鼠」 的關注度都是一樣的,但實際上 「mouse」 才是對 「貓」 影響最大的,因此我們需要在解碼時,對輸入序列在不同時刻分配不同的注意力,這就是注意力機制的由來

在 encoder 中我們使用的都是同乙個語義向量 c,我們想使用不同的向量來表示不同時刻的 c,那麼可以寫成 c

1c_1

c1​、c

2c_2

c2​、c

3c_3

c3​ … c

ic_i

ci​用 c

ic_i

ci​ 來表示 i 時刻的語義向量,我們之前用過最後乙個值或者平均值,很容易的想到可以用加權求和來表示ci=

∑j=1

t∂ij

hjc_i = \sum_^\partial_h_j

ci​=∑j

=1t​

∂ij​

hj​ ,其中h

jh_j

hj​ 表示 encoder 中的隱層狀態, ∂ij

\partial_

∂ij​

表示的是乙個分布概率,即 softmax 值

∂ ij

\partial_

∂ij​

既然是乙個 softmax 值,那麼可以寫成 ∂ij

=exp

(etj

)∑k=

1tex

p(et

j)\partial_ = \frac^exp(e_tj)}

∂ij​=∑

k=1t

​exp

(et​

j)ex

p(et

​j)​

,其中 etj

e_tj

et​j

表示的是當前時刻 encoder 的隱層狀態 h

th_t

ht​ 與 上一時刻 decoder 的隱層狀態 st−

1s_st−1

​ 的相似程度

e tj

e_et

j​既然表示的是 h1~ht 之間的相似程度,那麼我們可以用乙個 score 函式來表示 eij

=sco

re(s

t−1,

hj)e_ =score(s_,h_j)

eij​=s

core

(st−

1​,h

j​),score 函式可以是多樣的,後面會介紹

為了方便理解,我們可以結合下面的示意圖來更清楚的了解其中的步驟:

ht​ 表示,decoder 輸出狀態 s

ts_t

st​ 表示 etj

=sco

re(s

t−1,

hj)e_ = score(s_, h_j)

etj​=s

core

(st−

1​,h

j​)

∂ tj

=exp

(eij

)∑k=

1tex

p(et

k)\partial_ = \frac)}^exp(e_)}

∂tj​=∑

k=1t

​exp

(etk

​)ex

p(ei

j​)​

c t=

∑j=1

t∂tj

hjc_t = \sum_^\partial_h_j

ct​=j=

1∑t​

∂tj​

hj​ st

=f(s

t−1,

yt−1

,ct)

s_t = f(s_, y_, c_t)

st​=f(

st−1

​,yt

−1​,

ct​)

至此,attention 機制的結構與執行方式就很清晰了,在上面我們使用了乙個 score 函式來表示 h

th_t

ht​ 與 s

ts_t

st​ 之間的相似度,一般來說常用的也就下面的幾種:

s co

re(s

t−1,

hj)=

,h_j) = \begins_^h_j\\s_^w_ah_j\\v_a^tanh(w_a[s_;h_j])\end

score(

st−1

​,hj

​)=⎩

⎪⎨⎪⎧

​st−

1t​h

j​st

−1t​

wa​h

j​va

t​ta

nh(w

a​[s

t−1​

;hj​

])​此處介紹的是最基礎的 attention 結構,具體細節仍然需要在**中仔細理解,還有 self-attention 機制及針對不同 score 函式的選取而得到的不同的注意力機制,留在以後的文章中再學習

seq2seq模型詳解

在李紀為博士的畢業 中提到,基於生成的閒聊機械人中,seq2seq是一種很常見的技術。例如,在法語 英語翻譯中,的當前英語單詞不僅取決於所有前面的已翻譯的英語單詞,還取決於原始的法語輸入 另乙個例子,對話中當前的response不僅取決於以往的response,還取決於訊息的輸入。其實,seq2se...

介紹 Seq2Seq 模型

2019 09 10 19 29 26 問題描述 什麼是seq2seq模型?seq2seq模型在解碼時有哪些常用辦法?問題求解 seq2seq模型是將乙個序列訊號,通過編碼解碼生成乙個新的序列訊號,通常用於機器翻譯 語音識別 自動對話等任務。在seq2seq模型提出之前,深度學習網路在影象分類等問題...

seq2seq聊天模型 一

最近完成了sqe2seq聊天模型,磕磕碰碰的遇到不少問題,最終總算是做出來了,並符合自己的預期結果。利用流程圖,從理論方面,回顧,總結seq2seq模型,你給模型一段輸入,它返回一段輸出!可以用在這些情景,聊天模型 翻譯 看圖說話 主旨提取等等涉及自然語言的層面,用途較廣泛 例如 輸入 今天中午吃什...