Github Copilot编程工具背后的算法技术

这篇具有很好参考价值的文章主要介绍了Github Copilot编程工具背后的算法技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:zizhan居士 来源:投稿
编辑:学姐

前段时间大火的工具Github Copilot想必大家都略有耳闻,我们只需要输入一些注释说明你需要的函数功能,AI就会自动帮你编写完整的函数代码,代码逻辑、规范甚至比自己写的都好,可谓是让人瑟瑟发抖的结对编程好兄弟。

而这个工具背后的大boss就是参数量让人瑟瑟发抖的GPT-3语言模型。本文不仅介绍大哥大GPT-3,还对他的同胞兄弟GPT-1, GPT-2也进行介绍,讲解他们之间的演化过程。强烈推荐李沐老师的b站讲解视频,本文内容与之强相关,算是李沐老师讲解视频的一个笔记。

Github Copilot编程工具背后的算法技术

首先,简要介绍下,孕育这三兄弟的机构是OpenAI。

GPT-1:Improving Language Understanding by Generative Pre-Training

GPT-2:Language Models are Unsupervised Multitask Learners

GPT-3:Language Models are Few-Shot Learners

GPT-1 (生于2018年)

在自然语言处理任务中,存在大量无标签的语料数据,而有标签的语料数据相对较少,因此基于有监督训练的模型性能的提升大大受限于数据集。为了解决这个问题,作者提出先在大量的无标签数据上训练一个语言模型,然后再在下游具体任务的有标签数据集上进行fine-tune

利用无标签数据的难点

  • 设计何种目标函数来学习文本表示。已有的各种目标函数和子任务的相关度比较高,没有说哪一种目标函数特别好。

  • 如何有效地把语言模型学到的文本表示迁移到下游子任务上。因为NLP领域的各种任务差别比较大,没有一个统一有效的方式使得一种文本表示能够很好地迁移到各种子任务上。

算法关键

  • 无监督训练的模型采用Transformer的decoder,目标函数采用标准的语言模型的目标函数,即通过前文预测下一个词。
    这个目标函数其实是比BERT模型那种完形填空式的语言模型目标函数要难,因为预测未来要比预测中间难。这可能也是导致GPT在训练和效果上比BERT差一些的一个原因。反过来说,如果你的模型真能预测未来,那么要比BERT这种通过完形填空训练的模型的强大很多,这也是作者一直将GPT模型不断做大,诞生三兄弟的一个原因吧。

  • 有监督fine-tune采用标准的分类目标函数。此外,作者发现在有监督训练时额外加上语言模型的目标函数更好,能够提高模型的泛化性和加速模型收敛。

输入形式

对于不同的下游任务,将数据转换成统一的形式送入预训练好的语言模型,再接一层线性层进行分类等。可以发现,在fine-tune时,仅需要对预训练的语言模型做很小的结构改变,即加一层线性层,即可方便地应用于下游各种任务。

Github Copilot编程工具背后的算法技术

图1:在不同下游任务上输入数据的形式

GPT-2 (生于2019年)

GPT-2模型依旧使用Transformer模型的decoder,但相比于GPT-1,数据和模型参数变得更大,大约是之前的10倍,主打zero-shot任务。

现有基于监督学习训练的模型的泛化性不是很好,在一个任务上训练好的模型也很难迁移到下一个任务上。多任务学习(Multitask learning)是指在训练一个模型时,同时看多个任务的数据集,而且可能通过多个损失函数来达到一个模式在多个任务上都能用的效果,但是在NLP领域用的不多。NLP领域主流的做法还是像GPT-1或BERT那样先在大量无标签数据上预训练语言模型,然后在每个下游任务上进行有监督的fine-tune,但是这样也有两个问题:

  • 对于下游的每个任务,还是要重新训练模型

  • 需要收集有标签的数据

这样导致在拓展到新任务上时还是有一定的成本。因此,GPT-2提出利用语言模型做下游任务时,不需要下游任务的任何标注信息,即zero-shot设定,也不用训练模型。因此基本实现一劳永逸,训练一个模型,在多个任务上都能用。

