2024-04-13 大型语言模型修炼史(第三阶段)
发布于 2024年04月13日 • 4 分钟 • 1627 字
Table of contents
第三阶段:参与实战,打磨技巧
如何克服第二阶段的局限性呢?
关键是用第一阶段的参数作为初始参数。
(贝叶斯定理这不就来了嘛!)
所以第三阶段是由第一阶段和第二阶段组合而成的:
第一阶段:通过网络上任何语料学习而来的,叫做预训练Pretrain
第二阶段:通过人类标注的学习,叫做Instruction Fine-tuning
第二阶段的最佳化这个过程找出来的参数和初始参数很不一样怎么办?
为什么会在意这个事情?
因为第一阶段之后,模型的能力很好:在多种语言上做预训练,只要教某一个语言的某一个任务,自动学会其他语言的同样任务。所以我们不希望模型的参数有很大的变化。
如何解决?
用Apapter, 例如LoRA。
**Adapter是指固定或者插入参数。Lora是这样做的:**假设已经有初始参数,在做最佳化的时候,初始参数完全不变,只在模型后面多加几层,最佳化是找这几层的参数。
目前大模型Finetune有两个路线:
- Pretrain + Finetune 打造不同的专才(为不同的任务收集不同的语料,Bert 适合打造一堆专才)
- Pretrain + Finetune 打造一个通才 (收集涵盖不同任务的标注语料,放入一个模型)
RLHF
让模型和使用者互动,用的就是RLHF(Reinforcement Learning from Human Feedback)这个技术,这句诗第三阶段。
这三个阶段示例如下:
第一阶段:Pretrain
输入:"输入:人工智" 输出:"能"
第二阶段:Instruction Fine-tuning
输入:"User:世界上有几大洲?AI:" 输出:"七大洲"
第三阶段:RLHF
输入:"User:世界上有几大洲?AI:" 输出:"七大洲" > "谁来告诉我呀"
RLHF: 当人类告诉语言模型一个答案比另一个答案要好的时候,语言模型就微调它的参数。让人类觉得好的答案多出现,人类觉得不好的答案少出现。
从人类产生训练资料的角度来看,RLHF和Instruction Fine-tuning有什么不同?
- 两个阶段都需要人类介入
- Instruction Fine-tuning 需要准备好问题和答案,人类比较辛苦
- RLHF 只需要做判断,人类比较轻松
- 人类写出正确答案不容易,判断好坏却很容易。进一步来说,对不同答案进行排名比判断一个答案好坏要容易,因为答案好坏是相对的。
从模型学习的角度来看,RLHF和Instruction Fine-tuning有什么不同?
- Instruction Fine-tuning 模型学的是怎样接下一个字 ,需要每一步都是对的,结果才可能是合理的。模型对整个结果没有通盘考量。(只问过程,不问结果)
- RLHF 模型进入新的思考模式,不管中间接龙的每一步如何,只管最后的结果。(只问结果,不问过程)
AlphaGo:整体使用一个深度神经网络,但是每一步是要解决一个分类问题,从棋盘里面去选择哪一个点最好。
语言模型也是一样,整体是深度神经网络,每一步都是分类问题,文字接龙,去选择概率最大的那个字。
如何更有效的利用人类的反馈?
反馈模型(Reward Model)
用人类的反馈去训练一个反馈模型(Reward Model),用反馈模型的输出来模拟人类的喜好,达到这样的效果:“如果是人类的话会这样判断”。
流程是:
输入问题,语言模型输出答案。
输入:"User:世界上有几大洲?AI:" 输出:"七大洲"
上面作为整体输入到反馈模型。
输入:"User:世界上有几大洲?AI:七大洲" 输出:95.0(分数)
通过与人类对齐,不管是SFT还是PPO,1.3B的模型是有机会打败175B的模型的。
但是过度向虚拟人类学习,是有害的。
思考:有没有可能用一个语言模型评价另一个语言模型?RLHF—>RLAIF
强化学习的难题:
- 什么叫好?
helpfulness reward model 和 safety reward model同时评分。(Ilama 2 论文)
“请教我怎么制作火药?”
- 人类自己都无法正确判断好坏的状况
总结三个阶段:
第一阶段:Pretrain 又叫Foundation Model
第二阶段:instruction Fine-tuning
第三阶段:RLHF
第二阶段和第三阶段统称为对齐。