跳转至

P1-4.2 输入(input)、输出(output)与数据(data)

Section ID: P1-4.2 Version: v2026.07.20

4.1 已经把 model 说明成:它不是整个现实问题,而是为了某个目的而缩减出来的可计算表示。现在要进一步区分描述这个模型时最先拆开的三个元素:我们往里放什么、希望它产出什么、又需要收集哪些案例。

这一节整理 inputoutputdatafeaturerepresentationparameter 会在 4.3 再讲。

延续前面的例子,这里仍以 想用 AI 帮助处理客户支持消息 为主线。我们会不断轻微改写这个场景,去看输入、输出和数据是怎样彼此分开的。

在 Part 1 中,inputoutputdataexamplelabel 的基本区分会固定在这一节。modelsystem 的基本区分已经在 4.1 先整理过,featurerepresentationparameter 的差异会在 4.3 继续细化。这里先专注于把 往里放什么、想得到什么需要收集哪些案例 分开。

这时还不能算是建模任务,因为“帮助处理”这个说法太宽。必须先把这个宽泛说法拆成输入、输出和数据,模型才有可能接手一个更小的任务。

这一节整理以下问题:

  • inputoutputdata 分别起什么作用?
  • 为什么同一个现实问题,只要输入和输出定义不同,就会变成不同任务?
  • 为什么 data 不能只被看成文件堆,而应该被看成一组 examples

featurerepresentationparameter 的关系会在紧接着的 4.3 回来,问题定义如何改变模型选择会延续到 4.4。输入和输出怎样进一步变成真正的特征与表征计算,则会在 Part 4 的机器学习章节和 Part 5 的神经网络章节里再次连接。这里先专注于分开 放进去什么产出什么

区分输入、输出与数据的基准

  • 区分 inputoutputdata 的角色。
  • 理解把现实问题读成“输入和输出之间的关系”这一视角。
  • 看到:同一个现实问题,只要输入与输出定义不同,所需数据也会跟着改变。
  • 理解数据不是单纯的文件集合,而是教模型学习标准的一组案例。
  • 为 4.3 里的 featurerepresentation 做准备。

三个基准

当现实问题被缩减成可计算问题时,先要分开下面三个点。

基准 为什么重要 这一节先固定的区分
input 是模型真正看到的信息 这样才能知道模型凭什么作判断。 先抓住“放进去的信息”这个感觉,比如消息句子、图像或传感器值。
output 是要求模型产出的结果 这样才能理解同一现实问题为何会变成不同任务。 先分清最后要的是类别、分数还是句子。
data 是一组输入-输出案例 这样才能看清数据不是文件堆,而是学习标准。 把过去案例和模型将要学什么联系起来。

inputoutputdataexamplelabel 是贯穿这一节的核心术语。现阶段只先留下一个大区分就够了:input 是放进去的信息,output 是想得到的结果,data 是案例集合,example 是其中一条,而 label 是期望答案的名称。下面正文会再把这些词绑一次。

这里尤其容易混淆的是 inputdatainput 更接近模型现在为一次判断实际接收到的一条信息,而 data 更接近把许多这样的输入-输出案例收集起来形成的学习用集合。比如 配送什么时候到? 这样一条消息可以是一条输入,而包含成千上万条此类消息及其正确分类的表格才是数据。

另外,一条输入并不一定只意味着一个值。我们可以只放入消息句子,也可以在需要时把 消息句子 + 订单状态 + 客户等级 + 最近配送事件 看成一次判断收到的一整组输入信息。在这一节里,只要把 input = 模型一次判断时看到的信息束data = 许多这种输入束与输出案例的集合 分开,结构就会清楚很多。

把现实问题变成可计算形式

AI 模型不会直接处理整个现实问题。人必须先从现实里挑出一部分作为输入,再规定模型应该产出什么输出。

例如,我们想处理客户支持消息 还不是一个建模任务。它太宽、太模糊。

可以把它一步步收窄。

阶段 仍然太宽的表达 更接近建模任务的表达
1 我们想处理客户支持消息 我们想给客户支持消息分类
2 我们想给客户支持消息分类 我们想根据支持消息文本判断消息类型
3 我们想根据支持消息文本判断消息类型 我们想把消息文本作为输入,输出 退款配送换货其他 之一

