Multi-Task Deep Neural Networks for Natural Language Understanding
https://github.com/namisan/mt-dnn.
Model
Lexicon Encoder ( l1):
输入
X
X
X = {
x
1
x_1
x1,…,
x
m
x_m
xm},
m
m
m个token,X可以是单个句子,也可以是多个句子的打包
首个token:[CLS]
句子分割:[SEP]
embedding:word, segment, and positional embeddings的加权
Transformer Encoder (l2):
多层biTransformer encoder将输入表示向量映射到一系列上下文嵌入向量:
C
C
C
∈
∈
∈
R
R
R
d
^d
d
×
^×
×
m
^m
m
这是不同任务之间的共享表示。与BERT不同,MT-DNN除了预训练之外,还使用多任务目标学习表征。
Multi-task layer:
Single-Sentence Classification Output:
x
x
x表示[
C
C
C
L
L
L
S
S
S]位置的上下文embedding(可以看作是句子
X
X
X的整体语义表示)
逻辑回归预测:
Text Similarity Output:
Pairwise Text Classification Output:
自然语言推理为例:
前提
P
P
P={
p
1
p_1
p1,…,
p
m
p_m
pm}
假设
H
H
H={
h
1
h_1
h1,…
h
n
h_n
hn}
关系
R
R
R
输出模块和stochastic answer network(SAN)方法一样:
首先通过连接
P
P
P中单词的上下文嵌入来构建前提
P
P
P的working memory,
P
P
P是Transformer encoder的输出,表示为
M
p
M^p
Mp
∈
∈
∈
R
R
R
d
^d
d
×
^×
×
m
^m
m,类似地,假设
H
H
H的working memory,表示为
M
h
M^h
Mh
∈
∈
∈
R
R
R
d
^d
d
×
^×
×
n
^n
n。然后,对记忆执行
K
K
K步推理以输出关系标签,其中
K
K
K是超参数。在开始,初始状态
s
0
s_0
s0是
M
h
M_h
Mh的总结:
其中
在{
1
1
1,
2
2
2,…,
K
K
K
−
-
−
1
1
1 }范围内的时间步长
K
K
K,state由
定义。这里,
x
k
x^k
xk根据先前的状态
s
s
s
k
^k
k
−
^-
−
1
^1
1和memory
M
p
M^p
Mp计算:
β
j
β_j
βj=
s
s
s
o
o
o
f
f
f
t
t
t
m
m
m
a
a
a
x
x
x(
s
s
s
k
^k
k
−
^−
−
1
^1
1
W
W
W
T
^T
T
M
p
M^p
Mp)
单层分类器用于确定每个步骤
k
k
k:
最后,通过平均分数来利用所有的
K
K
K个输出:
Relevance Ranking Output:
QA问题:
The Training Procedure
Train 两个过程:
- pretraining(shared layer encoder):Mask和NSP
- multi-tsak learning:通过具体tsak训练:
分类(交叉熵):
text similarity tasks(MSE):
relevance ranking tasks:(negative log likelihood)
A
+
A^+
A+是正例,
A
A
A是候选列表,
l
l
l
a
a
a
m
m
m
d
d
d
a
a
a = 1
实验
GLUE test set results:
领域适用:
Results on the SNLI and SciTail dataset.