赞
踩
开玩笑的,训练一个LLM的过程是极其及其复杂的尤其是像GPT那样的,需要的数据和算力就不说了,光是准备工作都不止3步。三步主要是指LLM模型训练过程中的三个核心步骤,以及每个步骤的目的。
从互联网上收集海量的文本数据,通过自监督的方式训练语言模型,根据上下文来预测下个词。token的规模大概在trillion级别,这个阶段要消耗很多资源,海量的数据采集、清洗和计算,该阶段的目的是:通过海量的数据,让模型接触不同的语言模式,让模型拥有理解和生成上下文连贯的自然语言的能力。
训练过程大致如下:
Training data : 来自互联网的开放文本数据,整体质量偏低
Data scale : 词汇表中的token数量在trillion级别
L L M ϕ S S L LLM_{\phi}^{SSL} LLMϕSSL: 预训练模型
[ T 1 , T 2 , . . . , T V ] [T_1, T_2, ... , T_V] [T1,T2,...,TV] : vocabulary 词汇表,训练数据中词汇的集合
V V V: 词汇表的大小
f ( x ) f(x) f(x): 映射函数把词映射为词汇表中的索引即:token. if x x x is T k T_k Tk in vocab, f ( x ) = k f(x) = k f(x)=k.
( x 1 , x 2 , . . . , x n ) (x_1, x_2, ..., x_n) (x1,x2,...,xn), 根据文本序列生成训练样本数据:
( x , x i ) (x, x_i) (x,xi),训练样本:
Goal : find ϕ \phi ϕ ,Minimize C E ( ϕ ) = − E x l o g ( y ‾ k ) CE(\phi) = -E_x log(\overline{y}_k) CE(ϕ)=−Exlog(yk)
预先训练阶段 L L M S S L LLM^{SSL} LLMSSL还不能正确的响应用户的提示,例如,如果提示“法国的首都是什么?”这样的问题,模型可能会回答另一个问题的答案,例如,模型响应的可能是“意大利的首都是什么?”,因为模型可能没有“理解”/“对齐aligned”用户的“意图”,只是复制了从训练数据中观察到的结果。
为了解决这个问题,出现了一种称为监督微调或者也叫做指令微调的方法。通过在少量的示例数据集上采用监督学习的方式对 L L M S S L LLM^{SSL} LLMSSL进行微调,经过微调后的模型,可以更好地理解和响应自然语言给出的指令。
SFT(Supervised Fine-Tuning)阶段的目标是优化预训练模型,使模型生成用户想要的结果。在该阶段,给模型展示如何适当地响应不同的提示(指令)(例如问答,摘要,翻译等)的示例。这些示例遵循(prompt、response)的格式,称为演示数据。通过基于示例数据的监督微调后,模型会模仿示例数据中的响应行为,学会问答、翻译、摘要等能力,OpenAI 称为:监督微调行为克隆 。
基于LLM指令微调的突出优势在于,对于任何特定任务的专用模型,只需要在通用大模型的基础上通过特定任务的指令数据进行微调,就可以解锁LLM在特定任务上的能力,不在需要从头去构建专用的小模型。
指令微调过程如下:
Training Data : 高质量的微调数据,由人工产生。
Data Scale : 10000~100000
InstructGPT : ~14500个人工示例数据集。
Alpaca : 52K ChatGPT指令数据集。
Model input and output
Goal : 最小化交叉熵损失,只计算出现在响应中的token的损失。
事实也证明,经过微调后的小模型可以生成比没有经过微调的大模型更好的结果:
在经过监督(指令)微调后,LLM模型已经可以根据指令生成正确的响应了,为什么还要进行强化学习微调?
因为随着像ChatGPT这样的通用聊天机器人的日益普及,全球数亿的用户可以访问非常强大的LLM,确保这些模型不被用于恶意目的,同时拒绝可能导致造成实际伤害的请求至关重要。
恶意目的的例子如下:
为了应对以上的风险,需要采取一些策略来防止LLM的能力不被滥用,构建一个可以与人类价值观保持一致的LLM,RLHF(从人类反馈中进行强化学习)可以解决这些问题,让AI更加的Helpfulness、Truthfulness和Harmlessness。
在强化学习中一般都有个奖励函数,对当前的
A
c
t
i
o
n
Action
Action|
(
S
t
a
t
e
,
A
c
t
i
o
n
)
(State,Action)
(State,Action)进行评价(打分),从而使使Policy模型产生更好的
a
c
t
i
o
n
action
action。在RLHF微调的过程,也需要一个Reard Model来充当奖励函数,它代表着人类的价值观,RM 的输入是(prompt, response),返回一个分数。response可以看作LLM的
a
c
t
i
o
n
action
action,LLM看作Policy模型,通过RL框架把人类的价值观引入LLM。
在训练RM之前,需要构建对比数据,通过人工区分出好的回答和差的回答,数据通过经过监督微调(SFT)后的 L L M S F T LLM^{SFT} LLMSFT生成,随机采样一些prompt,通过模型生成多个response,通过人工对结果进行两两排序,区分出好的和差的。数据格式如下:
(prompt, good_response,bad_response)
奖励模型的训练过程如下:
Training Data : 高质量的人工标记数据集(prompt, winning_response, losing_response)
Data Scale : 100k ~ 1M
R θ R_{\theta} Rθ : 奖励模型
Training data format:( x , y w , y l x, y_w, y_l x,yw,yl)
For each training sample:
Goal : find θ \theta θ to minimize the expected loss for all training samples. − E x l o g ( σ ( s w − s l ) ) -E_xlog(\sigma(s_w - s_l)) −Exlog(σ(sw−sl))
在这个过程中,policy( L L M R L LLM^{RL} LLMRL)会不断更新,为了不让它偏离SFT阶段的模型太远,OpenAI在训练过程中增加了KL离散度约束,保证模型在得到更好的结果同时不会跑偏,这是因为Comparison Data不是一个很大的数据集,不会包含全部的回答,对于任何给定的提示,都有许多可能的回答,其中绝大多数是 RM 以前从未见过的。对于许多未知(提示、响应)对,RM 可能会错误地给出极高或极低的分数。如果没有这个约束,模型可能会偏向那些得分极高的回答,它们可能不是好的回答。
RLHF微调过程如下:
ML task : RL(PPO)
Training data: randomly selected prompts
Data scale: 10,000 - 100,000 prompts
R ϕ R_{\phi} Rϕ : the reward model.
L L M S F T LLM^{SFT} LLMSFT : the supervised finetuned model(intruction finetuning).
L L M ϕ R L LLM^{RL}_{\phi} LLMϕRL : the model being trained with PPO, parameterized by ϕ \phi ϕ.
For each training step, sample a batch of x R L x_{RL} xRL from D R L D_{RL} DRL and a batch of x p r e t r a i n x_{pretrain} xpretrain from D p r e t r a i n D_{pretrain} Dpretrain.
For each x R L x_{RL} xRL , we use L L M ϕ R L LLM_{\phi}^{RL} LLMϕRL to generate a reponse : y ∼ L L M ϕ R L ( x R L ) y \sim LLM_{\phi}^{RL}(x_{RL}) y∼LLMϕRL(xRL).
objective 1 ( x R L , y ; ϕ ) = R θ ( x R L , y ) − β log ( L L M ϕ R L ( y ∣ x ) L L M S F T ( y ∣ x ) ) \text{objective}_1(x_{RL}, y; \phi) = R_{\theta}(x_{RL}, y) - \beta \log (\frac{LLM^{RL}_\phi(y \vert x)}{LLM^{SFT}(y \vert x)}) objective1(xRL,y;ϕ)=Rθ(xRL,y)−βlog(LLMSFT(y∣x)LLMϕRL(y∣x))
For each x p r e t r a i n x_{pretrain} xpretrain, the objective is computed as follows. Intuitively, this objective is to make sure that the RL model doesn’t perform worse on text completion - the task the pretrained model was optimized for.
objective 2 ( x p r e t r a i n ; ϕ ) = γ log ( L L M ϕ R L ( x p r e t r a i n ) ) \text{objective}_2(x_{pretrain}; \phi) = \gamma \log (LLM^{RL}_\phi(x_{pretrain})) objective2(xpretrain;ϕ)=γlog(LLMϕRL(xpretrain))
The final objective is the sum of the expectation of two objectives above.
objective ( ϕ ) = E x ∼ D R L E y ∼ L L M ϕ R L ( x ) [ R θ ( x , y ) − β log L L M ϕ R L ( y ∣ x ) L L M S F T ( y ∣ x ) ] + γ E x ∼ D p r e t r a i n log L L M ϕ R L ( x ) \text{objective}(\phi) = E_{x \sim D_{RL}}E_{y \sim LLM^{RL}_\phi(x)} [R_{\theta}(x, y) - \beta \log \frac{LLM^{RL}_\phi(y \vert x)}{LLM^{SFT}(y \vert x)}] + \gamma E_{x \sim D_{pretrain}}\log LLM^{RL}_\phi(x) objective(ϕ)=Ex∼DRLEy∼LLMϕRL(x)[Rθ(x,y)−βlogLLMSFT(y∣x)LLMϕRL(y∣x)]+γEx∼DpretrainlogLLMϕRL(x)
Goal : Maximize o b j e c t i v e ( ϕ ) objective(\phi) objective(ϕ).
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。