LLM入门课#05 人类反馈强化学习是啥

LLM入门课#05 人类反馈强化学习是啥

大模型虽然已经呈现出了强大的能力,但是如果不添加管制的话,会导致模型生成一些没有用的或者有害的内容,比如如果你问他如何去黑入别人的wifi,他也会提供给你一个有效的方案。这对吗,这明显是不对的,机器人应该和谐地融入到我们的社会中才可以。

所以,这个时候,RLHF这个技术就出来了,通过这个技术,你可以帮助你的模型更加具有人性化,对不好的答案进行抑制,对好的答案直接加大火力。可以说是强化学习的魅力时刻了。

image-20250323190841814

说到人类反馈强化学习,我们先来说一下正常的强化学习。强化学习指的是,智能体在环境中采取行动,以达到最大化某种累积奖励的目标,从而学习做出与特定目标相关的决策,强调的是模型和环境的交互。

image-20250323191056018

强化学习最典型的是训练你的模型去玩#游戏,下面是一个过程。

image-20250323192119282

同理,将这个过程借鉴到大语言模型上面,我们可以得到这样的一个结果。其中agent是你的llm模型,环境来自于用户指定的任务,状态则是当前的上下文,动作则是通过token的池子给出一个合理的输出,reward则是用来判断模型当前的输出是否和用户希望的输出是一致的,是有毒的还是无毒的。但是,如果你用人工的话那就比较昂贵了,所以这个时候,你使用reward model,简单理解,他可以是一个文本分类的模型,主要是识别出你当前输出的内容是和谐的,还是不和谐的。如果是和谐的内容,就奖励模型,奖励模型就是最大化对应token的概率,如果是不和谐的内容,就惩罚模型,惩罚模型就是奖励对应token的概率。

image-20250323192053923

在医学病理图像生成的任务中, 我们也可以通过奖励模型来定义什么模型是一个好的模型,而什么模型是一个不好的模型,通过这个方式,也可以让我们的模型生成一个更好的病理图像报告的内容,实在是太棒了!

### 强化学习在大型语言模型中的应用及其实现 强化学习(Reinforcement Learning, RL)是一种通过试错来优化策略的学习范式,在许多领域取得了显著成果。当将其与大型语言模型(LLM)结合时,可以通过奖励机制进一步提升生成文本的质量和特定场景下的适用性。 #### 1. 结合背景 大型语言模型通常基于监督学习进行预训练,其目标是最小化预测下一个词的概率分布误差[^2]。然而,这种单一的目标可能无法满足某些复杂应用场景的需求,例如对话系统中需要考虑上下文连贯性和用户满意度的情况。此时,引入强化学习可以帮助调整模型行为以更好地适应具体任务需求。 #### 2. 实现方式 以下是几种常见的强化学习LLM结合的方法: - **直接微调法** 使用强化信号作为额外损失项加入到标准交叉熵损失函数中,从而引导模型向期望方向演化。这种方法简单易行但可能会面临数据效率低的问题。 ```python loss = cross_entropy_loss + alpha * reward_signal ``` - **Proximal Policy Optimization (PPO)** PPO 是一种流行的算法框架,适用于连续控制问题以及序列决策过程。对于 LLM 来说,它可以用来更新参数使得生成的内容更加符合人类偏好或者特定业务指标的要求[^1]。 - **Reward Modeling** 构建专门用于评估输出质量的奖励模型,该模型可以根据实际反馈不断改进自身的判断准确性。随后利用此奖励模型指导原生 LLM 的训练流程。 #### 3. 应用实例 一个典型的例子是在聊天机器人开发过程中采用上述技术路径。通过对历史交互记录分析提取有效特征构建初始版本;再借助真实用户的即时评价动态调整回复风格直至达到理想效果为止。 ```python def train_with_rl(model, env, episodes=1000): optimizer = torch.optim.Adam(model.parameters(), lr=1e-5) for episode in range(episodes): state = env.reset() done = False while not done: action_probabilities = model(state) action_distribution = Categorical(action_probabilities) sampled_action = action_distribution.sample().item() next_state, reward, done, _ = env.step(sampled_action) # Update policy using the collected rewards and actions. log_probs = action_distribution.log_prob(torch.tensor([sampled_action])) loss = -log_probs.mean() * reward optimizer.zero_grad() loss.backward() optimizer.step() state = next_state ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆十二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值