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)

用全局先验校正预测:
在这里插入图片描述

  • Pobserved:原始模型对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”

在这里插入图片描述

<think>嗯,用户遇到了一个“VCE类型不支持robust”的错误,想知道原因和解决方法。首先,我需要理解VCE是什么。VCE可能是指视频编码引擎(Video Codec Engine),常见于AMD的显卡或处理器中,用于硬件加速视频编码和解码。而“robust”可能是指某种编码模式或参数,比如鲁棒性传输或容错机制。 接下来,分析错误的原因。可能的因素有几个:1)硬件或驱动不支持特定的robust模式。比如,某些VCE版本可能没有实现该功能,或者需要特定的驱动版本。2)软件配置问题,比如使用的编码库或应用程序没有正确设置参数,或者调用了不支持的API。3)兼容性问题,可能robust模式与其他设置冲突,比如分辨率、码率等参数组合不被支持。 然后,考虑解决方法。首先检查驱动和软件版本,确保都是最新的,尤其是显卡驱动和编码库(如FFmpeg、AMF SDK)。其次,查阅官方文档,确认使用的VCE版本是否支持robust模式,可能需要调整编码参数或更换编码类型。如果官方不支持,可能需要寻找替代方案,比如使用不同的容错机制或软件编码。此外,查看社区或论坛是否有类似问题的讨论,可能会有临时解决方案或补丁。 用户可能需要具体的步骤来排查问题,比如更新驱动、验证编码设置、测试不同的参数组合。如果问题依然存在,可能需要联系技术支持或考虑硬件限制。同时,注意引用中的内容,比如模型输入的变化可能导致集成问题,类比到编码设置变更可能引发兼容性问题,需要确保应用程序和编码引擎之间的“合约”一致。</think>关于“VCE类型不支持robust”错误的分析与解决方法: ### 一、错误原因 1. **硬件/驱动限制** VCE(Video Codec Engine)在不同代际的AMD GPU中支持的编码特性不同。例如: - RDNA架构GPU支持H.265/HEVC的`robust`模式,但GCN架构可能仅支持基础编码模式 - 驱动未启用特定容错功能(如AMD AMF SDK 1.4.29之前版本缺少相关API支持[^2]) 2. **参数冲突** `robust`模式常与以下设置互斥: $$ \text{rate\_control} \in \{CBR, VBR\} \cap \text{profile} \notin \{Main10, High\} $$ 当码率控制模式与编码配置文件组合不匹配时触发错误 3. **容器格式限制** 如MPEG-TS容器要求时间戳精确性,与`robust`模式的时间戳容错机制冲突 ### 二、解决方案 1. **驱动/SDK更新** ```bash # Ubuntu示例 sudo apt install amdgpu-install --components=amf ``` 需确保AMF SDK版本≥1.4.30(支持Robust Encoding扩展) 2. **参数调整** FFmpeg示例修正: ```bash # 错误示例 ffmpeg -hwaccel vce -c:v h264_vce -robust 1 # 修正后 ffmpeg -hwaccel vce -c:v h264_vce -quality balanced -enforce_hrd 1 ``` 3. **替代方案** | 原参数 | 替代参数组合 | 适用场景 | |--------|--------------|----------| | robust=1 | +zerolatency +lowpower | 实时流传输 | | robust=1 | +preanalysis +aqmode=3 | 点播视频 | ### 三、验证步骤 1. 查询硬件支持列表: ```python import amf print(amf.QueryCaps('robust_encoding')) ``` 2. 检查编码配置合约: ```text Input resolution → 4096x2160 Rate control → CBR Target bitrate → 50 Mbps Robust encoding → Disallowed (硬件限制)[^1] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值