八、MT-DNN

  1. 神经网络的监督学习需要大量的标记数据,通常这些标记数据难以获取。为了解决这个困难,有两种策略:

    • 预训练学习Pretrain Learning :通过从大量未标记的数据中学习representation,从而缓解目标任务的标记数据太少的问题。

    • 多任务学习 Multi-Task Learning:通过从多个任务及其标记数据中学习 representation,从而缓解目标任务的标记数据太少的问题。

      另外,多任务学习可以通过针对这些任务的训练而缓解模型对具体某个任务的过拟合,从而产生了一种正则化效果。这使得模型学到的 representation 通用性更强,可以跨任务使用。

    • 预训练学习和多任务学习二者可以互补,二者结合可以进一步改善文本的 representation

      Multi-Task Deep Neural Network:MT-DNN 就是结合了 BERT 预训练和多任务学习这两种策略来学习更泛化的 representation

  2. MT-DNN 采用了 BERT 的基本结构,底层网络在所有任务之间共享,顶层结构根据不同任务而不同。

    • BERT 相似,MT-DNN 可以通过微调来匹配特定的任务。
    • BERT 不同,MT-DNN 除了预训练模型之外,还通过多任务学习来学习 representation
  3. MT-DNN 结合了四种不同类型的 Nature Language Understanding:NLU 任务,包括:单句分类、成对文本分类、文本相似性和相关性排序.

    • 单句分类:给定一个简单句子,模型预测它属于哪个类别。如:

      • CoLA 任务:模型预测英文句子是否语法上合理。
      • SST-2 任务:模型预测电影评论中提取的句子的情感是积极的还是消极的。
    • 成对文本分类:给定一对句子,模型预测它们的关系。如 :

      • RTEMNLI 语言推理任务:模型预测一个句子相对于另一个句子是蕴含关系 entailment、矛盾关系 contradiction 还是中性关系 neutral
      • QQPMRPC 任务:模型预测一对句子在语义上是否等价。
    • 文本相似性打分:给定一对句子,模型预测它们的相似性得分。这是一个回归任务。如: STS-B 任务。

    • 相关性排序:给定一个 query 和一组候选答案,模型根据相关性对候选答案排序。如:

      • QNLI 任务:模型评估一个句子是否包含给定问题的正确答案。

        虽然它在 GLUE 中被视为二分类任务,但是在这里我们将其视作成对的排序任务。实验结果表明:这种方式比二分类的准确性有显著提高。

8.1 模型

8.1.1 模型结构

  1. MT-DNN 模型的结构如下图所示。

    • 输入 X :一个 token 序列。模型首先学习该序列的 embedding 表示得到 八、MT-DNN - 图1;然后通过 Transformer encoder 提取特征得到 八、MT-DNN - 图2

    • Lexicon Encoder :学习一个 token 序列的 embedding 表示,每个 token 学到一个 embedding 向量。

      • 每个 embedding 向量由 word embedingsegment embeddingposition embedding 三部分组成。

      • token 序列的第一个 token 始终是 [CLS] 标记。

      • 如果 X 是由一对句子组成,则通过 [SEP] 标记分隔。如:

        八、MT-DNN - 图3

        其中 八、MT-DNN - 图4 为 第一个句子第 八、MT-DNN - 图5token八、MT-DNN - 图6 为 第二个句子第 八、MT-DNN - 图7token

    • Transformer Encoder :通过多层双向 Transformer Encoder 来抽取特征。

    • 网络高层:包含单句分类、成对文本相似性、成对文本分类、相关性排序等具体任务相关的网络结构。

    八、MT-DNN - 图8

  2. BERT 不同,MT-DNN 学习 representation 不仅通过预训练来学习,也通过多任务训练来学习。

