点击上方,选择星标置顶,每天给你送干货

阅读大概需要9分钟

跟随小博主,每天进步一丢丢

来自:AI公园

作者:Muhammad Khalifa

编译:ronghuaiyang

导读

NLP迁移学习中的一些问题,感觉有点道理。

自然语言处理(NLP)最近取得了巨大的进步,每隔几天就会发布最新的结果。排行榜疯狂是指最常见的NLP基准,如GLUE和SUPERGLUE,它们的得分越来越接近人类的水平。这些结果大多是通过超大(数十亿个参数)模型从大规模数据集中迁移学习得到的。本文的目的是指出迁移学习面临的问题和挑战,并提出一些可能的解决方法。

计算量

目前NLP中最成功的迁移学习形式序列迁移学习(STL),通常采用语言预训练的形式(https://arxiv.org/abs/1801.06146)。最近几乎所有的SOTA结果主要是由两步方案驱动的:

  1. 大型通用语料库上进行语言模型的建模(数据越多越好)。

  2. Finetune目标任务上的模型(或其子集)。

ELMO, BERT, GPT, GPT-2, XLNET and RoBERTa是都是用的同样的技术。这些方法的一个主要问题是巨大的资源需求。我所说的资源是指数据计算能力。例如,据估计,在512个TPU v3芯片上训练XLNET大约需要25万美元,相比于在3/4的数据集中训练的BERT,只提升了1-2%。

这就引出了下一个问题:

难以复现

可复现性已经成为机器学习研究中的一个问题。例如,Dacrema et al.)分析了18个不同的基于神经的推荐系统,发现其中只有7个经过合理的努力是可复现的。一般来说,为了能够使用或建立在一个特定的研究理念,这个理念必须易于复现。由于需要大量的计算资源来训练这些巨大的NLP模型并复现它们的结果,小型科技公司、初创公司、研究实验室和独立研究人员将无法竞争。

不再需要排行榜的任务

Anna Rogers在她的博客文章为什么“更多的数据和计算= SOTA”不是研究新闻。她认为,排行榜的主要问题在于,一个模型的排名完全取决于它的任务分数,而没有考虑到达到这个分数所需的数据量、计算量或训练时间。

Rohit Pgarg建议在任务精度和计算资源的二维尺度上比较模型的性能。请看下面的图表。我建议我们添加另一个维度,它对应于模型训练时候的数据量。但是,这种可视化并不能洞察哪种模型通常更好。还有Alexandr Savinov的一个非常有趣的评论,他建议使用算法能够在一单位CPU时间内将多少输入信息“打包”到一单位输出(模型参数)表示中。

在比较模型性能时,使用计算资源作为任务准确性的额外度量

这不像是我们学习的方式

孩子们通过嘈杂、模糊的输入和极少的监督来学习语言。一个孩子只要接触一个单词几次,就能开始理解它的意思。这与STL设置中使用的训练前步骤非常不同,在STL设置中,模型需要查看数百万个上下文,其中包括一个特定的单词,以掌握该单词的含义。一个非常重要的问题是,是否可以只从原始文本中学习语义而不受任何外部监督。如果你对关于这个话题的twitter辩论感兴趣,请访问这个帖子:https://twitter.com/jacobandreas/status/1023246560082063366。如果答案是否定的,那就意味着在训练前,这些模型实际上并没有给他们真正的语言理解能力。然而,我们在日常生活中确实使用了迁移学习。例如,如果我们知道如何驾驶一辆手动汽车,我们就很容易利用所学的知识(如使用刹车和油门踏板)来驾驶一辆自动汽车。但这是人类学习语言的必经之路吗?不太可能。然而,有人可能会说,只要一种方法能产生好的结果,它是否与人类的学习方式相似实际上并不重要。不幸的是,这些模型产生的一些好的结果是有问题的,我们将在下一节看到。

从另一个角度来看,人类在语言学习上采取了一种持续终生的学习方式。每当我们学习一个新任务时,这种学习通常不会干扰之前学习过的任务。另一方面,当新的训练数据的分布发生变化的时候,普通的只在一个任务上训练过的机器学习模型(包括迁移学习方法)通常不能利用过去学到知识,这种现象称为灾难性的遗忘

肤浅的语言理解

