作为一个刚刚入门NLP的学生,希望在阅读每一篇论文后都进行一定的记录,提炼文中观点,写出自己的理解,如有任何解读错误之处敬请指出,O(∩_∩)O谢谢!

先放出paper的网址 https://arxiv.org/pdf/1806.08730.pdf

key words

  • Multitask Learning
  • Zero-shot Learning
  • Transfer Learning
  • Meta-Learning

前言

当今QA问题在NLP领域可以说是炽手可热,SQUAD数据集的出现,大量RNN,Attention的模型出现将SQUAD1.0的简单问题准确度提高至超越人类。我的同学也有在做SQUAD的,基本上是在别人模型的输入和encoder端上面做些小trick,提升那么1、2个百分点的EM/F1,在我看来这些工作真的是毫无意义。

本篇文章的作者的一句话直中要害:

The quirk of the dataset does not hold for question answering in general, so recent models for SQUAD are not necessarily general QA models.
数据集的“怪癖”并不对普遍的QA问题适用,所以当前的QA Model都不是通用模型。

然而跳出SQUAD的局限,我们确实可以借助QA模型来解决很多其他的NLP子问题,比如我们Apex实验室小组将QA用于关系提取,搭建了QA4IE框架。本篇文章更是将QA模型的能力发挥到了极致,一个通用框架解决10个NLP子问题,真的非常酷。

Task QA Machine Translation Summarization Natrual Language Inference Semantic Analysis Semantic Role Labeling Zero-shot RE Goal-Oriented Dialogue Semantic Parsing Pronoun Resolution
Dataset SQUAD IWSLT CNN/DM MNLI SST QA-SRL QA-ZRE WOZ WikiSQL MWSL

为什么可以通用?

通用模型的关键是——这十个子问题都可以被规约为同一个问题,即输入一段context,一个query,输出一个Answer,且三者均为字符串序列。

如机器翻译:

context question Answer
English text What is the translation from English to German? German text

看到这有人会问,德语在原文、问题中也不存在啊,你怎么得到答案?这个在后面会说,模型引入了一个External Vocabulary解决这种文中no answer的问题。

模型

Encoder

C∈Rl×demb,Q∈Rm×demb,A∈Rn×dembC\in R^{l \times d_{emb}},Q\in R^{m \times d_{emb}},A\in R^{n \times d_{emb}}CRl×demb,QRm×demb,ARn×demb

  • 过线性层映射到d维空间
    CW1=Cproj∈Rl×dCW_1 = C_{proj}\in R^{l\times d}CW1=CprojRl×dQW1=Qproj∈Rm×dQW_1 = Q_{proj}\in R^{m\times d}QW1=QprojRm×d
  • 过BiLSTM编码 -> Cind,QindC_{ind},Q_{ind}Cind,Qind
  • 添加一维dummy embedding
  • 对齐
    softmax(CindQindT)=Scq∈R(l+1)×(m+1)softmax(C_{ind}Q_{ind}^T) = S_{cq}\in R^{{(l+1)}\times {(m+1)}}softmax(CindQindT)=ScqR(l+1)×(m+1)softmax(QindCindT)=Sqc∈R(m+1)×(l+1)softmax(Q_{ind}C_{ind}^T) = S_{qc}\in R^{{(m+1)}\times {(l+1)}}softmax(QindCindT)=SqcR(m+1)×(l+1)
  • Dual Coattention
    SqcTScqTCind=SqcTCsum=Ccoa∈R(l+1)×dS_{qc}^TS_{cq}^TC_{ind} = S_{qc}^TC_{sum} = C_{coa}\in R^{{(l+1)}\times d}SqcTScqTCind=SqcTCsum=CcoaR(l+1)×dScqTSqcTQind=ScqTQsum=Qcoa∈R(m+1)×dS_{cq}^TS_{qc}^TQ_{ind} = S_{cq}^TQ_{sum}=Q_{coa}\in R^{{(m+1)}\times d}ScqTSqcTQind=ScqTQsum=QcoaR(m+1)×d

    丢弃无用的dummy embedding,CCCQQQ重新变为l×dl\times dl×dm×dm\times dm×d维。

  • 压缩
    BiLSTM([Cproj,Cind,Csum,Ccoa])=Ccom∈Rl×dBiLSTM([C_{proj},C_{ind},C_{sum},C_{coa}]) = C_{com}\in R^{l \times d}BiLSTM([Cproj,Cind,Csum,Ccoa])=CcomRl×dBiLSTM([Qproj,Qind,Qsum,Qcoa])=Qcom∈Rm×dBiLSTM([Q_{proj},Q_{ind},Q_{sum},Q_{coa}]) = Q_{com}\in R^{m \times d}BiLSTM([Qproj,Qind,Qsum,Qcoa])=QcomRm×d
  • Self Attention
    MultiHeadC(Ccom,Ccom,Ccom)=CmhaMultiHead_C(C_{com},C_{com},C_{com}) = C_{mha}MultiHeadC(Ccom,Ccom,Ccom)=CmhaMultiHeadQ(Qcom,Qcom,Qcom)=QmhaMultiHead_Q(Q_{com},Q_{com},Q_{com}) = Q_{mha}MultiHeadQ(Qcom,Qcom,Qcom)=Qmha

    再过一层带Relu的残差前馈神经网络 (不太清楚这里为什么要将C_com与C_mha相加?)