8.1.2 task-specific 结构

  1. 单句分类任务的网络结构:假设 八、MT-DNN - 图9八、MT-DNN - 图10 中对应于 [CLS] 的向量,它被视为输入 X 的表达。输入 X 为类别 八、MT-DNN - 图11 的概率为:

    八、MT-DNN - 图12

    其中 八、MT-DNN - 图13 为该任务对应的参数。

  2. 成对文本相似性任务的网络结构:假设 八、MT-DNN - 图14八、MT-DNN - 图15 中对应于 [CLS] 的向量,它可以视作句子对 X1,X2 的表达。则该文本对的相似性为:

    八、MT-DNN - 图16

    其中 八、MT-DNN - 图17 为该体任务对应的参数。

  3. 成对文本分类任务的网络结构:

    在自然语言推理 NLI 任务中,前提 premise八、MT-DNN - 图18token 组成 八、MT-DNN - 图19,猜想 hypothesisntoken 组成 八、MT-DNN - 图20 。任务目标是预测 premisehypothesis 之间的关系。

    论文采用随机回答网络 stochastic answer network:SAN 的实现方式:

    • 首先将 premise 中的 token 的表示向量(从 八、MT-DNN - 图21 中获取)拼接成矩阵 八、MT-DNN - 图22

      ,以及将 hypothesis 的表示向量(从 八、MT-DNN - 图23 中获取)拼接成矩阵 八、MT-DNN - 图24

      八、MT-DNN - 图25

      其中 八、MT-DNN - 图26 表示permise 中的 token 八、MT-DNN - 图27reprensentation八、MT-DNN - 图28 表示 hypothesis 中的 token 八、MT-DNN - 图29representation

    • 初始化 八、MT-DNN - 图30 维状态向量 八、MT-DNN - 图31

    八、MT-DNN - 图32

    其中 八、MT-DNN - 图33 维向量 八、MT-DNN - 图34 为待学习的参数。

    • 迭代 八、MT-DNN - 图35 次,八、MT-DNN - 图36 为超参数。迭代过程 八、MT-DNN - 图37

      • 根据状态 八、MT-DNN - 图38八、MT-DNN - 图39 计算 八、MT-DNN - 图40

        八、MT-DNN - 图41

        其中 八、MT-DNN - 图42 为待学习的参数。

      • 计算状态 八、MT-DNN - 图43

      八、MT-DNN - 图44

      • 在每个迭代步,输出类别概率:

        八、MT-DNN - 图45

        其中 [] 表示向量的拼接。

    • 使用 八、MT-DNN - 图46 步的平均概率输出作为预测概率:

      八、MT-DNN - 图47

  4. 相关性排序任务的网络结构:假设 八、MT-DNN - 图48八、MT-DNN - 图49 中对应于 [CLS] 的向量,它可以视作问答对 Q,[SEP],A 的表达。则相关性得分为:

    八、MT-DNN - 图50

    给定一个 question,对它的所有候选 answer 计算相关性得分,并按照得分排序即可得到排序结果。

