谷歌让NLP模型也能debug,只要给一张“草稿纸”就行( 二 )

谷歌让NLP模型也能debug,只要给一张“草稿纸”就行
文章图片
最后就是读Python代码了 。
代码的训练示例中 , 记录了正在执行的是哪行代码 , 以及此时各变量的值 , 用json格式表示 。
谷歌让NLP模型也能debug,只要给一张“草稿纸”就行
文章图片
此前的语言模型读代码的能力都表现不佳 。 “打断点”的方式可以让它们一改常态么?
首先 , 经过200个程序(都是人工编写的 , 包括简单的while循环和if语句)的测试发现 , “断点法”整体执行精度更高 。
与直接执行的模型相比 , 微调还可以将模型性能从26.5%提高到41.5% 。
谷歌让NLP模型也能debug,只要给一张“草稿纸”就行
文章图片
一个真实例子:
谷歌让NLP模型也能debug,只要给一张“草稿纸”就行
文章图片
“断点”法经过3次while循环 , 最终给出了正确的变量值 。
谷歌让NLP模型也能debug,只要给一张“草稿纸”就行
文章图片
接着 , 他们又用包含了1000个程序的MBPP数据集进行训练和测试 。
这些程序涉及多种数据类型的计算 , 包括整数、字符串、浮点数等 , 以及涉及循环、API调用和递归等流程结构 。
并添加训练数据之外的“singleline”程序集和CodeNet程序集进行测试 。
结果发现 , 模型也可以很好地扩展 。
谷歌让NLP模型也能debug,只要给一张“草稿纸”就行
文章图片
当然 , 这个方法也有局限性:
比如复杂的计算可能需要很“长”的暂存器 , 这可能需要进一步改进Transformer生成窗口的大小 。 好在这也是NLP领域的一个活跃研究领域 。
而在未来 , 他们可能会尝试在无监督情况下用强化学习让语言模型学会“打断点” 。
总之 , 语言模型的计算能力、读代码的能力会越来越强 。
论文地址:
https://arxiv.org/abs/2112.00114
—完—