上海交大林云:揭示大模型的可解释性和透明性,AI 未来的编程就在这里
在软件开发的世界里,代码的形成、编辑、测试和调试一直是核心活动。然而,随着大语言模型的介入,这些环节面临着深刻的变化。这些变化不仅提高了开发效率,也给我们带来了新的挑战和问题。8月18日至19日,AICon 幸运的是,上海站邀请了上海交通大学 计算机科学与工程系副教授林云,通过先进的分析技术,他将与我们讨论语言模型如何影响软件开发的每一个环节,并向我们展示如何优化和提高模型预测能力。
本文是会前采访的一篇文章。他深入探讨了软件开发中大语言模型的应用,分享了可视化技术和影响函数等可解释性策略。通过 ISSTA'24 举个例子,他展示了整个项目感知的互动编辑方案,讨论了数字孪生技术在验证模型能力中的应用;最后,他预测 AI 对于软件开发范式的影响,并且强调开发者在 AI 时代所需的新技能。
软件工程中大语言模型的应用与挑战
InfoQ:您认为当前大语言模型在代码生成、编辑、检测和调试等方面的表现如何?具体应用案例有哪些?
林云:这些软件工程任务自动化的瓶颈在于专有或领域知识的不足,如特定文档资源的获取、特定错误或异常根源的定位等。然而,语言模型的出现促使填补这种“知识差距”成为现实,通过压缩和编码大量的编程知识。我们的研究小组与字节合作,探索代码自动编辑,提出基于语言模型的端到端编辑方案,解决编辑的传播、定位、生成和反馈循环。
目前,定位和生成的准确性已经达到了相对理想的效果。对于测试,我们正在尝试进一步学习语言模型领域的知识,从而生成与领域相关的功能测试。对于调整,我们也期待模型生成整个调整过程,从而使技术更加实用。
InfoQ:在不同类型的编程任务中,大语言模型的优势和局限性是什么?
林云:语言模型的优点是常识量巨大,可以解决很多基于大量常识知识的解决方案。局限性在于长上下文的确定性推理(如跨文件的数据流分析等。).因此,有效解决语言模型和传统程序分析工具是一个非常有价值的课题。
可以解释的方法和模型透明度
InfoQ:你在练习和使用大语言模型时遇到了哪些可以解释的测试?如何解决这些挑战?
林云:可解释性的主要问题是代码表征分析和训练样本归因。事实上,表征分析希望理解模型是否能理解两个代码的相似语义。这种泛化模型的能力非常重要。训练样本的原因是处理模型的预测来自哪些训练数据,这对数据质量非常重要。
对于前者,我们开发了表征空间可视化技术,了解模型训练过程中的练习动态;对于后者,我们改进了传统的影响函数。(Influence Function),观察训练样本的贡献与相互签署的矛盾。
InfoQ:你能详细解释一下基于数据和基于表征的可解释方法,并分别讨论它们在实践中的应用效果吗?
林云:深度学习本质上是一种表征学习,任何样本都会在高维向量空间中有一个向量表示。我们目前的做法是将表征空间中发生的各种训练事件转化为观察训练过程的互动动画。
在这个过程中,我们可以观察样本之间语义距离的变化,并使用影响函数(基于数据的可解释方法)来进一步推断这些变化的根源。这些可解释的组合可以有效地帮助我们分析训练数据的质量、模型表达能力和训练数据标记中的一些问题。
InfoQ:您提到的 ISSTA’24 代码编辑工作是如何实现整个项目感知的互动编辑的?可以分享一些具体的实现细节吗?
林云:我们 ISSTA'24 该工作提出了一种端到端的代码编辑方案,叫做端到端。 CoEdPilot。当客户给出编辑条件时,我们的工具可以迭代完成整个项目的编辑定位和编辑生成。并通过将以前的编辑作为用户反馈,进一步调整和精化定位和结果。
我们设计了两个 transformer 将一个大的端到端任务拆解成两个小模型,以互动的方式完成任务。一个小的语言模型用于编辑和定位,另一个小的语言模型用于编辑和生成。我们通过收集大量的代码并提交历史记录来对这两个模型进行循环指令和微调,从而达到更好的效果。您可以关注更多详细信息 AICon 分享上海站。
InfoQ:你是怎样分析和追溯这种情况下的训练样本的?用什么技术手段来构建数字孪生环境?
林云:通过制定自己的影响函数,我们可以追溯到对其贡献最大的训练样本。这里的基本思路是通过分析一个训练样本和一个测试样本之间的预测相关性来实现的。对于数字孪生验证场景,我们期望将一个静态代码提交恢复到一个动态的代码编辑场景来检验模型能力。
InfoQ:你在演讲中提到了代码深度表征分析和数字孪生模拟编程场景。能否进一步说明这两种技术的实际实现方法及其对模型性能的影响?
林云:这里解决的主要问题是,模型训练的准确性并不意味着模型对真实编程的生产力,所以我们制定了这项技术来解决它们之间的差距。如上所述,我们将将静态代码提交恢复到动态代码编辑场景,以进一步验证模型能力。
InfoQ:如何通过这些技术提高模型的透明度和可信度?
林云:通过这些可解释的技术,我们希望有效地帮助程序员将模型训练过程白盒化。例如,模型的用户可以通过训练数据的归因来更好地理解模型做出决策的依据,从而方便用户更好地接受或拒绝模型建议。
未来展望与开发者技能
InfoQ:您认为未来大语言模型将如何影响软件开发模式?新的趋势和创新是什么?
林云:语言模型嵌入程序开发活动是大势所趋。过去代码开发的一些知识可能是程序员口耳相传的。有了语言模型,大家会慢慢思考,留下更多的代码开发历史,训练相应的模型来完成推荐。因此,未来的代码开发活动也将是数据标记活动,这可能会导致模型开发活动的探索和创新。
InfoQ:针对 AI 在时代,你认为开发者必须掌握哪些新的技能和知识来满足这些变化?
林云:我认为开发者可能需要在一定程度上理解。 AI 模型运行原理。因为可靠的软件交付不会改变要求,但是如果把工作交给概率驱动的语言模型,一方面需要有很强的验证机制来验证概率模型结果的稳定性;另一方面,我们需要了解语言模型本身的局限性。只有这样,我们才能有更好的人机合作编程方法来交付更可靠的软件产品。
本文来自微信微信官方账号“AI前线”(ID:ai-front),作者:李忠良,36氪经授权发布。
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com