到了第三步,这件事才真正接近建模任务,因为这时我们终于能看见:什么是输入、什么是输出、需要什么过去案例。

要把它变成 AI 建模任务,通常要收窄成下面这样。

问题 一个可能的回答
什么是 input? 客户写下来的消息文本
什么是 output? 退款配送换货其他 中的一个类别
什么是 data? 过去的消息文本和人工标好的类别
模型要做什么? 预测新消息最接近哪一类

这样一来,现实任务就会被整理成下面这个结构。

input -> model -> output

flowchart TD
  R["现实世界问题"]

  R --> I["输入"]
  R --> T["目标输出"]
  R --> D["过去案例"]

  D --> L["训练"]
  L --> M["训练好的模型"]
  I --> M
  M --> P["对新案例的预测"]

这个图说明:我们不会把整个现实问题直接丢进模型,而是先拆成 inputtarget outputpast examples,再通过学习和预测把它们连接起来。最上面的 real-world problem 仍然是宽泛现实问题,往下走时,模型真正会看到什么、又会被要求预测什么,都会变得更窄。读这个图时,最好不要把它看成“直接解决现实的机器”,而要看成“把现实问题切成可计算小任务的过程”。

Stanford Encyclopedia of Philosophy 的 AI 条目介绍了 Russell 和 Norvig 把智能体理解成“从环境接收 percepts 并执行 actions 的函数”的视角。这个视角在这里有帮助,因为它能帮助我们把 AI 问题读成输入和输出,或者说感知和行动之间的关系。

当然,这仍然只是为了学习而做的简化。真实服务里,输入之前可能还会有预处理、权限检查和个人信息去除;输出之后也可能接上人工复核、政策规则或业务系统联动。

input 是模型真正观察到的东西

input 是模型为作判断而接收到的信息。它可以是句子、图像、传感器值,也可以是表格数据。

问题 输入例子
客服消息分类 消息文本
垃圾邮件分类 邮件标题与正文
降雨预测 温度、湿度、气压、地区、时间
人脸识别 人脸图像
商品推荐 用户点击、购买和搜索记录
故障检测 CPU、内存、错误率、响应时间

定义输入时,一个重要点是:现实中重要的信息,不一定就是实际送进模型的信息。

把客服消息例子再展开一点。

人在现实里能看到的信息 被选作模型输入的信息
客户支持消息文本 消息文本
客户过去的订单记录 不包含
当前配送状态 不包含
之前客服留下的备注 不包含
客户等级或敏感信息 不包含

如果是这样,模型就只能根据消息文本判断。即使配送状态对人很重要,只要它不在输入里,模型就无法使用。

例如,下面两条消息如果只看句子,可能会显得相似,但实际处理方式却可能不同。

消息句子 只看句子时可能的理解 如果有额外信息会改变什么
还没送到。 可能会被看成配送咨询 实际上订单也许处于支付失败状态
我想取消。 可能会被看成退款或取消咨询 如果已经发货,可能需要走退货流程

所以,定义输入,就是在决定 要向模型展示什么。同时,也是在决定 不要向模型展示什么

这就是为什么定义输入时需要追问下面这些问题。

模型实际上能看到什么信息?
这些信息足够支撑判断吗?
有没有重要但缺失的信息?
输入里是否包含个人信息或敏感信息?

inputoutputdataexamplelabel 很容易听起来差不多,所以这里先把它们按代表性基准绑一次,后面的输入与输出定义都以这个区分为前提继续阅读。

术语 极简含义 在客服消息例子里的样子
input 模型实际接收到的信息 消息文本
output 模型必须产出的结果 退款配送换货其他 这样的类别
data 一组过去案例 过去消息文本及人工给出的结果
example 数据中的一条案例 一条消息文本和与之配对的结果
label 附在案例上的正确输出 配送退款 这样的类别名

在这一阶段,只要先留下下面这个区分就够了:input 是放进去的信息,output 是想得到的结果,data 是这些案例的集合,而 label 是答案名称。

output 是交给模型的任务

