来源:NewBeeNLP本文约1600字,建议阅读5分钟本文介绍了微软亚洲研究院自然语言计算组在该研究领域的一系列最新进展。

微软亚洲研究院副院长周明老师报告:From Language Intelligence to Code Intelligence Based on Pre-trained Models

感谢周明老师的分享以及Windy同学的笔记,完整报告内容文末阅读原文一键直达。

TL;DR

代码智能(Code Intelligence)旨在使计算机具备理解和生成代码的能力,并利用编程语言知识和上下文进行推理,支持代码检索、补全、翻译、纠错、问答等场景。

以深度学习为代表的人工智能算法,近年来在视觉、语音和自然语言理解任务上取得了飞跃式的突破。最近基于Transformer的预训练模型大大推动了自然语言处理和多模态的技术进步。而基于最新的自然语言技术与编程语言知识相融合的代码智能的研究也受到越来越多的关注。

本报告将介绍微软亚洲研究院自然语言计算组在该研究领域的一系列最新进展,包括针对代码智能的预训练模型(CodeBERT/CodeGPT)、基准数据集(CodeXGLUE)和融合了编程语言句法和语义信息的新的评价指标(CodeBLEU)。最后,本报告研讨该领域目前存在的主要问题并探索未来的发展方向。

报告笔记如下。

一、语言智能和预训练

这几年NLP领域里程碑式的工作

  • word embedding (2013)

  • sentence embedding

  • encoder-decoder with attention (2014)

  • Transformer(2016)考虑到RNN并行能力弱(self-attention),只有一个特征抽取 (multi-head)

  • Pre-trained Model (self-supervised地把大规模语料中上下文相关的语义表示学出来,再fine-tuning)

为什么要做预训练模型?

  1. 显式表征了句法和语义知识

  2. 体现了迁移学习的特点,帮助低资源情况

  3. 几乎支持所有NLP任务,而且都取得了不错的效果

  4. 可扩展性比较好,降低了NLP门槛

Self-supervised Learning方法

利用数据自然特点,不需要人工标注

  1. autoregressive(AR) LM

  2. auto-encoding (AE)

总结预训练模型的相关工作(见下图)

预训练模型的发展趋势

  • 模型越来越大(消耗资源,且不利于非企业研究)

  • 预训练方法和模型不断创新

  • 从单语到多语,到多模态,到程序语言

  • 模型压缩,知识蒸馏

微软工作总览

微软预训练模型介绍

1.「UniLM」(Dong et al.,2019)

  • GPT是单向,适合做生成;

  • Bert是双向,适合做理解;

  • 能否合成?用了一个统一架构三个部分做多任务学习。

2.「Unicoder for Understanding」 (Huang et al.,2019)

  • 多语言;

  • 增加contrastive learning任务判断是否构成互译。

3.「Unicoder for Generation」 (Liang et al.,2020)

  • 由于2不能做生成而提出;

  • 对输入加噪,试图在解码时去噪。

4.「Unicoder一VL for Images」 (Li et al, 2020)

  • 到图像上的预训练,考虑图片+注释。

5. 「Unicoder一VL for Videos」 (Luo et al., 2020)

  • 同理,做视频的预训练,多任务训练得到,融入了文本信息。

6.「LayoutLM: Text+Layout Pre 一training」

  • 文档的预训练(考虑了排版的信息,OCR结果的位置信息)

应用

  • QA

  • Question Generation

  • Multilingual QA

  • Multilingual News Headline Generation

  • Image Search

  • Document Understanding

  • Video Chaptering

XCLUE基准

二、代码智能 (基于预训练模型)

能不能把自然语言的方法应用到代码领域,提高效率?

已有工作

  • excel检测已经完成的部分

  • 从自然语言的query通过parsing到SQL

  • GPT-3代码生成(从自然语言描述到代码块)

现成资源

模型

  1. 「CodeBERT」 (Model-1)

  • baseline,在数据基础上直接训练一个Bert。

  • 「CodeBERT (Model-2): Pre-Train with Code + Text」

    • 考虑到代码有自己的特点(注释)。

  • 「CodeBERT (Model-3): Pre-Train with Code + Text + Structure」

    • 除了注释还考虑到代码有结构(AST),变量有依赖或顺序关系。

  • 「CodeGPT」

  • 下游任务

    1. 找到和输入自然语言串符合的code

    2. 写了一段代码,补足下一个词

    3. 找到bug并且修改

    4. 不同语言的代码之间的翻译(低资源问题,如何应用单语数据)

    CodeXGLUE数据集和任务汇总

    成本估算

    评测

    基于3点:不同词的权重不同,AST的匹配,语义一致(看变量是否一致)

    评测本身是否好?(看哪种评价和人工评价最吻合)

    总结

    未来的工作方向

    提问

    问:从高校的角度如何在预训练方面工作?

    答:

    • 不要军备竞赛或者拼蛮力,应该做方法论,例如如何融入知识;

    • 小模型能否做很好的工作;模型压缩,知识萃取;

    • fine-tune也有很多工作,什么样的方法微调会比较好;

    • 扩展应用领域;

    • 跨学科工作。

    问:代码自动生成的规则是硬约束还是自动学习,如何保证正确性?

    答:NLP工作者只知道串对串,对几个词的不同比较宽容,但编程只要错一点就没法运行。如何评测是需要考虑的,目前没有很好的办法数字化衡量,例如可执行性,但逻辑性效率等都可以做一些模拟工作,希望大家未来想办法自动评价

    问:想关注跨模态工作前景?

    答:以前从其他领域借鉴了很多方法,挪到了NLP;后来NLP的transformer等等,有更好的预训练模型,可以反攻其他领域了。这件事是NLP工作者应该好好考虑的,一切序列化的任务都可以看作自然语言任务,提高相关领域的技术发展,反哺其他领域。

    编辑:王菁

    校对:汪雨晴

    点击“阅读原文”查看报告

