当前位置: 首页 > news >正文

上饶商城网站建设网站代码建设 实例

上饶商城网站建设,网站代码建设 实例,建设企业网站找谁,wordpress s3插件文 | 智商掉了一地你有没有想过#xff0c;让一台计算机诊断和修复自己生成的错误代码#xff1f;一篇最新的研究论文介绍了一种名为 Self-Debugging 的技术#xff0c;通过在生成的代码中添加自解释的信息#xff0c;让计算机像一个可以自己修复代码的程序员一样调试自己的…文 | 智商掉了一地你有没有想过让一台计算机诊断和修复自己生成的错误代码一篇最新的研究论文介绍了一种名为 Self-Debugging 的技术通过在生成的代码中添加自解释的信息让计算机像一个可以自己修复代码的程序员一样调试自己的 BUG。随着大型语言模型LLMs在代码生成领域的不断发展取得了令人瞩目的性能。然而在面对复杂的编程任务时一次性生成正确的解决方案变得越来越具有挑战性。为了解决这一问题先前的研究提出了一些代码修复方法来改善代码生成性能。而在本篇论文中作者提出了一种名为 Self-Debugging 的方法通过少量示范来教大型语言模型调试它所生成的代码。该研究表明Self-Debugging 方法可以教大型语言模型进行橡皮鸭调试即在没有任何关于代码正确性或错误信息的反馈的情况下通过自然语言解释生成的代码来识别其错误这种方法对于提升代码生成性能具有潜在的巨大价值。为了验证 Self-Debugging 方法的有效性作者在多个代码生成基准测试上进行了实验包括文本到 SQL 生成、C 到 Python 翻译和文本到 Python 生成。该方法不仅在提升预测准确性方面表现出色同时还在样本效率上获得了显著的改进通过利用反馈信息和重用失败的预测能在样本效率上具有优势并且在与生成超过 10 倍候选代码的基线模型相比时能够取得匹敌甚至超越的表现。综上所述这篇文章提出的 Self-Debugging 方法为解决复杂编程任务中代码生成困难的问题提供了一种新颖且有效的解决方案。这一研究将为解决复杂编程任务中代码生成的难题带来了新的可能性对推动大型语言模型在代码生成领域的应用和发展提供了有力支持。论文题目: Teaching Large Language Models to Self-Debug论文链接: https://arxiv.org/abs/2304.05128背景探索近期的大型语言模型在生成代码方面有了显著的改进但生成正确的代码仍然具有挑战性。研究表明从模型中采样多个程序时选择最佳候选程序的准确性更高。即使对于人类程序员来说第一次编写的代码并不总是正确的他们通常会检查代码并根据执行结果更改来解决实现错误。因此该研究提出了一种名为 Self-Debugging 的方法通过执行生成的代码并基于代码和执行结果生成反馈信息来引导模型进行调试。不同于需要额外模型训练的方法Self-Debugging 通过代码解释来指导模型识别实现错误类似于人类程序员通过逐行向橡皮鸭解释代码行来提高调试效率的方法。图 1 展示了 Self-Debugging 的完整过程。在每一步调试中模型首先生成新的代码然后执行该代码并解释代码解释和执行结果构成了反馈信息然后将反馈信息发送回模型以执行更多的调试步骤。当单元测试不可用时反馈可以完全基于代码解释。▲图1 使用大型语言模型进行迭代调试的 Self-Debugging生成代码的 Prompt 技术Few-shot promptingFew-shot prompting 是一种通过几个输入-输出演示来指导语言模型完成任务的方法。以文本到 SQL 生成为例few-shot 提示在感兴趣的问题前面加上question, SQL对的列表这样当模型被要求预测给定提示后的后续 token 时它会按照提示的格式生成 SQL 查询语句。图 2 展示了一个示例的提示。此外这种方法还可以在提示中添加指令来提供高级任务描述。▲图2 文本到 SQL 生成的示例基于执行的代码选择先前的研究表明对于大型语言模型在解码过程中生成多个预测结果可以显著提高性能特别是在代码生成任务中可以利用代码执行结果来选择最终的预测结果。有以下两种方法使用执行结果的多数投票来选择最终的预测结果设计重新排序方案来提高性能。在本研究中当存在多个预测结果时遵循第一种方法选择在执行时没有遇到错误的预测中具有最频繁执行结果的代码并对其应用 Self-Debugging。一些代码生成任务伴随着单元测试以指定程序的执行行为。在问题描述中给出单元测试时执行基于多数投票的选择之前会先过滤掉未通过单元测试的程序。Self-Debugging 框架图 1 展示了 Self-Debugging 迭代调试框架使用未经微调的预训练大型语言模型。在给定问题描述后模型首先预测候选程序然后推断程序的正确性并生成反馈信息以进行后续的调试步骤。当反馈信息表明预测结果是正确的或者达到了允许的最大调试轮数时调试过程终止。现有的研究表明语言模型可以通过训练来理解人类对代码的反馈并根据指令进行修正。然而目前尚不清楚语言模型是否能够在没有人类辅助的情况下自行进行调试。在接下来的讨论中将探讨如何利用代码执行和 few-shot 提示来生成不同类型的自动获取和生成的反馈信息。通过简单反馈进行 Self-Debugging最简单的自动反馈形式是一句话仅指示代码的正确性没有更详细的信息。例如在文本到 SQL 生成任务中 few-shot 提示会依据正确或错误结果为所有 SQL 查询提供反馈信息“上面的SQL预测是正确的”“上面的 SQL 预测是错误的请修正 SQL。”使用单元测试进行 Self-DebuggingUT对于包含单元测试的代码生成任务除了通过代码执行来检查代码的正确性外还可以在反馈信息中呈现单元测试的执行结果从而为调试提供更丰富的信息。图 5 的示例包含了代码翻译任务的单元测试反馈信息。通过检查运行时错误消息和未通过的单元测试的执行结果可以帮助人类程序员更有效地进行调试。实验结果表明利用单元测试可以显著提高调试性能。通过代码解释进行 Self-DebuggingExpl.尽管大型语言模型在生成批评性反馈方面取得了一些进展以避免生成有害的输出并在自然语言和推理任务中提高性能但先前的研究尚未在代码生成任务中验证了反馈的有效性。然而研究表明大型语言模型可以生成描述问题解决方案的文本和代码。基于这一启示提出了一种新方法即通过解释生成的代码来教模型进行自我调试而不是教它预测错误消息。这种调试过程类似于程序员通过向橡皮鸭逐行解释代码来进行调试。研究验证了即使在没有单元测试的情况下大型语言模型也可以从这种调试方法中获益。应用文本到 SQL 生成在文本到 SQL 生成任务中使用 Self-Debugging 方法旨在评估大型语言模型的性能如图 3 所示。由于缺乏单元测试模型更难推断预测的 SQL 查询的正确性。▲图3 用于生成文本到 SQL 的 Self-Debugging 提示示例调试过程包括三个步骤首先模型通过提示对问题进行总结并推断问题所需的返回类型即对应 SQL 查询表的列数。其次模型执行 SQL 查询并将返回的表格添加到输入中以进行代码解释。生成的 SQL 解释包括对每个子句的详细描述、包含在返回表格中的列数以及完整 SQL 查询的高层含义。如果返回表格超过两行只有前两行包含在提示中。最后模型将推断的 SQL 解释和问题描述进行比较并预测当前 SQL 查询的正确性。Self-Debugging 过程在第三步中认为 SQL 查询是正确的或者达到最大的调试轮数时终止。这种方法使得模型能够通过对生成的 SQL 查询进行解释和比较从而自我调试并预测 SQL 查询的正确性。可以有望提高模型在文本到 SQL 生成任务中的性能并弥补缺乏单元测试的限制。代码翻译在实验中TransCoder 数据集包含了不同编程语言中的平行函数以及单元测试的测试集。根据先前研究的方法将 Self-Debugging 应用于将 C 代码翻译成 Python 代码的任务并且使用了相同的测试集包含 560 个问题和每个问题 10 个单元测试问题描述包括了 C 代码和所有单元测试如图 4 所示。▲图4 TransCoder 数据集中的一个示例。问题描述包含 C 程序和单元测试并且需要该模型来预测 Python 程序。由于单元测试的可用性研究人员只在预测的 Python 代码未通过所有单元测试时才应用 Self-Debugging 技术这样模型就不需要预测反馈信息。如图 5 所示他们迭代地应用 Self-Debugging 技术直到预测的代码通过了所有单元测试或模型达到了预设的最大调试轮数。▲图5 用于代码翻译的 Self-Debugging 提示的示例。左侧是模型预测右侧包含基于代码执行的输入 C 代码和反馈消息。文本到 Python 生成在问题描述中包含了部分单元测试MBPP 数据集包含了 500 个 Python 问题的文本描述每个问题都包含3个单元测试。作者在提示中包含问题描述中的第一个单元测试并将剩余的2个单元测试保留以进行完整的评估。与代码翻译类似可以在反馈信息中利用单元测试的执行结果但主要的区别在于即使预测的 Python 代码通过了给定的单元测试模型仍然需要推断代码的正确性。实验这里对实验部分将不再赘述作者在所有 Self-Debugging 的实验中使用贪婪解码来生成代码解释、反馈信息和新的程序并将最大调试轮数设置为 10。实验证明成功的调试过程通常在 3 轮内结束。▲表1 用于文本到 SQL 生成的 Spider 数据集的准确性▲表2 TransCoder 数据集的准确性。其中所有非调试的方法都使用贪婪解码而 Self-Debugging 方法则用 Codex 预测进行调试▲表3 用于文本到 Python 生成的 MBPP 数据集的准确性在表格 1、2 和 3 中作者展示了 Self-Debugging 与现有方法的比较结果由于没有可用的单元测试仅有简单的反馈并不能改善性能因为模型无法仅通过少量的示例区分正确和错误的 SQL 查询并且不能对初始预测的 SQL 查询进行有意义的修改。简单的反馈利用了执行结果来推断代码的正确性即使执行信息没有在反馈信息中呈现给模型。因此简单的反馈仍然改进了模型的预测性能。对于所有任务模型从更丰富的反馈信号中受益。尤其是代码解释使得模型可以在没有单元测试的情况下进行 Self-Debugging。在消融实验中作者主要指出以下几点文本到 SQL 生成▲图6 Spider 开发集的消融研究。(a)使用不同数量的初始样本进行准确度。(b)不同难度等级问题的细分精度。通常情况下一个调试轮次已经足够。这些结果强调了利用大型语言模型解释代码进行调试的优势。在图 6b 中进一步展示了不同难度级别问题上的准确性细分情况其中每个问题的难度在数据集中根据目标 SQL 查询的复杂性进行了注释。在不同难度级别的问题上Self-Debugging 对于较难的问题改进更加显著。解决难题的能力特别是在额外困难问题上Self-Debugging 将准确性提高了 9%。图 7 展示了一个额外困难问题中Self-Debugging 修复了预测的 SQL 查询的例子。▲图7 Spider 基准测试中的一个例子代码翻译▲图8 TransCoder 消融研究图 8a 展示了不同调试轮次上的准确性图 8b 展示了不同初始样本数量上的准确性。将单元测试执行和代码解释结合起来可以提高调试性能在图 9 和图 10 中展示了这些例子。如图 8b 所示单独利用代码解释而不进行 Self-Debugging 也可以在不同数量的样本上提供一致的性能提升。▲图9 通过单元测试反馈进行 Self-Debugging 修复了代码翻译错误而简单的反馈方法则未能成功▲图10 带有代码解释的翻译会正确地检查字符串的末尾文本到 Python 生成▲图11 在 MBPP 上的一个例子Self-Debugging 后的预测与初始代码有很大差异发现在初始预测代码与正确解之间差距较大时代码解释的作用较小此时模型更倾向于生成新的程序而不是依赖于初始预测中的代码片段。在图 11 中展示了一个例子其中 Self-Debugging 后的预测代码与初始代码差异很大。小结本文介绍了 Self-Debugging 技术它使得大型语言模型能够自行调试所生成的代码该方法使模型能够进行橡皮鸭子调试从而使模型能够在没有人类指导的情况下识别和修复错误。在多个代码生成领域它实现了最先进的性能并且显著提高了样本效率。在文本到 SQL 生成任务中由于该任务没有指定单元测试利用代码解释进行 Self-Debugging 以及在最困难的问题上可以始终有好效果。对于代码翻译和文本到 Python 生成任务在有单元测试可用的情况下Self-Debugging 准确性提高了多达 12%。本工作强调了通过教大型语言模型迭代来自己调试预测的方法从而改进其编码性能的潜力而非要求模型从零开始生成正确的代码。Self-Debugging 指导模型理解代码、识别错误并根据错误信息修复错误。未来的研究方向可以包括进一步提高模型在调试过程中的能力。例如探索让模型更好地描述代码的高级语义含义和实现细节从而提高其代码解释能力。考虑在模型的反馈中包含更多的调试信息例如潜在错误的描述以提供更加丰富的指导。相信这些改进将进一步推动大型语言模型在编码任务中的性能提升并在实际应用中发挥更大的潜力。若是有朝一日用大模型的问答工具准确地辅助我们写代码少了焦头烂额 Debug 的内耗时刻岂不美哉卖萌屋作者智商掉了一地北理工计算机硕士在读近期沉迷于跟 ChatGPT 唠嗑对一切新颖的 NLP 应用充满好奇正在努力成为兴趣广泛的斜杠青年作品推荐我是粉红猪佩奇我要把粉色吹风机写进 IJCAI 论文AI取代人类可以自动生成prompt了ICLR 2023 最高分论文被锤抄袭AI讲话总爱“结巴”这篇NeurIPS论文找到了病因结巴率已接近人类如何提升大规模Transformer的训练效果Primer给出答案Yoshua Bengio我的一生后台回复关键词【入群】加入卖萌屋NLP、CV、搜推广与求职讨论群
http://www.hkea.cn/news/14423065/

