代码完成旨在通过基于当前的编程环境预测潜在代码来提高编程生产率。最近,预先训练的语言模型(LMS)在这一领域变得突出。已经提出了各种方法使用监督的调整(SFT)技术来完成代码完成。但是,这些模型的固有暴露偏见可能会导致序列完成的早期累积错误,从而导致随后完成的更多错误。为了解决这个问题,深度加强学习(DRL)是用于完成代码完成LMS的替代技术,可以提高概括能力和整体性能。然而,将基于DRL的策略整合到代码完成中面临两个主要挑战:1)代码上下文的动态性质要求完成模型快速适应变化,这为传统的DRL策略构成了困难,该策略的重点是延迟奖励最终代码状态。2)很难评估部分代码的正确性,因此,基于奖励再分配的策略不能适应代码完成。为了应对这些挑战,我们提出了Ircoco,这是一个基于DRL的代码完成框架。此框架旨在提供即时的奖励,作为检测代码完成期间连续编辑引起的动态上下文更改的反馈。借助即时反馈,精细调整的LM可以更加精确地了解当前上下文,从而有效地调整LM并以更重新确定的方式优化代码完成。实验结果表明,使用IRCOCO进行的精细培训的LMS导致代码完成任务的显着改进,表现优于基于SFT和其他基于DRL的基础线。
主要关键词