微软亚洲研究院周明:从语言智能到代码智能相关推荐

  1. 北大AI公开课第十一课--语言智能的进展by微软亚洲研究院周明

    想做的事情很多,但是时间却很有限.所以我们更应当在开始任何事情之前,做好足够的计划和准备,这样才能在有限的时间里做出最恰当的选择,为自己真正值得做的事争取出更多时间.之所以有这个感悟是因为最近太多事情 ...

  2. 北大AI公开课2019 | 微软亚洲研究院周明:NLP的进步将如何改变搜索体验?

    本文由InfoQ家整理首发,未经授权请勿转载 4月3日,北大AI公开课第七讲如期开讲,微软亚洲研究院副院长周明与大家分享了近期自然语言技术取得的进展和创新成果,并探讨了自然语言技术和搜索引擎如何进一步 ...

  3. 北京大学微软亚洲研究院人工智能与信息社会大纲(MOOC)-北大陈斌.md

    授课目标 本课程的目标,是为大学生和社会公众提供一个深入理解人工智能的入门基础,使学生初步了解人工智能技术的基本概念.发展历史.经典算法.应用领域和对人类社会的深远影响,从而打开学习人工智能的大门,为 ...

  4. 微软亚洲研究院(MSRA)副院长周明:未来5-10年,NLP将走向成熟

    近日,微软亚洲研究院(MSRA)副院长周明在「自然语言处理前沿技术分享会」上,与大家讲解了自然语言处理(NLP)的最新进展,以及未来的研究方向,以下内容由CSDN记者根据周明博士的演讲内容编写,略有删 ...

  5. 微软亚洲研究院院友会,AI大牛新动向|AI科技评论周刊

    本周微软亚洲研究院院友会召开"让世界充满 AI-人工智能研讨会",曾在微软亚洲研究院学习.工作过的 200 余位来自海内外学.业界人士出席了本次会议,分享他们在人工智能领域的最新研 ...

  6. 微软亚研院副院长周明:从语言智能到代码智能

    11月6日上午,在中国中文信息学会和中国计算机学会联合创办的"语言与智能高峰论坛"上,微软亚洲研究院副院长周明,以<从语言智能到代码智能>为题,介绍了智能代码理解和生成 ...

  7. 微软亚洲研究院副院长周明离职,将加入创新工场

    据悉,微软亚洲研究院副院长周明于近日宣布从微软离职,并将加入李开复创办的创新工场. 在朋友圈里,周明发表了以下感言: 周明是微软亚洲研究院副院长.国际计算语言学协会(ACL)主席.中国计算机学会理事. ...

  8. 突发!微软亚洲研究院副院长周明离职,将加入创新工场

    点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 本文转载自:AI科技评论   作者 | 青暮.陈大鑫 AI科技评论获悉,微软亚洲研究院副院长周 ...

  9. 今晚直播 | 微软亚洲研究院徐毅恒:预训练时代下的文档智能

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

最新文章

  1. 八年之痒!除了NLP和CV,人工智能就不能干点别的啥了?
  2. python安装方法32位_Python-3.9.0 安装教程【64位/32位】
  3. 九大技巧教你快速提升移动应用登陆转化率
  4. 【GIF动画+完整可运行源代码】C++实现 希尔排序——十大经典排序算法之四
  5. Jquery中post与get之间的区别详细介绍
  6. rest_framework04:ModelSerializer/Serializer高级用法
  7. java postconstruct_java的@PostConstruct注解
  8. 余承东亲曝P40相机成本,比骁龙865还贵,涨价原因找到了!
  9. 中兴计算机专业,中兴计算机专业面试题.pdf
  10. C++ eof()函数相关应用技巧分享
  11. tomcat通过虚拟路径访问外部静态资源
  12. 使用IBM SPSS Statistics的新手应该如何入门
  13. 【seaborn】(五)联合分布图
  14. EXCEL TIPS From Webs
  15. 模仿努比亚网站二(广告区域)
  16. 撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing
  17. EOS基础全家桶(九)官方测试网的使用
  18. 10.11_attention
  19. cv2.imread()和cv2.cvtColor() 的使用
  20. LightDB单机安装

热门文章

  1. push msg php_基于web-msg-sender进行消息推送
  2. vs单元测试之顺序测试
  3. pl/sql连接数据库
  4. java中HashMap在多线程环境下引起CPU100%的问题解决
  5. 成贤学院计算机组成原理,东南大学成贤学院计算机硬件课程设计报告解读.doc...
  6. pandas.set_index()
  7. 列子御风 大道至简 心诚天人合一
  8. @Autowired注解通过源码讲原理
  9. 机器学习--Gradient Boosting Machine(GBM)调参方法详解 转 面试问到的
  10. ValueError: Variable rnn/basic_lstm_cell/kernel already exists, disallowed.