相关文章:

  • 济南外贸网站建站手机端网站排名
  • 陕西省住房建设厅网站北京公司建站模板
  • 在青海省住房和城乡建设厅网站怎么制作微信表情包
  • 失物招领网站开发项目需求分析做分销微商城网站
  • 宣城网站开发百度商桥网站代码去哪里添加
  • 做外汇哪个网站看外国消息专业团队图片张伟
  • 销售网站需要备案么访问wordpress下的子目录
  • 做网站的公司哪家最好长江设计公司
  • 电脑网站你懂我意思正能量php网站开发进程状态
  • 阜阳学校网站建设wordpress 3.6.1
  • 济南网站建设 力选聚搜网络wordpress 个人电脑
  • 网站建设 工作室专业建设包括哪些方面
  • 怎么把别人网站模板下载出来wordpress 做官网
  • 网站app客户端制作wordpress 插件 上传图片
  • 自助建站系统源码下载百度网盟推广
  • 漂亮的网站设计淘宝客 wordpress 主题
  • 手机网站建设讯息如何介绍设计的网站模板
  • 织梦网站版本做网站刷QQ会员网站
  • 著名的深圳网站建设网站做友链
  • 淮南家政网站建设地址做漫画网站 漫画哪找
  • 网站建设如何搞活动企业形象vi设计公司
  • 网站前台模板下载热门国际新闻
  • 福建福清市住房和建设局网站wordpress增加动效
  • 网站后台更新后主页没有变化网站排名推广的优点是什么
  • 上海做网站搜索一下马来西亚的做分销网站系统
  • 新网站建设wordpress迁移跳转原网站
  • 变更备案网站可以访问吗怎么把网站源码
  • 建设论坛网站需要做什么泉州市建设工程
  • 那里建站好html5网站单页模板
  • 小型购物网站模板制作app用什么软件好