LLMs模型应用于特定NLP任务的流程可以分为2个阶段:
- 一是无监督预训练阶段,在这一阶段,通过生成式预训练来得到语言模型,获得包括词汇、语法和语义在内的通用能力。
- 二是有监督微调阶段,在这一阶段,通过使用特定任务的标注数据,模型参数得到进一步的优化调整,以执行特定的NLP任务,如情感分析、文本分类、问答等。
一、损失函数
微调时仍然采用随机梯度下降法,微调阶段的损失函数如下:
其中,表示经微调后的模型参数,
表示针对任务相关数据的损失函数,
表示正则化系数,
表示正则化项,一般取为模型参数的L2范数。这一优化目标旨在通过正则化项防止过拟合,同时最小化任务相关数据的损失。
针对任务相关数据的损失函数具体如下:
其中,表示模型参数,
表示期望值,
表示在给定输入序列
和模型参数
的条件下,生成标签
的概率。这一损失函数预训练阶段的损失函数相似,但其关注的是任务相关标签的生成概率,而非单词的生成概率。
二、微调原理
针对特定的NLP任务,需要对输入序列进行恰当的转换,这些转换被称为任务特定输入转换(Task-specific Input Transformation),其主要目标是适配特定任务格式的输入序列。
例如需在序列中插入特殊的标记,如在序列开头插入“[NLI]”表示这是推理任务,序列开头插入 “[CLS]”表示这是分类任务,序列开头插入“[SIM]”表示这是两个句子的相似性评估,序列开头插入“[MCH]”表示这是多项选择任务,以“[Delim]”分割上下文等等,以适配任务相关的信息。
这种转换有什么用呢?实验证明,这种转换有助于提升LLMs的迁移学习表现,根据贝叶斯原理,可能它在预训练的时候就用到了这些特殊转换处理。因此,在进行任务特定输入转换时,需尽量保证词汇表和编码方案和预训练阶段保持一致,这意味着在预训练阶段,需要为特殊符号预留一定的词汇空间。