Paper
HopRetriever: Retrieve Hops over Wikipedia to Answer Complex Questions.
Defination
Symbol | Function |
---|---|
Retriever | 依据检索模块 |
Reader | 答案抽取模块 |
q q q | 问题 |
K K K | 知识 |
D p = D_p= Dp=Retriever ( q , K ) (q, K) (q,K) | 用于回答问题 q q q的多个文档 |
a = a= a=Reader ( q , D q ) (q,D_q) (q,Dq) | 答案 |
d i d_i di | 文档 i i i |
e i e_i ei | d i d_i di描述的实体 |
m i , j = e i → d i e j m_{i,j}=e_i\stackrel{d_i}{\rightarrow} e_j mi,j=ei→diej | 在介绍 e i e_i ei的 d i d_i di中“提及”了 e j e_j ej |
Hop encoding
Mention embedding: m i , j \mathrm{m}_{i,j} mi,j
在实体
e
e
e的两侧加入名为[MARKER]的token,第一个[MARKER]输出的表示作为“提及”向量。
m
i
,
j
=
{
B
E
R
T
[
M
−
j
]
(
q
;
d
i
)
,
i
f
m
i
,
j
∈
M
m
P
(
均
匀
向
量
)
,
o
t
h
e
r
w
i
s
e
\mathrm{m}_{i,j}= \left\{ \begin{aligned} BERT_{[M-j]}(q;d_i), && if \;m_{i,j}\in M \\ \mathrm{m}_P(均匀向量), && otherwise \end{aligned} \right.
mi,j={BERT[M−j](q;di),mP(均匀向量),ifmi,j∈Motherwise
Document embedding: u j \mathrm{u}_j uj
被提及的
e
j
e_j
ej的非结构化文档,通过BERT的[CLS]输出作为
u
j
\mathrm{u}_j
uj。
u
j
=
B
E
R
T
[
C
L
S
]
(
q
;
d
j
)
\mathrm{u}_j=BERT_{[CLS]}(q;d_j)
uj=BERT[CLS](q;dj)
Knowledge fusion: h o p i , j \mathrm{hop}_{i,j} hopi,j
a
m
=
h
W
k
m
i
,
j
a_m=\mathrm{h}\mathrm{W}_k\mathrm{m}_{i,j}
am=hWkmi,j
a
u
=
h
W
k
u
j
a_u=\mathrm{h}\mathrm{W}_k\mathrm{u}_j
au=hWkuj
{
w
m
,
w
u
}
=
s
o
f
t
m
a
x
(
{
a
m
,
a
u
}
)
\{w_m,w_u\}=softmax(\{a_m,a_u\})
{wm,wu}=softmax({am,au})
h
o
p
i
,
j
=
w
m
⋅
W
v
m
i
,
j
+
w
u
⋅
W
v
u
j
\mathrm{hop}_{i,j}=w_m\cdot\mathrm{W}_v\mathrm{m}_{i,j}+w_u\cdot\mathrm{W}_v\mathrm{u}_j
hopi,j=wm⋅Wvmi,j+wu⋅Wvuj
- h \mathrm{h} h:检索历史编码,相当于 q u e r y query query
- W k \mathrm{W}_k Wk:将 m i , j \mathrm{m}_{i,j} mi,j和 u j \mathrm{u}_j uj映射为 k e y key key
Probability of retrieving d j d_j dj: p ( d j ) p(d_j) p(dj)
从前
t
−
1
t-1
t−1步检索得到实体
e
i
e_i
ei,在第
t
t
t步,由
e
i
e_i
ei确定检索
d
j
d_j
dj的概率为
p
(
d
j
)
p(d_j)
p(dj)。
p
(
d
j
)
=
s
i
g
m
o
i
d
(
h
t
T
h
o
p
i
,
j
)
h
t
=
{
h
s
,
t
=
1
R
N
N
(
h
t
−
1
,
h
o
p
k
,
i
)
t
≥
2
p(d_j)=sigmoid(\mathrm{h}_t^\mathrm{T}\mathrm{hop}_{i,j})\\ \mathrm{h}_t= \left\{ \begin{aligned} \mathrm{h}_s, && t=1\\ RNN(\mathrm{h}_{t-1},\mathrm{hop}_{k,i}) && t\geq2 \end{aligned} \right.
p(dj)=sigmoid(htThopi,j)ht={hs,RNN(ht−1,hopk,i)t=1t≥2
- h s \mathrm{h}_s hs:初始隐藏状态向量
- h o p k , i \mathrm{hop}_{k,i} hopk,i: t − 1 t-1 t−1步的编码
- h o p e hop_e hope:检索进程结束标识
h o p hop hop | 编码 | 注释 |
---|---|---|
h o p i , j hop_{i,j} hopi,j | f ( m P , u j ) f(\mathrm{m}_P,\mathrm{u}_j) f(mP,uj) | e j e_j ej在 d i d_i di中未被“提及” |
同上 | f ( m i , j , u j ) f(\mathrm{m}_{i,j},\mathrm{u}_j) f(mi,j,uj) | e j e_j ej在 d i d_i di中被“提及” |
h o p s , j hop_{s,j} hops,j | f ( m P , u j ) f(\mathrm{m}_P,\mathrm{u}_j) f(mP,uj) | 选择 d j d_j dj作为开始 |
同上 | f ( m P , u e ) f(\mathrm{m}_P,\mathrm{u}_e) f(mP,ue) | 检索结束 |
Sentence-Level Retrieval
s i , l = B E R T [ S M − l ] ( q ; d i ) p ( s i , l ) = s i g m o i d ( h t W s s i , l ) \mathrm{s}_{i,l}=BERT_{[SM-l]}(q;d_i)\\ p(s_i,l)=sigmoid(\mathrm{h}_t\mathrm{W}_s\mathrm{s}_{i,l}) si,l=BERT[SM−l](q;di)p(si,l)=sigmoid(htWssi,l)
- s i , l \mathrm{s}_{i,l} si,l: d i d_i di中第 l l l个句子结尾处插入[SM-l]对应的句子marker
- p ( s i , l ) p(s_i,l) p(si,l):若 p ( s i , l ) > 0.5 p(s_i,l)>0.5 p(si,l)>0.5,则第 l l l个句子作为答案的支撑句子。
Objective Functions: Cross Entropy
param | func |
---|---|
d j d_j dj | 正确文档为 d j d_j dj |
s i , l s_{i,l} si,l | d i d_i di中的第 l l l个句子 |
L i L_i Li | 支撑句子下标 |
- 第
t
t
t步检索对应的目标函数:
log p ( d j ) + ∑ d ‾ j ∈ D , d ‾ j ≠ d j log ( 1 − p ( d ‾ j ) ) \log p(d_j)+\sum_{\overline{d}_j\in D,\overline{d}_j\neq d_j}\log(1-p(\overline{d}_j)) logp(dj)+dj∈D,dj=dj∑log(1−p(dj)) - 支撑句子预测目标函数:
∑ l ∈ L i log p ( s i , l ) + ∑ l ∉ L i log ( 1 − p ( s i , l ) ) \sum_{l\in L_i}\log p(s_{i,l})+\sum_{l\notin L_i}\log(1-p(s_{i,l})) l∈Li∑logp(si,l)+l∈/Li∑log(1−p(si,l))
同时max两个目标函数