如果你从事过数据科学工作,你一定听说过“二八定律”: 你把 80% 的时间花在清洗和准备数据上,只有 20% 的时间真正用于分析或构建模型。

数据预处理 (DP) 是数据流程中既乏味但又至关重要的支柱。它涉及修正拼写错误、填补缺失值、匹配不同数据库中的记录以及标准化格式。传统上,这需要通过一个碎片化的工具生态系统来处理——一种算法用于错误检测,另一种完全不同的算法用于实体匹配,依此类推。

最近,像 GPT-4 这样的大语言模型 (LLM) 作为这些任务的“通用求解器”展现出了惊人的潜力。它们能够阅读一行混乱的数据,理解上下文,并对其进行修复。然而,这也引入了一个巨大的瓶颈: 数据隐私

对于担心数据泄露和合规性的组织来说,将敏感的企业数据——如客户记录、财务交易或病史——发送到 OpenAI 的公共 API 通常是不可能的。

这正是 Jellyfish 的用武之地,这是来自大阪大学和 NEC 公司的一项新研究成果。研究人员提出了一种专门针对数据预处理对本地 LLM (如 Mistral 和 Llama) 进行指令微调的方法。其结果是一个安全、高效且能力强大的模型,可以在你自己的 GPU 上运行,性能往往优于传统方法,甚至可以媲美巨大的云端模型。

在这篇文章中,我们将解构 Jellyfish 的工作原理,它如何将原始数据转化为指令提示词,以及为什么它可能代表着安全数据清洗的未来。

数据预处理的格局

在理解 Jellyfish 之前,我们需要对现实世界数据的混乱情况进行分类。该论文重点关注通常需要不同方法的四项核心 DP 任务:

  1. 错误检测 (Error Detection, ED): 发现拼写错误、不一致或不合理的数值 (例如,年龄为 200 岁) 。
  2. 数据填补 (Data Imputation, DI): 根据上下文推断并填补缺失值。
  3. 模式匹配 (Schema Matching, SM): 弄清楚数据库 A 中的“DOB”列与数据库 B 中的“Birth_Date”是同一个意思。
  4. 实体匹配 (Entity Matching, EM): 确定“Apple Inc.”和“Apple Computer Company”指的是同一个现实世界的实体。

直到最近,你还需要为这些任务分别建立机器学习模型。LLM 改变了游戏规则,因为它们拥有“通用知识”和模糊推理能力。然而,现成的本地模型 (如基础版 Llama 3) 天生不擅长这些结构化数据任务,而云端模型 (如 GPT-4) 对于敏感数据来说则是隐私噩梦。

Jellyfish 解决方案

研究人员推出了 Jellyfish , 这是一个通过微调开源基础模型 (Mistral, Llama 3, 和 OpenOrca-Platypus2) 构建的模型系列 (参数量分别为 7B, 8B, 和 13B) 。

其目标是创建一个通用 DP 任务求解器 , 具备以下特点:

  • 本地运行: 在单张低成本 GPU (消费级硬件) 上运行,确保数据永远不离开本地。
  • 可定制: 允许用户注入特定的领域知识。
  • 可解释: 不仅修复数据,还能解释为什么

架构: 从原始数据到指令微调

Jellyfish 的核心创新不仅仅在于模型本身,还在于创建它的流程。训练一个 LLM 来清洗数据并不像给它喂 CSV 文件那么简单。结构化数据必须被“序列化”为模型能够理解和学习的自然语言指令。

图 1: 数据预处理指令微调概述

如上图 1 所示,该过程涉及两个主要阶段: 微调 (Tuning)推理 (Inference)

  1. 微调 (左侧) : 来自各种任务 (ED, DI, SM, EM) 的原始数据集被转换为指令数据。这不仅仅是复制粘贴的工作;研究人员应用了 知识注入 (Knowledge Injection)推理数据 (Reasoning Data) 生成技术 (使用更大的“教师”模型 Mixtral) 来创建丰富的训练样本。这些数据被输入基础模型,从而创建出 Jellyfish 变体。
  2. 推理 (右侧) : 微调后的 Jellyfish 模型随后可以处理新的、未见过的数据集,甚至可以通过遵循类似的提示结构来处理未见过的任务 (如列类型标注) 。

