李宏毅genai笔记: post training 和遗忘
0 后训练分类
1 post train的难点
llama 在pretrain的时候使用英文的,所以回答也是用英文
我现在想要让她用中文回答,于是我找了一堆中文资料用pretrain style的方式后训练
我期待的可能是,模型不仅要保持alignment的能力(比如安全),还需要会中文回答
但实际上,可能昨晚post train后,可以说中文了,但是原版alignment的能力就没有了
Toxicity 有多少比例讲出不该说的话
可以看到base model这个值是很高的,然后align之后就很低
但是使用post train之后,可以看到toxic值又升上去了(除了lora)
- STF style的后训练也会遇到这个问题
- 这个雷达图,数值越大表示越可能讲出不该说的话
- 灰色的是post train 之前的,红色是post train之后的
- 左边,post train LLM学习不该说的话
- 此时肯定就破坏align了
- 中间
- 知识让模型改一下身份(现在LLM你的名字是AOA)
- 但align也被破坏了
- 右边
- post train一些正常的问题
- 即便知识正常的资料,llm的安全也是变差了
Self-Distillation Bridges Distribution Gap in Language Model Fine-Tuning
- 除了安全,其他能力也是变差了的
- 第一个是使用工具的能力,第二个是数学能力,第三个是编程能力
- 只有教的哪个能力变强了,其他的能力都变差了
1.1 大一点的模型一样的问题
-
是不是因为模型不够大?参数不够多?
-
不是的,比较大的模型,forgeting的情况没有减轻
-
不管什么模型,在目标任务上train的越好,遗忘就越严重
-
加上lora之后,忘记的少,但是学的也少
相比于别的办法,lora还是能较少一定的遗忘
2 解决灾难性遗忘的方法
2.1 经验回放
第二阶段用一点点任务1的资料
但问题是,现在的LLM,我们似乎并不能知道他们的训练数据
我们让LLM自己生成一段话,把这一段话视为预训练的数据集
Magpie: Alignment Data Synthesis from Scratch by Prompting Aligned LLMs with Nothing
-
让llama自问自答,得到类似于自己训练过的资料一样的数据
-
先给一个代表user的符号,让llama自己去接龙,他就会产生一个问题
-
然后把代表user的符号、llama自己生成的问题、assistant的符号提供给llama,llama生成一个答案
-
-
用这些作为llama的训练数据