Skip to content

配对比较、重复采样与发布门禁 ​

比较A和B时要用相同样本,保留每题的变化。净平均收益可能掩盖高风险回归;固定随机种子也不保证远程模型完全确定,需重复运行并报告波动。

配对bootstrap的具体过程 ​

标准库完整实验。delta=1表示B改善、-1表示退步、0表示相同;重采样以题目为单位,保留配对关系。

python
import random
old=[1,1,0,0,1,0,1,0]
new=[1,0,1,1,1,0,1,1]
delta=[b-a for a,b in zip(old,new)]
rng=random.Random(7)
means=sorted(sum(rng.choices(delta,k=len(delta)))/len(delta) for _ in range(2000))
interval=(means[49],means[1949])
assert sum(delta)/len(delta)==.25
assert interval[0]<=.25<=interval[1]
print({"mean_gain":.25,"bootstrap_interval":interval})

每次抽8个delta求平均,重复得到经验分布,取两端近似95%区间。这不是小样本下精确的统计保证;题目相关或同用户重复应按组抽样,不能把相关请求当独立样本。多次挑最好的模型再只报告一次区间也会产生选择偏差。

Judge也需要被评估 ​

人工rubric先写具体等级与反例,盲评隐藏模型名;成对比较交换A/B位置测试位置偏差,控制长度偏好和模型自偏好。用人工样本校准judge,记录分歧并送仲裁。judge输出理由不能自动当事实来源,高风险结果仍需规则/人工。安全、成本与延迟不应被一个总分抵消。

离线批量固定版本、并发、超时、输出存储和最大费用。门槛在运行前确定:关键安全零回归、主任务收益下界、p95和单位成本预算。达到最大成本或不确定性无法缩小时停止,不为了“显著”无限追加样本。

线上灰度按用户或租户稳定分流,避免同用户跨版本污染;观察采纳、修改、重问、放弃、投诉和实际完成。流量漂移可能来自语言、主题、工具或文档变化,分切片看失败率。发布后持续采样,新失败进入开发集,再保留独立验证集。观测平台评分变化只是信号,最终决策仍需数据合同和风险约束。

生成答案的rubric与人工校准 ​

证据只有一句:“试用期员工每周可远程1天,正式员工2天;需经理批准。”问题是“试用期员工能远程几天,有什么条件?”先把评分目标拆成数量、身份条件、审批条件、额外事实四项。等级不是文风投票:

  • 2分:明确试用期1天且需经理批准,无相矛盾或编造限制。
  • 1分:数量正确,但漏审批;事实部分正确却不能直接作为完整业务回答。
  • 0分:把正式员工2天套给试用期、凭空增加条件,或只讲一般常识而无所问事实。

具体对照:“每周1天,需经理批准”是2分;“每周1天”是1分;“每周2天,可自行安排”是0分。不能因为第三句更自信、流畅而给高分。若回答“每周1天,需经理批准和HR双重审批”,多出的HR条件没有证据,应判0分并标unsupported_claim。

校准先由两个人按同一rubric独立打分,对分歧给原文证据,再形成仲裁标签;不要提前把judge答案展示给人。以下固定judge响应模拟位置偏差,运行只测试校准流程,不说明任何远程模型真实准确率。

python
rows = [
    {'id':'a','human1':2,'human2':2,'adjudicated':2,'judge':2},
    {'id':'b','human1':1,'human2':2,'adjudicated':1,'judge':2},
    {'id':'c','human1':0,'human2':0,'adjudicated':0,'judge':0},
]
disputes=[r['id'] for r in rows if r['human1']!=r['human2']]
judge_errors=[r['id'] for r in rows if r['judge']!=r['adjudicated']]
assert disputes==['b'] and judge_errors==['b']
# 同一A/B答案交换展示位置;judge却两次选展示中的first。
presentations=[{'order':['a','b'],'winner_position':0},
               {'order':['b','a'],'winner_position':0}]
winners=[r['order'][r['winner_position']] for r in presentations]
assert winners==['a','b']  # 位置变了,偏好也变了,不能算稳定支持a。
print('adjudication required',disputes,'position-inconsistent',winners)

b的分歧来自第二人把“数量正确”当“回答完整”;仲裁回到问题明确问条件,因此1分。judge同样误判时,应补条件遗漏反例再在独立校准集检查,不在最终测试集上反复调rubric。三条样本只能展示分歧过程,不能估计生产一致率。评分记录保存rubric版本、证据快照、回答版本、理由和位置;失败/无效JSON不得默认为0分混入质量均值,应另计评估失败率。

练习 ​

校准题:回答“试用期每周1天,向经理申请;正式员工可以2天”应如何评分?回答“试用期每周1天,经理批准后还需HR批准”又如何?指出每个分数的具体证据,不只给数字。

写release_gate(gain_lower,safety_regressions,p95,cost),要求收益下界>0、安全回归为0、p95<=1000、cost<=10;分别构造每一项单独失败的输入。

核对本章答案

返回全书导读

用心记录每一步成长