同一个网络、同一批数据,只把 3 条标签打错(38%),准确率从 1.000 掉到 0.625, 而损失反而更低(0.0009 对 0.0008)。模型没有「觉得不对」的能力——这就是训练师存在的理由。
上一节算行业收益,这一节回到人:收益要靠人把数据弄对,而「弄对」这件事没有自动化方案。
一、改的是数据,不是代码
Demo 用一个两层小网络(输入 56 维词袋、隐层 8 个、输出 1 个)做情感二分类,8 条样本,训练 400 轮。 三行对照:随机初始化、干净标注、三条标签打错。 干净标注那一行准确率 1.000——但只有 8 条样本,这是「背下来了」,不是泛化能力。 这一节只看一件事:标注错了会怎样。 答案:准确率掉到 0.625,而且末轮损失更低(0.0009 对 0.0008)。 模型不但学错了,还学得更「自信」。 这就是关键:模型没有「这条标签可能标错了」的怀疑。你给它什么,它就拟合成什么。 所谓「赋予人工智能人性之魂」,落到工程上就是这两句——谁来判断这批标签对不对、 谁来定「错到什么程度算错」。
二、训练师到底动什么
他不动模型结构(那是算法工程师的事),也不动业务规则(那是业务方的事)。 他动的是三样:数据、指标、验收标准。 数据:这条样本算不算正例、这个类别边界在哪、这一批要不要重标。 指标:用准确率还是 F1、阈值定在哪、哪一类错误更不能忍。 验收标准:这版模型能不能发、发之前要看哪几个数、退化多少算不可接受。 三样都不是技术活,但三样都会直接反映到模型上——而且都不可逆:数据标错了,训练跑完才发现, 返工成本是按周算的。
三、为什么这个岗位现在才出现
因为以前模型小、数据少、迭代快,标错了重训一次也就几分钟。 现在一次训练几天到几周,标错的代价被放大了几个数量级。 同时模型能力上来了,瓶颈从「模型不够强」转成「数据不够好」。 于是专门有人负责把数据这一端做对——岗位就这么分出来了。 下一章会把这个岗位要的能力一条条拆开:计算机操作、数学、编程、特征工程、数据处理、AI 基础。
四、动手 Demo:三条标签打错,准确率掉三成八
8 条情感短句,切成字做词袋,喂给一个 56-8-1 的两层网络,训练 400 轮。 跑三次:不训练、干净标注训练、把 3 条标签打反再训练。对比准确率和末轮损失。
h = np.tanh(X @ W1 + b1)
p = H.sigmoid(h @ W2 + b2).ravel()
d2 = (p - y) / len(y)
gW2 = h.T @ d2[:, None]
d1 = (d2[:, None] @ W2.T) * (1 - h ** 2)
W1 -= lr * (X.T @ d1)
for i in (0, 3, 6): # 三条标签打反
y_bad[i] = 1 - y_bad[i]
实跑输出:
--------------------------------------------------------------------
训练师在做什么:同一张网络,喂不同的数据
--------------------------------------------------------------------
情形 训练集准确率 末轮损失
--------------------------------------------
随机初始化,没训练 0.750 0.6818
干净标注训练 400 轮 1.000 0.0008
三条标签打错再训练 0.625 0.0009
标签打错比例 3 / 8 = 38%
准确率掉下去 1.000 → 0.625(38 个百分点)
损失反而更低吗 是(0.0009 对 0.0008)
样本只有 8 条、特征 56 维,所以「干净标注」那一行 1.000 是背下来的,
不是泛化能力;这一节只看一件事——标注错了模型会怎样。
答案在第三行:它会认真把错误学下去,连损失都更低。
所谓「人性之魂」,落到工程上只有两句:谁来判断这批标签对不对、
谁来定「错到什么程度算错」。这两件事只能由人做。
损失曲线(干净标注,前 20 轮):
***
**
**
*
*
*
**
***
*****
^ 高 0.6818 低 0.0577
三行结果:不训练 0.750、干净标注 1.000、打错标签 0.625。 标签错了 3/8,准确率掉了 38 个百分点。 末轮损失那一列值得细看:打错标签的模型损失 0.0009, 比干净标注的 0.0008 只高一点点——它把错误答案学得很到位。 所以「损失下降」不等于「模型变好」。损失只说明它拟合训练集拟合得怎么样,不说明拟合的是对的东西。 这是新手最容易被骗的一处。 样本只有 8 条,1.000 这个数没有泛化含义。 这一节的结论不依赖准确率的绝对值,只依赖「打错标签会让结果变差、而损失看不出来」这个对比。
30 秒实验
- 把打错标签的条数改成 1 条、5 条,看准确率怎么变。
- 把训练轮数从 400 改成 50,看「打错标签」那一行还学不学得会错误答案。
- 想一想:如果你只能看一个数判断模型好坏,你会看损失还是看验证集准确率?
常见误区
- 「损失降了就是模型变好了」——本例里打错标签的模型损失也很低。
- 「标注是体力活,随便找人都能干」——标错了模型会认真学下去。
- 「训练集准确率 100% 说明模型很强」——8 条样本背下来也能 100%。
自测三问(点开对答案)
1. 打错 38% 的标签,会带来什么后果? —— 准确率明显下降,而损失反而可能更低——模型把错误学得很自信。 2. 训练师动的三样东西是什么? —— 数据(标什么)、指标(看什么数)、验收标准(能不能发)。 3. 为什么这个岗位现在才出现? —— 训练一次要几天到几周,标错的代价被放大,瓶颈从模型转到数据。这一章讲「是什么」。下一章讲「要会什么」——从计算机操作开始。
- ☐ (本节完,下一节 1.2.1 AI训练师的起源:技术发展的必然产物)