Jellyfish 提示词的解剖

如何将数据库的一行转换为语言提示词?研究人员开发了一种结构化的序列化方法。

图 2: 指令数据中的提示词示例。

图 2 展示了训练和推理过程中使用的提示词结构。它由五个关键部分组成:

  1. 系统消息 (System Message): 设定行为模式 (例如,“你是一个 AI 助手…”) 。
  2. 任务描述 (Task Description): 清晰定义模型需要做什么 (例如,“判断下列两个产品是否相同”) 。
  3. 注入知识 (Injected Knowledge): 这是一个关键的创新点。提示词包含了规则或提示,例如“缺失值 (N/A) 不应作为你决策的依据”。这有助于模型避免常见的陷阱,比如仅仅因为两条记录的电话号码字段都是“NULL”就认为它们匹配。
  4. 实例内容 (Instance Content): 实际的数据行,被序列化为文本 (例如,Product A: [name: "..." factory: "..."]) 。
  5. 问题与输出格式 (Question & Output Format): 一个具体的问题以及回答的约束条件 (例如,“从 [Yes, No] 中选择你的答案”) 。

通过标准化这种格式,模型学会了一种一致的模式来分析结构化数据,无论它是在看餐厅评论还是医疗记录。

“师生”模式: 提炼推理能力

Jellyfish 最有趣的方面之一是它如何学会解释其决策。小模型 (7B 参数) 通常在复杂推理方面表现挣扎。为了解决这个问题,研究人员使用了一种称为知识蒸馏 (Knowledge Distillation) 的技术。

他们使用了一个更大、更聪明的开源模型 (Mixtral-8x7B),将 DP 任务输入给它,要求它为正确答案生成详细的解释。这些解释随后被视为“标准答案”般的推理数据,用于训练较小的 Jellyfish 模型。

本质上,Jellyfish 不仅被教导答案是什么 (Yes/No),还被教导了一个更聪明的模型是如何思考这个问题的。

实验结果

研究人员将 Jellyfish 与两组竞争对手进行了比较:

  1. 非 LLM 方法: 专门针对特定任务的传统机器学习工具 (例如,用于错误检测的 HoloDetect,用于实体匹配的 Ditto) 。
  2. LLM 方法: 通用巨型模型,如 GPT-3.5、GPT-4 以及其他微调过的表格模型。

核心任务上的表现

结果非常有希望。尽管在本地硬件上运行,且参数量仅为 GPT-4 的一小部分,Jellyfish 依然表现出色。

表 4: 已知任务上的 DP 性能。

表 4 突出了几个关键发现:

  • Jellyfish vs. 非 LLM 方法: 在几乎所有数据集上,Jellyfish-13B 都优于专门的非 LLM 方法 (“Best of non-LLM”列) 。这点意义重大,因为那些非 LLM 方法通常需要在该数据集上进行专门训练,而 Jellyfish 充当的是通才角色。
  • Jellyfish vs. GPT-4: 虽然 GPT-4 在许多任务的原始性能上仍然是王者 (由粗体数字表示) ,但 Jellyfish-13B 具有惊人的竞争力,经常击败 GPT-3.5,偶尔甚至超越 GPT-4 (例如在模式匹配任务的 CMS 数据集上) 。
  • 专精的力量: Jellyfish-13B 始终优于大得多的 Solar 70BStable Beluga 2 70B (在更广泛的研究中引用) ,证明了较小的专用模型在特定领域任务中往往优于巨大的通用模型。

多任务学习的影响

LLM 微调中一个引人入胜的问题是: “学习检测错误是否有助于模型学习匹配实体?”答案似乎是肯定的。

图 5: 使用多任务数据微调对 DP 性能的影响。

