1. 背景:对数概率在RLHF中的核心价值
在基于人类反馈的强化学习(RLHF)中,对数概率计算是连接模型输出与策略优化的关键环节。想象你正在训练一个对话模型,每次用户输入一个问题(prompt),模型会生成多个可能的回答(response)。如何评估这些回答的质量?如何让模型学会生成更好的回答?这就是对数概率发挥作用的地方。
策略梯度的数学表达 ∇E[R] = E[∇logπ(a|s)·δ] 揭示了其工作原理:
- logπ(a|s) 衡量模型"偏好"某个回答的程度
- δ(优势函数)反映回答的实际质量
- 二者的乘积决定了参数更新的方向和幅度
在实际工程中,我们面临三个维度的复杂性:
- Batch维度:同时处理多个用户prompt(如128个)
- Trial维度:每个prompt生成多个响应(如4个候选回答)
- Pos维度:每个回答由多个token组成(如256个token)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 对数概率计算的核心流程与工程实现
2.1 基础实现框架
python复制import torch
import torch.nn.functional as F
from einops import repeat
def compute_log_probs(prompts, responses, model):
"""计算响应序列的对数概率(支持批量多响应场景)
参数:
prompts: [batch, pos] 整型张量
responses: [batch, trial, pos] 整型张量
model: 预训练语言模型
返回:
[batch, trial, pos] 浮点张量
"""
# 前向传播获取logits
logits = model(prompts) # [batch, pos, vocab]
# 计算对数概率分布
log_probs = F.log_softmax(logits, dim=-1) # [batch, pos, vocab]
# 扩展trial维度
log_probs = repeat(log_probs, "b
