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.