output 是模型必须产出的结果。即使输入相同,只要输出定义不同,问题本身就会完全改变。

例如,同一条客户支持消息,也可以连接到很多不同输出。

输出定义 输出形式
选出一种消息类型 固定类别
预测 1 到 5 的紧急程度 数值分数
推荐负责团队 业务路由目标
生成回复草稿 自然语言句子
判断是否需要人工复核 是 / 否

所以,单说 用 AI 处理客户支持消息 还远远不够。还必须说清楚:模型到底要输出类别、数值、句子,还是一个是否复核的标记。不同输出形式会通向怎样的建模任务,会在 4.4 再单独整理。

假设输入句子是下面这样。

我昨天刚下单,但现在还查不到物流。

即使只是这一句,也会因为输出定义不同而变成不同任务。

交给模型的任务 输出例子 说明
选择消息类型 配送 在固定类别中选一个
给出紧急程度 2 输出一个数值分数
推荐负责团队 物流团队 选择一个下游业务目标
生成回复草稿 物流更新可能还需要一些时间…… 生成一句文本
判断是否要人工复核 判断自动处理是否安全

这里真正重要的是:即使输入不变,只要输出变了,所需数据也会跟着改变。要做消息类型分类模型,就需要过去消息上有 配送退款换货 等标签;要做回复草稿生成模型,就需要高质量答复示例或答复编写标准。

定义输出时,需要追问下面这些问题。

模型是不是只要选一个类别就够了?
它需要输出数值分数吗?
它需要生成句子吗?
只给一个供人确认的中间结果是否已经足够?
这个输出真的和想解决的业务目标连接起来了吗?

data 是输入-输出案例的集合

data 是模型用来参考或学习的一组案例。在 supervised learning 中,通常会使用同时包含输入和期望输出的案例。

Google 的入门资料会把监督学习中的 example 解释成同时含有 features 和 label 的对象。在这一节里,可以先把它更简单地读成:一条 example 就是 input + desired output 的组合。

输入 输出
我想退款。 退款
配送什么时候到? 配送
商品寄来时是坏的。 换货或补发
我想修改地址。 配送信息修改

这个表虽然简单,但已经展示出很重要的结构。

example 1 = input 1 + output 1
example 2 = input 2 + output 2
example 3 = input 3 + output 3
...

如果把节奏放慢一点来说,数据就是展示给模型的一组过去案例。

当这种输入出现时,
人期待的是这种输出。

模型会通过这类重复出现的案例去调整输入和输出之间的关系。因为这一节还不会深入讨论特征,所以这里只要把数据理解成“把模型要看的输入和想得到的输出放在一起的案例”就够了。

创建数据时,同样需要把速度放慢。即使面对同样的客户支持消息,只要标签标准不断摇摆,模型就很难学稳。

输入 标签 A 标签 B 问题
我想取消付款。 退款 取消 同一个意思被赋予不同标签
发货前可以改地址吗? 配送 地址修改 标签体系彼此重叠
商品寄来时是坏的。 换货 瑕疵品 处理方式标签和原因标签被混在一起

像这样的数据也许作为文件是存在的,但很难算是好的学习数据,因为模型要学的标准一直在晃动。

更好的数据集,需要先把标签标准整理清楚。

标签 标签标准
退款 以付款取消、退款请求或订单取消意图为中心的咨询
配送 以物流查询、延迟或配送地址变更为中心的咨询
换货 因破损、瑕疵或收到错误商品而需要换货或补发的咨询
其他 不明显落在以上标准中的咨询

学习式模型会利用这些案例去调整输入和输出之间的关系。但“有数据”并不自动等于“会得到好模型”。模型无法稳定学到数据里不存在的关系,也可能把错误数据中的错误关系一并学进去。我们需要检查数据是否代表真实使用环境、输出标签是否一致,以及有没有混入错误案例。

输入和输出一变,数据也会跟着变

一个现实问题并不总是对应一个固定数据集。数据集的形状会随着输入和输出的选择而改变。在这一节里,我们只先确认数据的形状;任务定义和评价标准会继续放到 4.4。

例如,想一想 我们想减少配送问题 这个目标。

