PPO是一种传统的强化学习方法,在RLHF (Reinforcement Learning from Human Feedback)中应用广泛:
基本组成:
训练流程:
LLaMA-Factory 实现了三种主要的强化学习训练方法:PPO、DPO、KTO,每种方法都针对大型语言模型的微调采用不同的策略。
PPO 是一种基于策略梯度的强化学习算法,是最传统的 RLHF (Reinforcement Learning from Human Feedback) 方法。
直接偏好优化(Direct Preference Optimization, DPO)是一种用于语言模型对齐的算法,由Rafailov等人在2023年提出,作为强化学习人类反馈(RLHF)的替代方案。DPO的目标与RLHF相同:使语言模型的输出更好地符合人类偏好,但DPO通过简化流程,直接从人类偏好数据中优化模型,无需单独的奖励模型和复杂的强化学习过程。
为什么需要DPO?
近端策略优化(Proximal Policy Optimization, PPO)是一种基于策略梯度的强化学习算法,由OpenAI在2017年提出。PPO算法在保持训练稳定性的同时,能够获得较好的样本效率和性能表现。PPO的核心思想是通过限制策略更新的幅度,避免过大的策略变化导致性能崩溃。
PPO算法有两种主要变体:PPO-Penalty和PPO-Clip。在实际应用中,PPO-Clip因其实现简单且性能优越而被广泛采用。
概述: EWC 通过在损失函数中添加一个正则化项,防止重要参数偏离先前任务的最优值。这个正则化项基于费舍尔信息矩阵,衡量每个参数对先前任务的重要性。
公式:
其中 是费舍尔信息矩阵, 是旧任务的最优参数。
代码示例:
pythonimport torch
def ewc_loss(new_loss, model, fisher_matrix, old_params, lambda_ewc):
ewc_penalty = 0
for param, fisher, old_param in zip(model.parameters(), fisher_matrix, old_params):
ewc_penalty += torch.sum(fisher * (param - old_param).pow(2))
return new_loss + (lambda_ewc / 2) * ewc_penalty