FFNC(Ccom+Cmha)=CselfFFN_C(C_{com} + C_{mha}) = C_{self}FFNC(Ccom+Cmha)=CselfFFNQ(Qcom+Qmha)=QselfFFN_Q(Q_{com} + Q_{mha}) = Q_{self}FFNQ(Qcom+Qmha)=Qself

  • Final Encoding (BiLSTM)

Decoder

  • Answer Representation
    由于答案序列并不会经过CNN、RNN,所以人工加入Positional Encodings附带序列信息。
    PE[t,k]=sin(t/10000k/2d)orsin(t/10000(k−1)/2d)PE[t, k] = sin(t/10000^{k/2d})\ or\ sin(t/10000^{(k-1)/2d})PE[t,k]=sin(t/10000k/2d)orsin(t/10000(k1)/2d)Aproj+PE=Appr∈Rn×dA_{proj} + PE = A_{ppr} \in R^{n\times d}Aproj+PE=ApprRn×d

  • Attention(略)

  • Multi-Pointer-Generator
    这一部分我觉得是整体上最innovative的部分,首先获得答案词语wiw_iwi出现在context和question的概率分布。(对 文中单词=目标单词 位置的Attention weight求和)
    ∑i:ci=wi(αtC)i=pc(wt)∈Rl\sum \limits_{i:c_i=w_i}(\alpha_t^C)_i = p_c(w_t)\in R^li:ci=wi(αtC)i=pc(wt)Rl∑i:qi=wi(αtQ)i=pq(wt)∈Rm\sum \limits_{i:q_i=w_i}(\alpha_t^Q)_i = p_q(w_t)\in R^mi:qi=wi(αtQ)i=pq(wt)Rm
    再获得Out-of-context但in-vocabulary的单词概率分布,c^t\hat{c}_tc^t是当前时刻的Recurrent context state。
    softmax(Wvc^t)=pv(wt)∈Rvsoftmax(W_v\hat{c}_t)= p_v(w_t)\in R^vsoftmax(Wvc^t)=pv(wt)Rv
    那么我们如何在这三个分布中最后选取一个单词作答案呢?这势必要对这三个分布做整合,本文的方法是将三个分布的missing entries置为0,训练两个权重标量 λ,γ\lambda,\gammaλ,γ 来线性组合成一个l+m+vl+m+vl+m+v维分布。
    γpv(wt)+(1−γ)[λpc(wt)+(1−λ)pq(wt)]=p(wt)\gamma p_v(w_t) + (1-\gamma)[\lambda p_c(w_t) + (1-\lambda)p_q(w_t)] = p(w_t)γpv(wt)+(1γ)[λpc(wt)+(1λ)pq(wt)]=p(wt)
    这两个权重参数的训练也很讲究,一个针对context,一个针对question,(奇怪的是为什么vocabulary分布取决于context?):
    σ(Wpv[c^t;ht;(Aself)t−1]=γ∈[0,1]\sigma(W_{pv}[\hat{c}_t;h_t;(A_{self})_{t-1}]=\gamma\in[0,1]σ(Wpv[c^t;ht;(Aself)t1]=γ[0,1]σ(Wcq[q^t;ht;(Aself)t−1]=λ∈[0,1]\sigma(W_{cq}[\hat{q}_t;h_t;(A_{self})_{t-1}]=\lambda\in[0,1]σ(Wcq[q^t;ht;(Aself)t1]=λ[0,1]

  • Loss function
    最小化 negative log likelihood
    Loss=−∑tTlog⁡p(at)Loss = -\sum \limits_t^T \log p(a_t)Loss=tTlogp(at)

训练

由于是multitask的模型,常常会出现catastrophic forgetting的问题,训练的方法直接决定了模型最终在各个task上的表现。在本文中,作者尝试了三种不同的训练方式:

Fully Joint Curriculum Anti-Curriculum
纯 Round Robin From easy task to difficult task Phase1:Difficult Tasks
Phase2: All the Tasks

Fully Joint容易理解,就是将所有task按顺序排好,然后按照这个轮回依次抽batch进行训练。事实与直觉相符,这种方法大大增加了模型收敛的难度,模型训练“三心二意”,效果必然不好。

Curriculum Learning的思想源自Bengio大神的文章,其思想是人类学习的知识是通过前人用心编排的,就如同小学生学加减法,初中生算数列几何,大学生学微积分一样,由易到难。如果我们让机器一股脑的学习所有的case,势必会增加其学习难度,而适当的人工编排训练顺序会让模型表现更优。 于是作者利用task的收敛轮数作为区分难易的指标,先训练容易的task,再训练难的。然而,实验后发现结果竟然比fully joint还差!

于是作者自己提出Anti-Curriculum训练方式,打破了前述理论,不再遵循从易到难的顺序,而是将训练分成两个phase:第一个phase先训练一些task给模型一些先验知识;第二个phase再一起训练所有task,相当于一个热启动。这种方式效果很好。

可以看到,Phase1仅有QA的时候decaScore最高达到571.7
然而我们也注意到,phase1加上Machine Translation,Summarization后反而下降了。对此作者总结道:

It is the concordance between the QA nature of the task and SQUAD that enabled improved outcomes and not necessarily the richness of the task!

Including easy tasks early in training makes it more difficult to learn Internal Representation that are useful to other tasks.

论文阅读 decaNLP -- The Natural Language Decathlon: Multitask Leaning as Question Answering相关推荐

  1. 论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering

    论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering   本文解决KBQA中的子问题--Relat ...

  2. CL-ReLKT: Cross-lingual Language Knowledge Transfer for MultilingualRetrieval Question Answering论文阅读

    CL-ReLKT: Cross-lingual Language Knowledge Transfer for Multilingual Retrieval Question Answering 摘要 ...

  3. [论文阅读] Deep Automatic Natural Image Matting

    论文地址:https://arxiv.org/abs/2107.07235 发表于:ICJAI'21 Abstract 自动图像抠图(AIM)是指从任意自然图像中估计软前景,而不需要像trimap那样 ...

  4. 论文阅读Unsupervised Corpus Aware Language Model Pre-training for Dense Passage Retrieval

    密集文本检索的无监督语料库感知语言模型预训练 ACL2022 论文链接 摘要 最近的研究证明了使用微调语言模型(LM)进行密集检索的有效性.然而,密集检索器很难训练,通常需要经过精心设计的微调管道才能 ...

  5. 论文阅读:Instance-aware Semantic Segmentation via Multi-task Network Cascades

    论文框架: 作者提出一种基于多任务的网络串联方法(Multi-task Network Cascade),解决问题实例分割(Instance-aware Semantic Segmentation). ...

  6. 论文阅读9-Fine-tuning Pre-Trained Transformer Language Models to(远程监督关系抽取,ACL2019,GPT,长尾关系,DISTRE)

    文章目录 abstrac 1.Introduction 2 Transformer Language Model 2.1 Transformer-Decoder 2.2 Unsupervised Pr ...

  7. 论文阅读笔记(1):Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation

    Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation 原文链接:https://arxiv.org/pdf/1 ...

  8. QA-GNN: Reasoning with Language Models and Knowledge Graphsfor Question Answering

    题目:QA-GNN:使用语言模型和知识图进行问答推理 作者:Michihiro Yasunaga.Hongyu Ren.Antoine Bosselut.Percy Liang.Jure Leskov ...

  9. [论文阅读笔记26]MRC4NER:使用阅读理解方法来解决NER任务

    题目 A Unified MRC Framework for Named Entity Recognition 命名实体识别的统一MRC框架 论文URL:https://www.semanticsch ...

  10. EMNLP2020 | 近期必读Natural Language Inference精选论文

    **AMiner平台**由清华大学计算机系研发,拥有我国完全自主知识产权.平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价.专家发现.智能指派.学术地图等科技情报专业化服务 ...

最新文章

  1. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
  2. x64dbg 搜索多条指令 ( find sequence of commands )
  3. bat基础学习--bat批量执行其他bat(startcall),bat执行后暂停(调试)关闭,批量执行关闭exe----基础
  4. mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败
  5. POJ - 3041 Asteroids(最小点覆盖-二分图最大匹配)
  6. SAP Analytics Cloud里如何基于一个已有的model创建Story
  7. Redis主从复制、哨兵模式和分布式集群
  8. Nginx 架构——【核心流程+模块介绍】
  9. Python数据结构与算法(1.3)——Python基础之输入、输出与高阶赋值
  10. 小米终于开始对外输出了!
  11. dlna 斐讯r1怎么用_挽救智障——斐讯R1:固件升级、安装DLNA和Soundwire
  12. 设置a标签下载文件的文件名
  13. matlab信号分析与处理:时域分析
  14. 2020大学计算机答案,超星2020大学计算机基础答案 全
  15. 【转】推荐几个免费下载破解软件的网站以及系统
  16. 检验入参合法性有哪些_参数检验和非参数检验是什么意思
  17. 必看!云桌面与传统PC六项成本对比
  18. 浅谈数学在计算机科学中的应用,浅谈计算机科学技术在数学思想中的应用(原稿)...
  19. 【C++】Big Five: 构造函数、拷贝构造函数、拷贝赋值函数、移动构造函数、析构函数
  20. Three.js设置背景

热门文章

  1. FreeSWITCH 放音相关APP/API
  2. 为什么在计算机里打开U盘会闪退,U盘闪退怎么办?
  3. AspnetPager
  4. 恭贺武汉大学国际软件学院考生集体通过LPI一级认证
  5. 基于Web的酒店客房管理系统
  6. SOLIDWORKS工程图教程:如何进行SOLIDWORKS工程图标注
  7. java实验报告_java实验报告
  8. python树莓派游戏机_玩转树莓派——游戏主机模拟器
  9. ApacheCN 翻译活动进度公告 2019.6.15
  10. CenOS 6.0 安装NVIDIA GeFore GT 440 显卡驱动