GRPO强化学习缓解多模态大模型OCR任务的幻觉思路及数据生成思路

多模态大模型在"看不清"文字时瞎编答案,称为"OCR幻觉",如下图,主要有几点:(1)预训练阶段缺乏相关数据:关键信息提取(KIE)数据以及退化视觉场景的清晰标注显著不足,限制了模型处理复杂视觉输入的能力。指令微调阶段忽视退化场景:现有研究通常假设 OCR 任务输入为非退化图像,导致模型缺乏处理真实世界退化文档(如模糊、遮挡、低对比度)所需的推理能力。

下面来看看一个思路。供参考。

数据集

数据生成方法

主要思路如下:

数据生成方法 分三步走,目的是构造一个专门用于训练模型"看清模糊文字、不乱编答案"的冷启动数据集,核心逻辑是:用现有模型生成"人类式思考"的链式推理(CoT)数据,再与图像配对,形成多模态训练样本。流程如下:

Step 1:图像→文本描述(借助GPT-4o)

输入一张退化文档图像(如模糊的发票)+ 问题(如"这张发票的总金额是多少?"),用GPT-4o将图像内容转为纯文本描述(包括文字内容、退化情况、空间位置等)。 目的是把多模态信息"翻译"成语言模型能理解的文本。

  • 例如:GPT-4o会描述"图像中'总金额'一栏的数字'100'被污渍遮挡,仅能看到'1'和'00'的轮廓"。
Step 2:文本→链式推理(借助DeepSeek-R1)

输入Step 1中生成的纯文本描述 + 问题,用推理模型DeepSeek-R1生成人类式的思考链(CoT),模拟人如何一步步判断,让模型学会"看不清时不硬猜",而是用逻辑推理标记不确定部分。

  • 示例CoT
    "观察到'总金额'栏的数字有污渍遮挡,但'1'的竖线清晰,'00'的轮廓部分可见,结合上下文'人民币符号¥',推断金额为'100元',但需标记'00'为不确定区域。"
Step 3:合成多模态数据

输入原始图像(带退化)和Step 2生成的CoT文本(含推理和不确定标记),输出一个完整的多模态训练样本(图像+问题+CoT答案)。

数据增强

  • 对图像随机添加退化(模糊、遮挡、低对比度)。
  • 用OCR模型(如Qwen2.5-VL-72B)验证退化后的字符是否仍可见,确保标注准确。

最终效果生成的数据集覆盖身份证、发票、处方等场景。每个样本都附带:

  • 像素级退化标注(哪些字符被遮挡)
  • OCR可靠性得分(模型对字符可见性的置信度)
  • CoT推理链(如何从不确定信息中得出结论)

方法

基于GRPO强化学习+多目标奖励函数的框架,解决OCR幻觉问题。

奖励函数设计

带OCR奖励的强化学习:设计基于规则的三级奖励函数 ,强制模型根据视觉可见性输出答案,避免幻觉。

奖励函数设计

将字符按可见性分为三类,不同处理策略:

  1. 清晰字符(如"B, a, u"):必须准确识别,奖励高。
  2. 部分遮挡字符(如"e"被污渍盖住30%):需标记为异常(如"e[部分可见]"),保留但提示不确定。
  3. 完全不可见字符(如"t, i"被完全遮挡):必须输出空格,避免幻觉。

奖励计算流程

对模型预测和真实值计算编辑距离,生成三个指标:

  • clear_metric:清晰字符的准确率
  • not_clear_metric:模糊/遮挡字符的处理合理性
  • final_metric:最终答案与真实值的匹配度

复合奖励

其中c₁, c₂, c₃为权重,确保模型优先视觉忠实度,而非盲目追求字符准确率。

训练阶段

冷启动SFT:用前文生成的CoT数据微调Qwen2.5-VL-7B,学习"退化场景下的推理范式"。

GRPO强化学习

  • 输入退化图像(如模糊处方),模型生成多个候选答案。
  • 奖励函数评估每个答案是否**"不幻觉"**(如遮挡区域是否输出空格)。
  • 通过GRPO优化策略,使模型逐渐学会**"无法识别时拒绝回答"**。

实验性能

参考文献:Seeing is Believing? Mitigating OCR Hallucinations in

Multimodal Large Language Models,https://arxiv.org/pdf/2506.20168v1

相关推荐
Theodore_102212 分钟前
机器学习(2) 线性回归和代价函数
人工智能·深度学习·机器学习·线性回归·代价函数
Akamai中国23 分钟前
运维逆袭志·第4期 | 安全风暴的绝地反击 :从告警地狱到智能防护
运维·人工智能·云计算·云服务·云存储
ygwelcome32 分钟前
如何使用最简单的get请求融合众多AI API,包括ChatGPT、Grok等
人工智能
努力也学不会java37 分钟前
【Spring】Spring事务和事务传播机制
java·开发语言·人工智能·spring boot·后端·spring
技术闲聊DD1 小时前
深度学习(13)-PyTorch 数据转换
人工智能·pytorch·深度学习
少林and叔叔1 小时前
人工智能Pytorch开发环境的搭建
人工智能·pytorch·python·pycharm·conda
电棍2331 小时前
工程实践心得记录-pytorch要安装在哪里
人工智能·pytorch·python
星期天要睡觉1 小时前
深度学习——基于 PyTorch 的蔬菜图像分类
人工智能·pytorch·python·深度学习·分类
kailp1 小时前
OpenAI发布AI浏览器Atlas:探索下一代网页交互新可能
人工智能·大模型·云计算·aigc·算力