LARGE LANGUAGE MODELS ARE NOT ROBUST ICLR2024

LARGE LANGUAGE MODELS ARE NOT ROBUST

ICLR2024

LLM在回答多项选择题时存在选择偏差问题(模型依赖选项"A/B/C/D"而非内容本身作答,模型爱选C)

提出名为PriDe (Prior Debiasing)推理时 使用的、无标签(不需要答案)的无监督去偏方法:

致偏原因:

1.主要原因:词元偏差 (Token Bias) 。模型在预训练阶段可能接触了某些标识符(如'A'、'B'、'C'、'D')作为正确答案的频率不均衡,导致它在生成答案时,会先验地(a priori)为特定的标识符分配更高的概率 。

2.次要原因:位置偏差 (Position Bias) 。模型有时会偏爱出现在特定位置(如第一个或最后一个)的选项,但研究发现这种偏差相比词元偏差规律性更差,且因模型和任务而异 。

去偏方法 : PriDe (Debiasing with Prior estimation) 。这是一种无需标签、在推理阶段进行的去偏方法 。核心思想是先用少量样本估算出模型对选项标识符(A/B/C/D)的"固有偏见"(即先验概率),然后在回答剩余问题时,从模型的原始预测中"除掉"这个偏见,从而得到更公正的答案 。

文中用到的LLM : 论文共测试了20种模型,包括:Llama (7B, 13B, 30B, 65B), Llama-2 (7B, 13B, 70B, 包含chat版本), Vicuna (v1.3 和 v1.5版本), Falcon (7B, 40B, 包含instruct版本) 以及 gpt-3.5-turbo

方法

核心思想:

模型对一个选项的最终预测概率(P_{observed})可以被分解为两个部分的乘积:

  1. 模型对选项内容的"真实" (P_{debiased})
  2. 模型对选项ID(如 "A")的"先验偏好" (P_{prior})

PriDe 的目标就是估算出这个"先验偏好" P_{prior},然后用 P_{observed} 除以 P_{prior},从而得到去偏后的"真实信念" P_{debiased}

1.先验估计

算出模型对每个编号(A/B/C/D)的"偏爱程度"。

随机选5%题目,打乱选项内容,估计模型对各选项ID(A/B/C/D)的先验偏好Pprior

  1. 排列构造 :对每个多选题的选项内容生成 n种循环排列(如ABCD → BCDA → CDAB → DABC),确保每个内容 oi与每个ID dj至少配对一次,仅对选项内容 {oi}进行重新排序,保持选项ID {di}的字母顺序(A/B/C/D)固定不变

  2. 计算先验

    参数说明

    • I(排列) ∈(对一个问题 q 的选项内容进行 n 次循环排列)。这个排列的集合就是
    • 选项集合 xI={(di,oi)}ni=1
    • di为固定选项ID(如A/B/C/D)
    • Pobserved:每次排列 I后, 记录模型对ID di 的预测概率。(开源模型:直接读取模型对ID token(如"A"/"B")的预测概率。闭源API(如GPT-3.5):通过多次采样统计选项ID的出现频率)

全局先验:对所有估计样本取平均,得到先验偏好

K:用于先验的样本数

2.去偏预测

对剩余样本,用公式 Pdebiased∝Pobserved/Pprior 消除ID偏好,保留对内容的真实置信度,先验p 调整剩余样本的预测分布,消除偏差

去偏预测:用"偏爱值"修正模型的答案

对剩余95%样本,先让模型正常预测,得到每个样本的原始概率Pobs(di)

用全局先验校正预测:

  • P observed:原始模型对ID di的概率
  • P~~prior~(di):全局平均先验
  • x:默认选项顺序的输入

输出答案

选择去偏后概率最高的选项:

示例

  • 原始预测:{A:0.6, B:0.2, C:0.1}
  • 偏爱值:{A:0.5, B:0.3, C:0.2}
  • 修正计算:
    A: 0.6/0.5=1.2
    B: 0.2/0.3≈0.67
    C: 0.1/0.2=0.5
  • 最终选择:A(因为1.2最大)

mmlu

去id后,noid答案分布

原始答案分布

无 ID" 前提下 的三种文字顺序(原始noid、随机shuffle_both、循环cyclic)正是用来 暴露模型对选项顺序或位置的依赖

permutation baseline:把输入里的选项内容随机打乱(permute),然后看模型输出是否正确。

多次随机置换融合:对同一道题,随机置换 多次(10 次),让模型回答多次,再进行"融合(fusion)"。

融合方式:
  1. 多数投票(majority voting)
    模型在10次置换中,哪一个答案出现最多次,就认为是最终答案。
  2. 平均概率(probability averaging)
    模型每次生成一个各选项的概率分布,最后对这些概率取平均,再选最大者。

