在对比过程中,aiXcoder 会使用 Kite 或 TabNine 官方提供的示例代码,并测试完成这段代码到底需要多少次按键。结果表明,aiXcoder 较其他插件在效率上提升 1.5 倍以上。
aiXcoder 是如何打造的
能够实现高效代码补全的 aiXcoder,背后有着强大的技术支撑。据李戈教授介绍,aiXcoder 很早就试过了语言模型,将代码视为一种语言从而直接建模,这就和 Deep TabNine 一样。但是研究者很快发现,只有语言模型是行不通的,它总会提出一些毫无意义、很不科学的补全建议。为此,aiXcoder 融合了基于序列的程序代码语言模型、基于抽象语法树和程序逻辑关系的图神经网络等方法,共同打造一个完整的系统。
如果深度学习模型能根据开发者的意图,以端到端的方式直接生成对应的代码,那么这样的模型会很「优雅」。但是经过研究发现,这样的任务需求是很难实现的,这和任务本身所依赖的数据的性质有关系。
李戈教授从机器学习所依赖的数据性质的角度,对代码生成任务和传统的图像处理任务、自然语言处理任务的不同,给出一种较为形象化的解释。
对于图像识别或图像分类任务而言,机器学习的目标是建立一个连续的数据集(图像数据)到一个近乎连续的、有着接近清晰边界的数据集(标签)之间的映射关系。
这样一来,由于图像数据异常的稠密,而标签集又有足够清晰的边界,那么这就相当于一个标签拥有大量的数据可以学习。这样的映射关系是比较容易建立的,这也是机器学习中和图像相关的任务相对较为容易完成的原因。
(编辑:惠州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|