8.1.3 模型训练

  1. MT-DNN 的训练过程分为两步:预训练和多任务训练。

    • 预训练步骤参考 BERTlexicon encoderTransformer encoder 的参数通过两个无监督学习任务 MLMNSP 来训练。

    • 多任务训练步骤:使用 mini-batch SGD 优化算法来训练。

      在每个 epoch 选择 八、MT-DNN - 图51 大小的 mini-batch,然后根据任务 八、MT-DNN - 图52 相关的目标函数来更新参数。这种方式等价于优化所有任务的目标函数。

      • 对于分类任务,使用交叉熵的目标函数:

        八、MT-DNN - 图53

        其中 八、MT-DNN - 图54 是一个示性函数,如果样本 八、MT-DNN - 图55 属于类别 八、MT-DNN - 图56 则函数值为 1;否则函数值为 0 。

      • 对于文本相似性任务,使用平方误差损失函数:

        八、MT-DNN - 图57

      • 对于相关性排序任务,给定问题 questioin 八、MT-DNN - 图58,假设候选回答集合 八、MT-DNN - 图59 包含一个正确答案 八、MT-DNN - 图60 和其它 八、MT-DNN - 图61 个错误答案,则优化目标为:

        八、MT-DNN - 图62

        其中:

        • score 为相关性得分: 八、MT-DNN - 图63八、MT-DNN - 图64 为待学习的参数,八、MT-DNN - 图65Q [SEP] A 的表达。
        • 八、MT-DNN - 图66 为一个超参数。
  2. MT-DNN 训练算法:

    • 随机初始化模型参数 八、MT-DNN - 图67

    • 预训练共享层(如lexicon encoderTransformer encoder

    • 设定最大 epoch八、MT-DNN - 图68

    • 准备 八、MT-DNN - 图69 个任务的数据:对每个任务的数据集 八、MT-DNN - 图70 ,将其拆分成 mini-batch 的形式 八、MT-DNN - 图71

    • epoch 迭代:八、MT-DNN - 图72

      • 合并所有数据集:八、MT-DNN - 图73

      • 随机混洗数据集 八、MT-DNN - 图74

      • 八、MT-DNN - 图75 中每个 mini-batch 八、MT-DNN - 图76 (代表了某个任务 八、MT-DNN - 图77mini-batch ):

        • 根据具体任务的损失函数计算 八、MT-DNN - 图78
        • 计算梯度: 八、MT-DNN - 图79
        • 更新模型:八、MT-DNN - 图80

8.2 实验

8.2.1 数据集和参数

  1. 数据集:

    • General Language Understanding Evaluation : GLUE 数据集:是 9 项自然语言理解任务的集合,包括问题回答、情感分析、文本相似性、文本蕴含等任务。其目的是为了评估模型的泛化能力和鲁棒性。

    • Stanford Natural Language Inference:SLI 数据集:包含 57 万人工标注的句子对,每对句子包含一个前提 premise 和假设 hypotheses

      前提premise 是从 Flickr30 语料库提取,而假设 hypotheses 是人工标注的。该数据集是自然语言推理领域使用最广泛的数据集。

    • SciTail 数据集:从 Science Question Answering:SciQ 数据集中抽取的,评估给定前提 premise 是否包含给定假设 hypotheses

      与前面提到的其它蕴含 entailment 数据集不同,SciTail 的假设是从科学问题中创建的,而相应的答案候选和前提是从大型预料库中检索的相关网络句子。前提和假设的词汇相似性非常高,因此该任务很有挑战。

    八、MT-DNN - 图81

  2. 预处理:所有训练文本都使用 wordpieces 词干化,同时每个序列的长度不超过 512 个 token

  3. 参数:

    • 采用Adamax 优化器,学习率 5e-5。同时使用线性学习率衰减,以及参数为 0.1 的 warm-up 机制。
    • 使用参数为 0.1 的 dropout,但是对于 MNLI 参数为 0.3, 对 CoLA 参数为 0.05 。
    • 最大 epoch 为 5, batch size 为 32 。
    • 为了放置梯度爆炸,执行梯度裁剪策略,使得梯度范数不超过 1 。

8.2.2 实验结果

  1. MT-DNNGLUE 任务上的结果如下图所示,所有结果来自 2019年 2 月 25号的 leaderboard : https://gluebenchmark.com/leaderboard

    • 每个数据集下面的数字给出了训练集的样本数。

    • 粗体给出了最好的结果 SOA ;蓝色粗体给出了超越人类的结果。

    • 模型说明:

      • 八、MT-DNN - 图82 模型:由 BERT 作者提供的模型。本论文在每个 GLUE 任务上使用对应的任务标记数据来微调该模型。

      • MT-DNN:使用 八、MT-DNN - 图83 来初始化共享层,然后基于所有的 GLUE 任务使用多任务学习来继续训练模型,最后基于每个GLUE 任务的标记数据来微调模型。

      • MT-DNN no fine tune:使用 八、MT-DNN - 图84 来初始化共享层,然后基于所有的 GLUE 任务使用多任务学习来继续训练模型,但是最后并没有使用基于每个GLUE 任务的标记数据来微调模型。

        该任务是为了评估:既然MT-DNN 在多任务学习阶段已经使用了对应任务的标记数据,那么继续微调模型有没有必要?

    • 实验结论:

      • 由于 MT-DNN 使用 BERT LARGE 来初始化模型,因此它超越 BERT LARGE 的原因就归因于多任务学习来继续优化共享层的参数。

      • 多任务学习对于非常小规模的in-domain 训练数据集很有效。实验结果表明:训练数据集越小,MT-DNN 超越 BERT 得越多。

      • 除了在 CoLA 任务上,在其它任务上 MT-DNN no fine tune 仍然战胜了 BERT LARGE

        具体原因是 CoLA 任务非常具有挑战性,因为它的 in-domain 数据集非常小,且其任务定义和数据集内容与GLUE 其它任务都不相同。这就使得它很难从其它任务中获取可迁移的知识。

        因此,多任务学习对于该任务表现处欠拟合,所以微调阶段对于该任务的性能提升是非常有必要的。

    八、MT-DNN - 图85

  2. MT-DNN 的优势不仅在于其泛化能力强,还在于其构建模型的灵活性: 允许我们整合在具体任务研究的一些先进模型和方法,有效地利用了已有的研究成果。

    两个典型的例子是使用 SAN 问答模型来处理成对文本分类,使用 pairwise ranking 损失函数来处理 QNLI 任务。有鉴于此,论文提出了 ST-DNN 变种模型。

    ST-DNN 表示 Signle-Task DNN,它使用 MT-DNN 相同的模型结构,但是它的共享层是预训练 BERT 而没有多任务学习。

    在预训练 ST-DNN 之后,使用 GLUE 每个具体任务的数据来微调 ST-DNN 。此时 ST-DNNBERT 的唯一区别在于模型的顶层输出不同:ST-DNN 是具体于每个任务的输出网络。

    ST-DNN 的实验结果如下图所示。实验结论:

    • MNLI,QQP 等任务上, ST-DNN 战胜了 BERT,这表明 SAN 问答模型的泛化能力更强。
    • QNLI 任务上,ST-DNN 使用 pairwise ranking loss,而 BERT 使用交叉熵。结果显示 ST-DNN 仍然战胜了 BERT

    八、MT-DNN - 图86

  3. 构建真实应用系统最重要的标准之一是:快速适应新的任务和领域。因为新的领域和任务中获取标记数据非常昂贵,所以通常在新领域和任务中我们只有非常小的训练数据集,甚至没有训练数据。

    根据该评价准则,论文在 SNLISciTail上执行领域自适应实验从而评估 BERTMT-DNN 快速适应新任务和领域的能力。对每个任务 (SNLI/SciTail ) 构建一个任务具体的模型,然后通过该任务的训练集来训练模型、验证集来评估模型。

    BERTMT-DNN 都是基于 BERT BASE 架构,所有结果都是随机初始化5次并对这些模型的预测结果取平均。

    • 采用这些任务的默认训练集、验证集、测试集,但是对训练集随机采样 0.1%、1%、10%、100%,从而验证小训练集的效果。实验结果如下图所示。

      结果表明:训练数据越少,MT-DNN战胜 BERT 得越多。因此 MT-DNN 相比 BERT ,其领域适配 domain adaption 的能力越强。

      八、MT-DNN - 图87

      八、MT-DNN - 图88

    • MT-DNNSNLISciTail 的所有训练数据上训练,结果和之前的 SOA 模型比较,比较结果如下(早期的 SOA 用 * 表明)。

      结果表明:MT-DNN Large 取得了最新得 SOA

    八、MT-DNN - 图89