此时,我们需要考虑一个问题,如图1所示,GPT-1在做下游任务时会对输入进行构造,引入了一些模型在预训练时没见过的符号(预训练时见到的是自然文本),比如Start、Delim、Extract,但因为有fine-tune的环节,所以模型会去认识这些符号。

然而,现在要做zero-shot,也就是在做下游任务时,模型不能被调整了,如果还引入一些模型之前没见过的符号的话,模型就会很困惑。因此,在构造下游任务的输入时,我们就不能引入模型未见过的符号,而要使得输入像模型预训练时见到的自然文本一样,比如:

机器翻译任务:translate to french, english text, french text。“translate to french”这三个词可以被认为是一个特殊的分隔符,后面叫Prompt。

阅读理解任务:answer the question, document, question, answer

下图所示为GPT-2在不同任务上进行预测时采用的Prompt:

Github Copilot编程工具背后的算法技术

图来自李宏毅老师机器学习课件

GPT-3 (生于2020年)

GPT-3结构和GPT-2一样,但是数据约为GPT-2的1000倍,模型参数约为GPT-2的100倍,暴力出奇迹,使得效果很惊艳。

GPT-3不再追求极致的zero-shot学习,即不给你任何样例去学习,而是利用少量样本去学习。因为人类也不是不看任何样例学习的,而是通过少量样例就能有效地举一反三。

由于GPT-3庞大的体量,在下游任务进行fine-tune的成本会很大。因此GPT-3作用到下游子任务时,不进行任何的梯度更新或fine-tune。

Github Copilot编程工具背后的算法技术

evaluate GPT-3

这里=>可以看成是一个Prompt。

GPT-3可以生成人类都很难分辨的新闻文章,瞎扯起来像模像样,比如:

Github Copilot编程工具背后的算法技术

news articles generated by GPT-3

局限性

  • 虽然效果比GPT-2好很多,但是在文本生成上还是比较弱的。假如让GPT-3生成一个很长的文本,可能给了几段之后,就会重复起来

  • 结构和算法的局限性。GPT-3是语言模型,不能像bert那样双向看。

  • 均匀地预测下一个词。不能判断哪个词重要,哪个词不重要,导致语言模型可能会花很长时间去学习一些常见的虚词,不像人类学习的划重点。

  • 样本有效性不够。基本上把整个网络上的文章下载下来了。

  • 做few-shot时,模型真的是根据你给的样本从头学习的吗?这样碰到训练样本上没有出现的任务,也能够泛化过去;还是根据这些样本,从训练记忆里找出相关的,认出了这个任务,那拼的就是训练数据的大小了。

  • 不具有可解释性

Improving Language Understanding by Generative Pre-Training Language Models are Unsupervised Multitask Learners Language Models are Few-Shot Learners https://www.bilibili.com/video/BV1AF411b7xQ

点击卡片👇👇👇关注,600+篇ACL论文免费领文章来源地址https://www.toymoban.com/news/detail-490525.html