这篇论文,研究共在 20 种来自不同系列和规模的大型语言模型(LLM)上进行了实验 。包括 :

  • Llama 系列:

    • llama-7B
    • llama-13B
    • llama-30B
    • llama-65B
  • Llama-2 系列:

    • llama-2-7B
    • llama-2-13B
    • llama-2-70B
  • Llama-2-Chat 系列:

    • llama-2-chat-7B
    • llama-2-chat-13B
    • llama-2-chat-70B
  • Vicuna 系列:

    • vicuna-v1.3-7B
    • vicuna-v1.3-13B
    • vicuna-v1.3-33B
    • vicuna-v1.5-7B
    • vicuna-v1.5-13B
  • Falcon 系列:

    • falcon-7B
    • falcon-40B
  • Falcon-Instruct 系列:

    • falcon-inst-7B
    • falcon-inst-40B
  • OpenAI API 模型:

    • gpt-3.5-turbo-0613 3

比较不同去偏方法(PriDe, Cyclic Perm, Full Perm)在不同计算成本下的"去偏效果"

Y 轴 (上排): Delta Recall Std (%)

  • "召回率标准差的A变化量" 。用来衡量"选择偏差"的指标。这个值越低(越负)越好,代表偏差被消除得越彻底。
  • Y 轴 (下排): Delta Accuracy (%)"准确率的变化量" 。这个值越高越好,代表模型性能提升得越多。

Full Perm: 完全排列(成本最高,效果的理论上限)。4!种排列组合

Cyclic Perm: 循环排列(论文提出的基准方法)。(4种,ABCD,BCDA,CDAB,DABC)

PriDe: 论文提出的新方法(绿色曲线)。

X "计算成本"

"基准推理成本"(即不对样本做任何处理、只推理 1 次)为 x1

对于 Cyclic Perm / Full Perm (蓝色/橙色曲线):

  • 成本是通过**改变"被去偏的样本比例"**来控制的。
  • 例如,在 MMLU(4选项)中,Cyclic Perm 的成本是 x4。
  • 如果要在图上找到 x2.2 的成本点,它们会选择只对 40% 的样本 执行 x4 的 Cyclic Perm,其余 60% 的样本执行 x1 的标准推理。
  • 总成本 = (40% * x4) + (60% * x1) = x1.6 + x0.6 = x2.2。

对于 PriDe (绿色曲线):

  • 它的成本是通过改变"用于估算先验的样本比例α" 来控制的。
  • PriDe 的工作方式是:先用一小部分样本(比例为 α)来"估算偏差"(这部分样本本身也用 Cyclic Perm 进行去偏),然后用这个估算出的偏差去"高效去偏"剩余的 (1-α)比例的样本。
  • 例如,在 MMLU(4选项,Cyclic Perm 成本为 x4)上:
  • x1.15 成本点 (PriDe): 对应 α=5%
    • 总成本 =(5% 样本 * x4 成本) + (95% 样本 * x1 成本) = x0.2 + x0.95 = x1.15。

纵坐标 (Y-axis) 的含义: "归一化的召回率得分 (%)"

计算方法:(该选项的召回率) - (模型的整体准确率)

正值 (例如 +20): 假设模型在 "STEM" 数据集上的整体准确率是 50%。如果它在答案是 "A" 的问题上召回率 (Recall) 达到了 70%,那么 "A" 的纵坐标值就是 70 - 50 = +20。这表明模型强烈偏好 (bias towards) "A"

相关推荐
love530love2 分钟前
【笔记】ComfyUI 启动时端口被占用(PermissionError [winerror 10013])解决方案
人工智能·windows·笔记·stable diffusion·aigc·端口·comfyui
算法与编程之美5 分钟前
PyTorch中torch.flatten()函数的用法
人工智能·pytorch·python·深度学习·机器学习
YJlio10 分钟前
DiskView 学习笔记(13.3):用扇区视图看磁盘——热点盘块、碎片与健康排查
java·笔记·学习
Biehmltym14 分钟前
【AI】02实现AI Agent全栈:十分钟,跑通Python调用 Gemini(大模型)的小型Web项目
人工智能·windows·python
深圳佛手15 分钟前
IVFFlat 与 HNSW 算法介绍与对比
人工智能·算法·机器学习
山海青风17 分钟前
人工智能基础与应用 - 数据处理、建模与预测流程 1 : 了解人工智能
人工智能·python
QT 小鲜肉20 分钟前
【Linux命令大全】001.文件管理之mdu命令(实操篇)
linux·运维·服务器·chrome·笔记·microsoft
wxdlfkj23 分钟前
从硬件极限到算法补偿:构建微米级工件特征“在机测量”闭环系统的技术路径解析
人工智能·算法·机器学习
im_AMBER27 分钟前
数据结构 14 【复习】二叉树中序遍历 | 线索二叉树 | 树、森林、二叉树的转换 | 层次遍历二叉树
数据结构·笔记·学习·算法
im_AMBER28 分钟前
Leetcode 88 K 和数对的最大数目
数据结构·c++·笔记·学习·算法·leetcode