语言建模任务的确是一个复杂的任务。例如这个句子:“The man in the red shirt is running fast. He must be…”,为了让模型完成这句话,模型必须理解running fast通常意味着being in a hurry。那么这些预先训练过的模型到底能理解多少语言呢?不幸的是,事实并非如此。Niven et al., 2019分析了BERT在论证推理和理解任务(ARCT)上的表现。ARCT可以这样描述:给定一个声明和一个推理,任务是选择正确的证据,而不是另一个干扰项。正确的证明应符合,而其他证明应符合。参见下图。

论证和理解任务的范例

值得一提的是,BERT在这项任务中获得了极具竞争力的77%的准确性,仅比人类基线低3分。首先,这说明BERT有很强的推理能力。为了进一步调查,Niven et al., 2019使用了所谓的“探针”。也就是说,他们在这个任务上对BERT进行了finetune,但是对BERT的输入只是正确的和可选的证据,而没有暴露它的声明或推理。假设是,如果BERT依赖证据中的一些统计线索,即使他只看到证据而没有其他信息,他也应该表现良好。有趣的是,他们的研究结果显示,与使用推理和声明相比,他们的准确率仅下降了6%。这表明,BERT实际上并没有进行任何类型的推理,但证明本身有足够的线索,使BERT能够达到如此高的准确性。值得注意的是,用一个没有BERT所依赖的这些线索的对抗性的测试集代替了这个测试集,BERT只能达到53%的正确率,刚好高于随机概率。

另一篇相关论文是“Can a Machine Really Finish your Sentence?”(Zellers et al., 2019)。他们考虑的是常识自然语言推理的任务,即机器应该选择最可能的后续语句。例如,给定句子:“the team played so well”,系统应该选择“They won the game”作为后续。作者认为,尽管BERT能够达到86%的正确率(仅比人类基线低2点),如此高的正确率并不是由于BERT的高级推理形式,而是由于BERT学会了识别数据集特有的分布偏差。他们发现,通过对抗性筛选(一种旨在为任何可能的训练、测试分割生成对抗性数据集的技术)创建一个更困难的数据集(HellaSwag), BERT准确率下降到53%。本文讨论了数据集性能任务性能之间的细微差别。对特定任务的数据集执行得非常好并不意味着解决了底层任务。

BERT在SWAG上的表现与HellaSwag相比

很明显,这里发生了一些事情。是否可能BERT的好结果实际上是由它利用各种分布线索和偏差劫持目标数据集的能力驱动的?对BERT的研究结果进行更多的调查能得出其他类似的发现和结论吗?如果是这样,我相信我们不仅需要建立更好的模型,还需要建立更好的数据集。我们需要的数据集能够真实地反映底层任务的困难,而不是让模型很容易达到欺骗的准确性和排行榜分数。

高碳不环保

信不信由你,但是训练这些壮观的模型对环境有负面影响。Strubell等人比较了训练大型Transformer架构产生的 排放与其他来源造成的排放。令人惊讶的是,使用神经结构搜索训练单个Transformer arhcitectue所释放的 大约是一辆汽车一生所释放的 的6.0倍。

Schwartz等人介绍了他们所谓的“绿色人工智能”,这是一种实践,使人工智能更加“高效”和“包容”。与我们上面讨论的类似,他们强烈建议除了任务准确性之外,还应该增加效率。他们还认为,研究论文有必要包括“价格标签”或模型训练的成本。这将鼓励对更高效、更少资源需求的模型架构的研究。

—END—

英文原文:https://mohammadkhalifa.github.io/2019/09/06/Issues-With-Transfer-Learning-in-NLP/


方便交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐阅读:

【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文

【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing

【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译

【一分钟论文】Semi-supervised Sequence Learning半监督序列学习

【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing

详解Transition-based Dependency parser基于转移的依存句法解析器

经验 | 初入NLP领域的一些小建议

学术 | 如何写一篇合格的NLP论文

干货 | 那些高产的学者都是怎样工作的?

一个简单有效的联合模型

近年来NLP在法律领域的相关研究工作


让更多的人知道你“在看”