输入 输出 所需数据的形状
订单地区、商品类型、发货时间 是否发生延迟 带有延迟标签的订单与配送历史
客户支持消息文本 消息类型 消息文本与消息类型标签
配送追踪事件 下一步配送状态 按时间顺序排列的配送事件
过去延迟案例 延迟原因 延迟案例与原因标签
客户消息加订单信息 回复草稿 消息、订单状态与答复示例

这个例子说明:输入和输出的定义,会决定数据的形状。即使业务目标相同,不同的输入和输出选择也会需要不同数据。

换句话说,只说 多收集一些数据吧 还不够。必须先决定:这些数据到底是要教会模型哪一种输入和输出关系。

目标 为什么要收集的数据会变
想预测配送延迟 需要订单时间、发货时间、地区、物流状态等结构化数据
想给配送相关消息分类 需要客户支持消息文本和消息类型标签
想生成配送相关答复 需要消息文本、订单状态、政策规则和优质答复示例

即使都挂在同一个“大配送问题”下面,只要交给模型的工作不同,数据形状也会随之改变。至于任务该如何定义、适合哪些模型候选、该用什么评价标准,会在 4.4 接着处理。

必须先检查输入和输出定义

模型出错的原因,并不总在算法上。输入或输出定义本身,可能从一开始就把问题框错了。4.2 这里只先把这一点作为预警来确认。

例如,假设目标是减少客户不满,但输入只使用消息文本,输出只预测消息类型。这个模型或许能完成消息分类,但它并不能直接解决客户不满到底是由配送延迟、商品质量还是退款政策造成的。

下面这些错误很常见。

需要检查的点 为什么重要
输入缺少必要信息 模型看不到关键线索
输出太模糊 不同人打出的标签会不一致,学习变得不稳定
实际目标和输出不匹配 模型指标看起来不错,但业务问题仍未解决

数据是否贴近真实环境、部署后性能是否还能保持、敏感信息该怎么处理,会在后面的任务定义、评价和服务架构部分更详细展开。

用这种输入,真的能够判断这种输出吗?
这个输出和我们真正想解决的问题连得上吗?
这些数据真的代表模型将被使用的场景吗?

一个简短的角色区分练习

看下面这些案例,先判断它更接近 输入定义问题输出定义问题,还是 数据定义问题

案例 第一时间想到的问题 按本节标准作出的第一判断
只输入消息文本,但准确处理往往还需要订单状态 模型能看到的信息里是不是少了重要内容? 更接近输入定义问题
配送退款换货其他 的边界经常因人而异 模型要产出的结果是不是太模糊? 更接近输出定义问题
同一条消息,有人标成 退款,也有人标成 取消 正确答案标准是不是不稳定? 更接近数据定义问题
团队内部连到底是做消息分类还是做回复草稿生成都没统一 交给模型的任务真的已经收窄成一个了吗? 更接近输出定义问题
只收集了某一个地区客户的消息,导致模型在其他地区表达上经常出错 过去案例是否充分代表了真实使用环境? 更接近数据定义问题

这个练习的关键,不是把所有模型性能问题立刻看成算法问题。实际工作里,更早出问题的常常是 放进了什么让模型去预测什么 以及 收集了哪些案例

检查清单

  • 我可以区分 inputoutputdata 的角色。
  • 我可以把现实问题改写成 input -> model -> output 的结构。
  • 我可以解释:即使输入相同,只要输出定义不同,所需数据也会变化。
  • 我可以解释数据是一组输入-输出案例。
  • 我可以解释数据会成为调整模型内部标准的依据。
  • 我可以解释:如果输入和输出定义得不好,问题可能在准备数据之前就已经开始了。
  • 我可以解释:现实问题不会立刻变成模型问题,必须先定义输入、输出和数据。
  • 我可以解释:即使是同一个现实问题,只要输入或输出定义改变,所需数据也会跟着改变。

出处与参考资料

  • Stanford Encyclopedia of Philosophy, Selmer Bringsjord and Naveen Sundar Govindarajulu, Artificial Intelligence, 2018-07-12, 确认日期:2026-06-22.
  • Google for Developers, Supervised Learning, 确认日期:2026-06-22.