1. Prompt engineering
加入多个examples(Few-shot技术)可能会使LLM表现的更好, 但是同时也会出现以下问题:
- 因为Input Token 变长,Inference成本增加
- 由于examples本身占用了太多的Token,留给context,instruction,input的Token的空间变小
2. Fine-tuning
当使用Few-shot技术发现无法得到想要的结果时,我们才会考虑使用Fine-tuning技术(这里的Fine-tuning是指SFT,即Supervised Fine Tuning)通过训练来直接调整模型的参数。
Few-shot VS Fine-tuning: Few-shot是把examples(知识库)挂载到模型的外面,而Fine-tuning是把examples(知识库)直接嵌入到模型本身,这时候就不需要考虑examples数量的影响了,甚至可以直接上2000个examples
-
Fine-tuning的Instruction Data获取:
- 根据existing supervised training data: 通过人工设计的模板Template把原始监督数据转成instruction data
-
Fine-tunning 的训练集,验证集,测试集
-
Fine-tunning 的问题:遗忘(catastropy forgetting)
原始LLM的输入输出:
现在我们对原始LLM做一个情感分类的Fine-tuning,现在的LLM输出反而不正确了:
4.遗忘的处理方式:
-
在Fine-tunning 数据集中加入通用数据:例如我们发现所需的能力在Fine-tuning之后下降了,我们就构造一个针对此能力的instruction data加入到原有的数据中,再进行fine-tuning
-
多任务学习:
现在我们需要完成3个任务:
- 情感分析
- summarization
- Extraction
我们只需要把这三个任务的instruction data拼接起来,然后一起作为instruction data来进行Fine-tunning 即可
-
使用更大的LLM:模型越小,遗忘越大