当前NLP迁移学习中的一些问题相关推荐

  1. Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...

  2. 21 个问题看 NLP 迁移学习的最新进展

    2020-06-23 03:20:11 作者 | Mr Bear 编辑 | 丛末 2018 年 10月,Bert 问世.从此,一波 NLP 迁移学习的研究热潮向我们袭来. 当下,全球研究人员已经在此领 ...

  3. 迁移学习中的负迁移:综述

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 导读 迁移移学习(TL)试图利用来自一个或多个源域的数据或知识来促进目标域的学习.由于标记成本.隐私问题等原因,当目标域 ...

  4. 迁移学习中使用下载好的权重

    迁移学习中使用下载好的权重 1.最开始使用Vgg16 2.将下载好的权重放到对应的目录 将下载好的权重放到./keras/models中 改用其他内嵌网络会发现,直接可以用了

  5. 如何用最强模型BERT做NLP迁移学习?

    作者 | 台湾大学网红教授李宏毅的三名爱徒 来源 | 井森堡,不定期更新机器学习技术文并附上质量佳且可读性高的代码. 编辑 | Jane 谷歌此前发布的NLP模型BERT,在知乎.Reddit上都引起 ...

  6. bert 中文 代码 谷歌_如何用最强模型BERT做NLP迁移学习?

    作者 | 台湾大学网红教授李宏毅的三名爱徒 来源 | 井森堡,不定期更新机器学习技术文并附上质量佳且可读性高的代码. 编辑 | Jane 谷歌此前发布的NLP模型BERT,在知乎.Reddit上都引起 ...

  7. 【迁移学习(Transfer L)全面指南】迁移学习中的bottlenecks(瓶颈层)

    在学习How to Retrain an Image Classifier for New Categories的时候,在retrain刚开始的时候会建立一堆的bottlenecks文件,所以这到底是 ...

  8. paddlepaddle 13 迁移学习中的卷积基加强训练方法-RIFLE

    预训练模型作为当下迁移学习的一种主流方法,让"从零开始训练一个新模型"的时代一去不复返.这类在大型数据集上训练好的模型进行微调后,便能够较好地适配类似的新目标任务,可以极大地节约时 ...

  9. 计算机视觉之迁移学习中的微调(fine tuning)

    现在的数据集越来越大,都是大模型的训练,参数都早已超过亿级,面对如此大的训练集,绝大部分用户的硬件配置达不到,那有没有一种方法让这些训练好的大型数据集的参数,迁移到自己的一个目标训练数据集当中呢?比如 ...

  10. 对迁移学习中域适应的理解和3种技术的介绍

    域适应是计算机视觉的一个领域,我们的目标是在源数据集上训练一个神经网络,并确保在显著不同于源数据集的目标数据集上也有良好的准确性.为了更好地理解域适应和它的应用,让我们先看看它的一些用例. 我们有很多 ...

最新文章

  1. 浅析几种线程安全模型
  2. 征战蓝桥 —— 2015年第六届 —— C/C++A组第4题——格子中输出
  3. python and financial data_学会7个可视化图表增强技巧(Python),毫不费力抓住领导的眼球
  4. spring无法连接mysql_初学Spring——连接MySQL数据库的问题和解决
  5. C# 中反射获取某类的子类和根据类型名动态创建对象(转载)
  6. LISP 冻结excel窗格_Excel这10个实操技巧,每个都很牛逼,绝对不能错过
  7. 远程连接服务器数据库报错:Host ‘XXXXXX’ is blocked because of many connection errors
  8. 笔记本安装 ubuntu 触摸板失灵
  9. 神经元模型hhmodel模型_HH神经元模型 -
  10. 《A Relation-Specific Attention Network for Joint Entity and Relation Extraction》论文
  11. Android更改开机画面
  12. 千呼万唤始出来-YYC松鼠聚合系统搭建教程,理论上可对接一切API
  13. 番子和滑条_中国细犬中的滑条和番子有哪些区别?不妨看看,看完后明白了!...
  14. 对结对编程盟友的个人项目代码分析
  15. 坚果J10和当贝F3体验分享,智能家用投影仪究竟应该怎么选?
  16. 一个神奇的下载按钮css实现
  17. 项目上线 | 兰精携手盖雅工场,数智驱动绿色转型
  18. 【Python】Transformers加载BERT模型from_pretrained()问题解决
  19. 批量导入/导出Excel文件(Python+Matlab)
  20. 城镇建设适宜性评价之灾害评价算法

热门文章

  1. JavaWeb——Servlet开发1
  2. JS总结 本地对象2 BOM DOM
  3. 2016/2/13 《计算机系统要素》(The Elements of Computing Systems)读书笔记(1)
  4. 例题-Quota 实作:
  5. winform(C#)拖拽实现获得文件路径
  6. 学习笔记之什么是持久化和对象关系映射ORM技术
  7. java day21【缓冲流、转换流、序列化流】
  8. ccs中如何插入字体
  9. 用三张图宏观把握数据库
  10. 两局域网互联解决方案