Page 125 - 《软件学报》2026年第6期
P. 125

2444                                                       软件学报  2026  年第  37  卷第  6  期


                 30.4%, 精度损失分别降低     24.7%  和  51.0%. 实验结果表明, AKD  方法可以在保持模型参数规模小的同时, 显著降
                 低精度损失.

                                                                               η=1E−4

                                                                               η=1E−5
                                     1.2                                       η=5E−5
                                     1.0
                                     0.8
                                    损失值  0.6


                                     0.4

                                     0.2
                                      0
                                       0  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
                                                            训练轮数
                                        图 3 部分学习率设置下        SFT  训练损失值变化曲线图

                    综上所述, 直接使用      SFT  微调小参数模型效果不佳, 参数调整对微调效果的提升有限, 且过程繁琐. 相较而言,
                 AKD  方法在大参数模型的指导下微调小参数模型, 无需针对数据集进行复杂的参数调整, 就能显著提升小参数模
                 型  11.9%  的准确率, 相较大参数模型精度损失仅         17.2%. 因此, AKD  方法是必要的.
                  4.4.2    RQ2: AKD  方法是否比前沿的知识蒸馏方法更好?
                    为验证   AKD  方法在代码生成任务中的有效性, 本文将其与多种先进的知识蒸馏方法进行对比实验, 结果如
                 表  5  所示. 原始学生模型在    HumanEval 数据集上的    Pass@1  准确率为  13.4%, 精度损失为   54.2%; 在  MBPP  数据集
                 上, 准确率为   14.0%, 精度损失为   56.3%.

                           表 5 AKD  方法与其他知识蒸馏方法在          HumanEval 与  MBPP  数据集上的性能对比 (%)

                                                          HumanEval                     MBPP
                        模型             方法
                                                    Pass@1        精度损失           Pass@1       精度损失
                     StarCoder-7B     教师模型            29.3          -             32.0          -
                                      学生模型            13.4         54.2           14.0          56.3
                                      MiniLLM         15.8         46.0           18.8          41.3
                                       RKD            16.4         44.0           19.4          39.4
                     StarCoder-1B
                                        KD            17.1         41.7           24.6          23.1
                                       SeqKD          18.3         37.0           26.2          18.0
                                       AKD            20.7         29.3           30.4          5.0

                    采用  RKD  方法后, 模型的精度有所提升, 在         HumanEval 和  MBPP  数据集上的精度损失分别下降至         44.0%  和
                 39.4%. KD  方法进一步改善了模型性能, 精度损失分别为              41.7%  和  23.1%. 然而, 结合了  RKD  和  PPO  技术的
                 MiniLLM  方法并未取得预期效果, 其精度损失在           HumanEval 和  MBPP  数据集上分别为     46.0%  和  41.3%, 表现不
                 如直接采用    RKD  或  KD. 这表明在代码生成任务中, 引入        PPO  并未带来显著的性能提升.
                    与  KD  和  RKD  方法相比, SeqKD  方法是基线模型中表现较佳的, 在         HumanEval 和  MBPP  数据集上的精度损
                 失分别降低至     37%  和  18%. 这是因为  SeqKD  方法的训练数据均由教师模型生成, 在训练时的输出概率分布集中
                 于主要概率, 采用     KL  散度可以有效地帮助学生模型学习教师模型的内容. 而                 KD  或  RKD  方法训练时则存在趋零
                 概率区域或高概率区域的分布, 影响学生模型的学习效果.
                    相比之下, AKD    方法能显著提高模型性能, 在         HumanEval 数据集上的    Pass@1  准确率提升至    20.7%, 精度损
                 失降至   29.3%, 较次佳的   SeqKD  方法降低了    7.7%  的精度损失. 在   MBPP  数据集上, AKD    方法的准确率达到
   120   121   122   123   124   125   126   127   128   129   130