🧠 第一章 认识AI新职业
📄 一句话概括

同一个网络、同一批数据,只把 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. 把打错标签的条数改成 1 条、5 条,看准确率怎么变。
  2. 把训练轮数从 400 改成 50,看「打错标签」那一行还学不学得会错误答案。
  3. 想一想:如果你只能看一个数判断模型好坏,你会看损失还是看验证集准确率?

常见误区

  1. 「损失降了就是模型变好了」——本例里打错标签的模型损失也很低。
  2. 「标注是体力活,随便找人都能干」——标错了模型会认真学下去。
  3. 「训练集准确率 100% 说明模型很强」——8 条样本背下来也能 100%。
自测三问(点开对答案) 1. 打错 38% 的标签,会带来什么后果? —— 准确率明显下降,而损失反而可能更低——模型把错误学得很自信。 2. 训练师动的三样东西是什么? —— 数据(标什么)、指标(看什么数)、验收标准(能不能发)。 3. 为什么这个岗位现在才出现? —— 训练一次要几天到几周,标错的代价被放大,瓶颈从模型转到数据。

这一章讲「是什么」。下一章讲「要会什么」——从计算机操作开始。

相关笔记