在2017年发表在AAAI上的论文Topic Aware Neural Response Generation中看到的Sequence-to-Sequence model(序列到序列模型 / Seq2Seq模型)的定义。
在Seq2Seq模型中,给定一个源序列
X
=
(
x
1
,
x
2
,
⋯
 
,
x
T
)
X=(x_1,x_2,\cdots,x_T)
X=(x1,x2,⋯,xT)和一个目标序列
Y
=
(
y
1
,
y
2
,
⋯
 
,
y
T
′
)
Y=(y_1,y_2,\cdots,y_{T'})
Y=(y1,y2,⋯,yT′),在
X
X
X已知的情况下,模型最大化
Y
Y
Y的生成概率:
p
(
y
1
,
y
2
,
⋯
 
,
y
T
′
∣
x
1
,
x
2
,
⋯
 
,
x
T
)
p(y_1,y_2,\cdots,y_{T'}|x_1,x_2,\cdots,x_T)
p(y1,y2,⋯,yT′∣x1,x2,⋯,xT)具体而言,Seq2Seq模型属于编码器-解码器框架的范畴,编码器逐个读取
X
X
X中的元素并通过一个
R
N
N
RNN
RNN模型将其表示成情境向量
c
c
c,然后解码器将
c
c
c作为输入并计算
Y
Y
Y的生成概率。Seq2Seq模型的目标函数可以变形为以下形式:
p
(
y
1
,
y
2
,
…
,
y
T
′
∣
x
1
,
x
2
,
…
,
x
T
)
=
p
(
y
1
∣
c
)
∏
t
=
2
T
′
p
(
y
t
∣
c
,
y
1
,
⋯
 
,
y
t
−
1
)
p(y_1,y_2,\dots,y_{T'}|x_1,x_2,\dots,x_T)=p(y_1|c)\prod_{t=2}^{T'}p(y_t|c,y_1,\cdots,y_{t-1})
p(y1,y2,…,yT′∣x1,x2,…,xT)=p(y1∣c)t=2∏T′p(yt∣c,y1,⋯,yt−1)作为编码器的RNN模型通过以下方式计算情境向量
c
c
c:
h
t
=
f
(
x
t
,
h
t
−
1
)
h_t=f(x_t,h_{t-1})
ht=f(xt,ht−1);
c
=
h
T
c=h_T
c=hT,其中
h
t
h_t
ht表示第
t
t
t个时间步编码器的隐层状态,
f
f
f是一个非线性变换,一般是
L
S
T
M
LSTM
LSTM单元或者
G
R
U
GRU
GRU单元。
解码器是一个标准的
R
N
N
RNN
RNN模型,它基于情境向量
c
c
c在每个时间步
t
t
t通过以下公式计算候选词的概率分布:
s
t
=
f
(
y
t
−
1
,
s
t
−
1
,
c
)
s_t=f(y_{t-1},s_{t-1},c)
st=f(yt−1,st−1,c);
p
t
=
s
o
f
t
m
a
x
(
s
t
,
y
t
−
1
)
p_t=softmax(s_t,y_{t-1})
pt=softmax(st,yt−1),其中
s
t
s_t
st为解码器
R
N
N
RNN
RNN模型在时间步
t
t
t的隐状态,
y
t
−
1
y_{t-1}
yt−1是解码器在时间步
t
−
1
t-1
t−1生成的序列元素。