📖标题:WarriorCoder: Learning from Expert Battles to Augment Code Large Language Models
🌐来源:arXiv, 2412.17395
🌟摘要
🔸尽管代码大语言模型(LLM)最近取得了进展,但它们的卓越能力在很大程度上取决于对高质量数据的微调,这给数据收集和注释带来了挑战。为了解决这个问题,当前的方法通常会设计各种数据飞轮来收集复杂的代码指令,使模型能够处理更复杂的任务。然而,这些方法通常依赖于现成的数据集和来自有限专有LLM(如Claude、GPT4等)的数据增强,这限制了构建数据的多样性,并使其容易产生系统性偏差。
🔸在本文中,我们提出了WarriorCoder,它从专家战斗中学习来解决这些局限性。具体来说,我们为当前的专家代码LLM创建了一个舞台,在这里,每个模型都会挑战和回应他人的挑战,并由无关的评判模型进行评估。这个竞争性框架生成了从头开始构建的新培训数据,利用了所有参与者的优势。
🔸实验结果表明,与之前的方法相比,即使不依赖于专有的LLM,WarriorCoderachi也能提高竞争性能。
🛎️文章简介
🔸研究问题:当前代码大语言模型(LLM)在数据收集和标注方面存在挑战,特别是高质量数据的稀缺性和多样性不足。
🔸主要贡献:论文提出了一种名为WarriorCoder的新方法,通过从专家代码LLM的竞争中学习,自动生成高质量的训练数据,从而提升目标模型的性能。
📝重点思路
🔸主要思想:通过构建一个“竞技场”让多个专家代码LLM进行竞争。每个模型在竞技场中挑战其他模型,并由不相关的LLM作为裁判进行评价。目标模型从这些竞争中学习,吸收各个专家模型的优势。
🔸指令挖掘:从专家模型中挖掘高质量的指令,使用KCenterGreedy算法选择具有代表性和多样性的指令,避免模式过拟合。
🔸胜负决策:通过LLMs作为裁判,评估每个模型的响应,并使用Elo评分系统综合考虑局部和全局表现,确保评价的公平性和准确性。
🔸最终训练:构建包含指令、模型响应及其评分的训练数据集,采用SFT和KTO等方法进行后训练。
🔎分析总结
🔸性能提升:WarriorCoder在多个基准测试(如HumanEval、MBPP等)上显著超越了其他微调模型,特别是在HumanEval和HumanEval+上分别提升了24.5和26.4个百分点。
🔸数据质量:通过专家竞争生成的训练数据质量高,能够有效提升模型的泛化能力。
🔸成本效益:相比依赖人类标注和专有LLM的方法,WarriorCoder在低成本下实现了竞争性的性能。
💡个人观点
论文的核心是通过LLM之间的竞争来得到各自的优势输出,从而实现自动化的数据生成。