图 5 (上图) 显示了随着训练数据包含更多任务,13B 模型的性能变化。标记为 (1, 1, 1, 1) 的点代表在所有四个任务 (ED, DI, SM, EM) 上训练的模型。趋势很明显: 跨任务学习是有效的。

当模型学会识别错误 (ED) 时,它对有效数据的样子有了更好的理解,这有助于它填补缺失值 (DI)。当它学会匹配模式 (SM) 时,它能更好地理解属性关系,从而帮助它匹配实体 (EM)。这种协同效应证实了构建“通用求解器”是一个有效的策略。

推理悖论

我们前面提到,Jellyfish 在训练期间使用了“推理数据” (解释) 。然而,这些数据的影响因模型大小而异。

图 4: 推理数据对 DP 性能的影响。

图 4 揭示了一个有趣的细微差别:

  • 7B 和 8B 模型 (橙色/蓝色线) : 添加适量的推理数据 (约 8k-14k 个实例) 可以提高性能。这些较小的模型受益于“被教导如何思考”。
  • 13B 模型 (绿色线) : 当添加推理数据时,性能最初反而显著下降

为什么?研究人员假设,13B 版本的基础模型 (OpenOrca-Platypus2) 已经具备了很强的逻辑能力,但这与 DP 任务所需的特定逻辑不太一致,从而在微调过程中引起了冲突。因此,最终的 Jellyfish-13B 模型是在没有推理数据的情况下进行微调的,以最大化任务准确性,而 7B/8B 版本保留了推理数据,作为“解释器”。

可解释性: 比 GPT-3.5 更好?

Jellyfish 的主要卖点之一是它可以为其数据清洗决策提供详细的理由——这对审计至关重要。

研究人员进行了一场正面对决,由 GPT-4o 担任裁判,比较 Jellyfish-8BGPT-3.5 生成的解释。

表 13: GPT-3.5 和 Jellyfish-7B/8B 在解释能力上的正面对比。

如表 13 所示, Jellyfish-8B 完胜 GPT-3.5,赢得了近 73% 的正面对决。

在定性示例中,GPT-3.5 可能只是简单地陈述“价格不同,所以产品不同”,而 Jellyfish 会提供更深层的背景,指出诸如“产品 A 是针对 Mac 的特定软件版本,而产品 B 是一个综合套件”等细微差别。当用户需要信任自动化系统来更改他们的数据时,这种详细程度至关重要。

为什么这很重要: 隐私与定制

Jellyfish 的技术成就令人印象深刻,但实际意义才使这篇论文对行业至关重要。

  1. 数据主权: 通过证明 7B-13B 参数的模型可以处理复杂的清洗任务,Jellyfish 使公司能够完全离线地清洗敏感的财务或健康数据。你不需要 Azure 或 OpenAI 合同就能用 LLM 级别的智能清洗数据。
  2. 成本效益: 虽然微调需要一些算力,但在硬件成本投入后,本地 GPU 上的推理是免费的。对于海量数据集,向 GPT-4 支付按 token 计算的 API 费用极其昂贵。Jellyfish 可以在单张 A100 甚至消费级显卡 (配合量化) 上运行,使其具有可扩展性。
  3. 可扩展性: 由于该方法依赖于指令微调,组织可以克隆这种方法。医院可以将特定的医学知识注入提示词中,创建一个“医疗版 Jellyfish”,它能理解心率为 300 是错误,但胆固醇水平为 300 只是偏高。

结论

Jellyfish 代表了我们在应用 LLM 处理实用任务时的思维转变。我们并不总是需要云端最大、最聪明的模型。对于数据流程中像预处理这样特定的、高风险的步骤,一个较小的、本地微调的模型可以提供更好的性能、更好的解释以及极其优越的安全性。

通过结合巧妙的数据序列化、知识注入和推理蒸馏,作者为自动化数据清洗的未来描绘了一幅蓝图——在这个未来里,数据科学的“清道夫”是一个智能、善于表达且安全的 AI 代理。

如果你有兴趣尝试这些模型,研究人员已在 Hugging Face 上发布了它们,允许任何拥有 GPU 的人立即开始在本地清洗数据。