原文链接
数据集
-
S
:淘宝女装所有商品标题,剔除标题长度小于10的,因为大多标题都小于10. -
T
:达人平台改写后的标题 -
Q
:搜索query的选择:过去一个月内,有10次成交的商品的query
模型
第一个任务:生成输出
输入句子长度为
M
M
M,输出句子长度为
N
N
N,损失函数如下:
m
a
t
h
argmax
y
∈
Y
s
(
x
,
y
)
=
argmax
m
i
∈
[
1
,
M
]
s
(
x
,
x
[
m
1
,
⋯
,
m
N
]
)
math \underset{y \in \mathcal{Y}}{\operatorname{argmax}} s(x, y)=\underset{m_{i} \in[1, M]}{\operatorname{argmax}} s\left(x, x_{\left[m_{1}, \cdots, m_{N}\right]}\right)
mathy∈Yargmaxs(x,y)=mi∈[1,M]argmaxs(x,x[m1,⋯,mN])
其中,
s
(
x
,
y
)
s(x,y)
s(x,y)表示的是一次标题压缩的得分,
s
(
x
,
y
)
=
l
o
g
(
y
∣
x
;
θ
)
s(x,y)=log(y|x;\theta)
s(x,y)=log(y∣x;θ).所以目标函数可以被重新写成
m
a
t
h
log
p
(
y
∣
x
;
θ
)
=
∑
n
=
1
N
log
P
(
y
n
∣
x
,
y
<
n
;
θ
)
math \log p(y | x ; \theta)=\sum_{n=1}^{N} \log P\left(y_{n} | x, y_{<n} ; \theta\right)
mathlogp(y∣x;θ)=n=1∑NlogP(yn∣x,y<n;θ)
即给定输入x
,输出N
个词,的概率最大、$\theta
就是模型学习得到的参数。
考虑到RNN及LSTM的不足,引入了attention
机制。与原来的注意力机制不同的是,这里我们不在将整个输入句子编码到固定长度的向量,而是在解码的每一次generation
时,对部分输入做attention
。所以上式被改写为:
m
a
t
h
P
(
y
n
∣
x
,
y
<
n
;
θ
)
=
g
(
y
n
−
1
,
s
n
,
c
n
,
θ
)
math P\left(y_{n} | x, y_{<n} ; \theta\right)=g\left(y_{n-1}, s_{n}, c_{n}, \theta\right)
mathP(yn∣x,y<n;θ)=g(yn−1,sn,cn,θ)
其中$g(·)$
是一个非线性函数。$s_{n}$
是第n
个目标输出词的隐状态值,用下式来进行计算
m
a
t
h
s
n
=
f
(
s
n
−
1
,
y
n
−
1
,
c
n
,
θ
)
math s_{n}=f\left(s_{n-1}, y_{n-1}, c_{n}, \theta\right)
mathsn=f(sn−1,yn−1,cn,θ)
其中
c
n
c_{n}
cn是
c
o
n
t
e
x
t
context
context向量,计算方式如下
m
a
t
h
c
n
=
∑
m
=
1
M
A
(
θ
)
n
,
m
h
m
math c_{n}=\sum_{m=1}^{M} A(\theta)_{n, m} h_{m}
mathcn=m=1∑MA(θ)n,mhm
其中
A
(
θ
)
A(\theta)
A(θ)就是attention
矩阵,
A
(
θ
)
n
,
m
A(\theta)_{n,m}
A(θ)n,m表示的是输入句子的第
m
m
m个词,对输出句子第
n
n
n个词的贡献度,计算方式如下
A ( θ ) n , m = exp ( a ( s n − 1 , h m , θ ) ) ∑ m ′ = 1 M exp ( a ( s n − 1 , h m ′ , θ ) ) A(\theta)_{n, m}=\frac{\exp \left(a\left(s_{n-1}, h_{m}, \theta\right)\right)}{\sum_{m^{\prime}=1}^{M} \exp \left(a\left(s_{n-1}, h_{m^{\prime}}, \theta\right)\right)} A(θ)n,m=∑m′=1Mexp(a(sn−1,hm′,θ))exp(a(sn−1,hm,θ))
针对一个元素
a
n
m
a^{m}_{n}
anm,就是
m
a
t
h
a
n
m
=
v
T
tanh
(
W
1
s
n
−
1
+
W
2
h
m
)
math a_{n}^{m}=v^{T} \tanh \left(W_{1} s_{n-1}+W_{2} h_{m}\right)
mathanm=vTtanh(W1sn−1+W2hm)
其中
v
v
v,
W
1
W_{1}
W1和
W
2
W_{2}
W2都是模型学到的参数。
Point network模型
传统的seq2seq模型不能用于标题压缩任务,因为输出是从输入中选出来的词组成的。使用Pointer Network
的话,不会隐状态
h
m
h_{m}
hm混淆进去,而直接使用
a
n
m
a^{m}_{n}
anm作为输入的pointer
第二个任务是生成搜索query
可以看做是一个NMT
的过程,将商家的语言映射到用户搜索的语音。
原始标题和用户搜索,对构建注意力矩阵很重要。
将两个任务合并
agreement-based learning
。两个网络