到了这里,关于Github Copilot编程工具背后的算法技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何利用AI工具快速编程:从GitHub Copilot到ChatGPT

    随着人工智能技术的飞速发展,AI工具在编程领域的应用已经越来越广泛。这些工具通过利用机器学习、自然语言处理等技术,帮助开发者更快速、更高效地编写代码。本文将深入探讨几种目前最流行或最新的AI工具,包括GitHub Copilot、CodeGPT、Codey和Replit Ghostwriter,并分析它们

    2024年01月22日
    浏览(34)
  • 辅助编程工具Github Copilot、CodeWhisperer和Cursor(程序猿必看)【收藏】-让编程变得简单轻松

    基于深度学习的辅助编程工具推出标志着辅助编程工具进入了一个互卷的时代,为开发人员提供了更强大、智能化的编程支持。 本文介绍Github Copilot、CodeWhisperer和Cursor 以下是一些使用 AI 编程插件的好处: 自动代码补全 错误检测和纠正 代码优化和重构 文档和注释生成 GitH

    2024年02月09日
    浏览(19)
  • Github Copilot最全的安装与使用教程:一款非常好用的AI编程工具

    GitHub Copilot 供经过验证的学生、教师和热门开源项目的维护人员免费使用。 如果你不是学生、教师或热门开源项目的维护人员,可以在一次性 30 天试用期中免费试用 GitHub Copilot。 免费试用后,需要付费订阅才能继续使用。 GitHub Copilot目前为止可以免费试用 一个月 ,但是试

    2024年01月17日
    浏览(25)
  • Github Copilot VS Codeium ——哪款AI编程辅助工具更适合你

    自Github Copilot发布之后,它在复杂任务上表现质量高,延迟时间普遍较低的优秀表现深受广大开发者的亲睐,但也因为其价格太贵,偶尔会出现延迟和质量问题把很多开发者阻挡在了门外。Github Copilot 💲10/月或💲100/年(对学生/开源贡献者免费)。 Codeium的出现恰逢其时,个

    2024年02月14日
    浏览(29)
  • CodeGeeX、CodeWhisperer、Github Copilot三款AI辅助编程工具,程序员该如何选择?

    亚马逊今天在Re:Mars大会上宣布推出CodeWhisperer,这是一款类似于 CodeGeeX 和GitHub Copilot的AI辅助编程工具,它根据一个注释或几个按键来自动补全整个函数。目前支持Java、JavaScript和Python,和 CodeGeeX 一样,使用了数十亿行公开可用的开源代码、自己的代码库、公开可用的文档和公

    2023年04月16日
    浏览(29)
  • 微软和OpenAI联手推出了GitHub Copilot这一AI编程工具,可根据开发者的输入和上下文,生成高质量的代码片段和建议

    只需要写写注释,就能生成能够运行的代码?对于程序员群体来说,这绝对是一个提高生产力的超级工具,令人难以置信。实际上,早在2021年6月,微软和OpenAI联手推出了GitHub Copilot这一AI编程工具。它能够根据开发者的输入和上下文,生成高质量的代码片段和建议。这个工具

    2024年02月09日
    浏览(23)
  • AI编程工具Copilot与Codeium的实测对比

    csdn原创谢绝转载 现在没有AI编程工具,效率会打一个折扣,如果还没有,赶紧装起来. GitHub Copilot是OpenAi与github等共同开发的的AI辅助编程工具,基于ChatGPT驱动,功能强大,这个没人怀疑,看它的价格就知道了,最开始是10美元1个月,后面好像涨到20美元了. 我个人给它起

    2024年02月14日
    浏览(30)
  • 【AGI】Copilot AI编程辅助工具安装教程

    1. 基础激活教程 GitHub和OpenAI联合为程序员们送上了编程神器——GitHub Copilot。 但是,Copilot目前不提供公开使用,需要注册账号通过审核,我也提交了申请:这里第一期记录下,开启教程,欢迎大佬们来讨论交流。 第一步:Github开启copilot权限(已开启的 请忽略此步) copilo

    2024年02月13日
    浏览(21)
  • 测试了Copilot辅助编程后,就离不开这个AI工具了

    微软用·chatGPT 4· 对·github copilot X·升级后,本是怀着赠热点的心态测试了一下其功能。但 Copilot 智能化程度之高,令我吃惊,两周下来已离开不这个工具了。 下面简单分享一下其使用过程,以及对如何使用好这个工具的个人看法. IDE开发环境我使用的是 VSCode 与 Visual Studio2

    2024年02月06日
    浏览(21)
  • 写注释自动出代码?!在Cocos中试水AI编程工具Copilot,摸鱼神器or失业警告?

    去年的某一天,Cocos 的开发者交流群里突然爆发出一阵惊叹,有人直呼“饭碗不保”,有人忧虑版权和保密问题,也有人给出了积极的反馈—— 上下滑动查看更多 大家在讨论的 Copilot 是 OpenAI 与 GitHub 联合推出的一个 AI 自动编程工具,能根据上下文自动生成代码,供编程者参

    2024年02月09日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包