目录
- 简介
- 有哪些预训练
- 预训练的影响
- 回答RQ1
- 回答RQ2
- 总结
简介
Title: Automating Code-Related Tasks Through Transformers: The Impact of Pre-training1
Author: Rosalia Tufano, Luca Pascarella, Gabriele Bavota
Published: ICSE2023
Abstract:
尽管现在很多研究能够证明预训练可以提升模型性能,但很少有研究解释预训练目标的影响。耳熟能详的MLM只是NLP领域的常见的文本预训练任务,而且NLP领域近期的研究也表明专门为下游任务设计预训练目标能进一步提升模型性能。例如,在代码摘要任务中,预训练目标可以是为方法生成一个合适的方法名。这篇文章预训练了32个Transformer(Text-To-Text Transfer Transformer (T5),small版本)模型,其中包含了使用通用预训练目标和专门为下游任务设计的预训练目标。实验包含了三个任务:bug-fixing, code summarization, code completion。结论包含两点:(1)预训练能提升模型性能,即使下游任务数据集很小。(2)MLM目标通常足以使模型的预测性能最大化。
单从摘要角度来看个,感觉结论的第一点是显而易见的。而第二点和上面提到的“NLP领域近期的研究”相矛盾,意味着大家以后也不用为下游任务特定设计预训练目标。
有哪些预训练
这篇文章首先给出目前代码相关的预训练任务总结
后续还会用到的预训练目标:
- MLM:随机遮住一些token,然后模型预测被遮住的内容
- NSP:给出两个句子a,b,预测a句子的下一句话会不会是b
- RTD:预测一个token是否属于原始的句子,还是被随机替换了
预训练的影响
这篇文章只用了两个RQ来探索预训练的影响(对应于摘要中的两个结论)
RQ1: To what extent is the effectiveness of pre-training influenced by the size of the fine-tuning dataset?
- RQ1探索预训练在下游fine-tuning数据集上的影响
- RQ1中仅选择MLM作为预训练目标
RQ2: To what extent does the choice of the pre-training objective impact the performance of transformer models?
- RQ2对比了通用的和特定设计的预训练目标,并探索了多个预训练目标的结合
- general vs task-specific objectives
- combinations of multiple objectives
- 通用的预训练目标选择:MLM,NSP,RTD
- 任务特定的目标选择如下:
- bug-fixing任务:IMF
- code summarization 任务:MNG
- code completion任务:CBS
首先解释特定任务的预训练目标
- Injected-Mutants Fixing (IMF): 输入给T5一个原始代码的变异体,要求模型输出中还原出原始输入
- Method Name Generation (MNG):要求模型输出给定代码的函数名
- Code Block Selection (CBS):给定函数并mask掉一个代码块,并给出两个候选代码块,模型需要选择一个合适的代码用于替换掉被mask掉的代码
预训练和fine-tune所用的数据集
回答RQ1
可以看出这篇文章预训练出来的模型在fine-tuning数据集小的时候才能好于不预训练的结果。
回答RQ2
上图展示了使用不同预训练目标进行预训练的结果,第一列表示任务,第二列表示单独预训练目标,后面表示预训练目标结合的情况。
改论文的得到的结论是:
- 不同预训练目标的导致的模型性能差异较大
- MLM预训练目标最有效
- 如果特定任务的预训练目标能达到如下条件则能提升性能(i)与非特定目标(如MLM)相比捕获正交信息;以及(ii)严格模拟下游任务。
这个其实有点奇怪,按理说如果有一个预训练目标没什么作用,那么按理说结合了这个预训练目标之后不会对预训练过程产生明显的不良影响。
总结
优点:
- 这篇文章所面向的问题是一个值得探索的问题
- 文章中对SE相关任务的总结比较全面
- 文章中预训练了多个模型,进行了多种对比实验
不足:
- 文章中均基于一种预训练模型,没有在已有数据集上进行实验,且所有实验性能均较低,所以难以具有较强的说服力
- 文章中的针对任务特定的预训练目标较少,不确定是否能够代表专门为该任务设计的预训练目标
- 文章中的结合预训练目标后实验性能有下降,按直觉而言,结合一个有意义的预训练目标不提升可以理解,但下降了很多就会令人困惑,而论文中却没有解释这一点。
写作参考
tailored for:为xxx而定制
https://arxiv.org/abs/2302.04048 ↩︎