动作 AI · 5-2 · 紧急任务

从识别到生成 — 把特征表的箭头反过来

在 5-1 中,AI 看着火柴人的动作识别出了“乱扔”。这一次反过来:如果给出“投掷”这个词,能让火柴人重新生成一段投掷动作吗?动作是一张有 1,196 个数字的表。把两个动作取平均,手臂会折叠;给每个数字各掷一次骰子,身体会抖动。我们用评审员的评分表比较四个生成器,找出“像样的新动作”需要满足的条件。

1 → 1,196生成:从一个标签出发需要填满的数字
99.9%用坐标平均混合时,最差时刻的骨长误差
0.0%用角度平均混合时的骨长误差
44.2%对每个坐标掷骰子的生成器的骨长误差(代码 2)
5 项评审员的评分项目
2 段可在 Colab 中直接运行的代码
1任务

第二道指令 — “生成投掷动作”

乱扔垃圾的人已经抓到了。可是总部的第二个问题还在:用识别时用过的那些数字,这次能不能生成动作?

[SYSTEM] 03:40 · 已收到 5-1 完成报告。下一道指令:生成火柴人动作。附件:投掷场景 100 个。
博士
博士判别模型接收动作,输出标签。现在把箭头反过来,接收标签、输出动作的就是生成模型!
助手
助手投掷场景有 100 个呢……全部取平均,不就成了“代表性投掷”吗?
果蝇研究员
果蝇研究员试试看。估计手臂会折起来,动作也会没劲儿。问题在于怎么混合这些数字。还得让评审员打个分。
研究室机器人四个生成器已经准备好了:平均、骰子、复制,还有抽取旋钮(潜变量)[注]。评审员的评分项目共有五项。
墙上贴满了火柴人动作卡片,助手拿着放大镜查看其中一张,果蝇研究员和箱子机器人在检查传送带上的卡片
动作数据仓库。一张卡片就是一个场景,即 1,196 个数字。
2反转

把箭头反过来 — 判别模型与生成模型

同样的三个框,只是箭头方向不同。轮流点击两个方向看看吧。

方向
场景
判别模型(识别)
  • 问题:“这个动作是什么?”
  • 信息方向:很多数字 → 很少数字。缩减很容易。
  • 答案:一个。同样的动作总是得到同样的标签。
  • 做得好不好:只要看是否与正确答案一致。
生成模型(生成)
  • 问题:“给我看一个这样的动作。”
  • 信息方向:很少数字 → 很多数字。必须填补空白。
  • 答案:多个。每次都应该得到略有不同的投掷。
  • 做得好不好:没有标准答案。是否逼真、是否多样、是否没有照抄,要分别衡量(第 6 节)。

面向初学者的讲解

人们常这样概括:判别模型学习“给定输入时正确答案是什么的概率”,生成模型学习“数据本身长成什么样的概率” [R1]。知道了数据的形状,就能顺着这个形状抽取新数据。如今的生成式 AI(GAN [R2]、VAE [R3]、扩散模型 [R5])都在用不同的方法解决这个“学习形状、抽取新点”的问题。

3动作是表

动作是一张表 — 46 行 × 26 列,1,196 个数字

把 5-1 的火柴人场景展开成了表。生成模型要填的空格正是这 1,196 格。把鼠标移到格子上看看吧。

场景

1,196 个数字彼此关联

表中的格子并不是各自随意的。同一帧的“右肘”和“右手腕”之间总是相距 0.16(骨长),相邻两帧的值几乎相同(动作是连续的)。判别模型即使不知道这些关联也能给出答案,但生成模型一旦守不住这些关联,马上就会露馅。下一节我们亲手把它打破。

4混合

混合两个动作 — 坐标平均会让手臂折叠

最简单的“生成新动作”方法,就是把已有的两个动作混合起来。试着改变混合的对象吧。下面的条形表示当前帧十根骨头偏离原长度的程度(条越长偏差越大,超过 5% 显示为红色)。

AB
B 的比例50%
混合对象

代码 1 的结果(50:50 混合)

把投掷 + 挥手用坐标平均混合,骨长误差平均为 11.4%,最差时刻达到 99.9%。在两只手腕位于相反方向的那一刻,中点几乎与肩膀重合,前臂就消失了。扔进垃圾桶 + 路过为 1.9%(最差 25.7%),投掷 + 捡起为 1.4%(最差 20.4%)。角度平均在三组中都是 0.0%。同样叫“平均”,结果取决于对什么取平均。

5数据

100 个投掷 — 名字相同,形态各异

生成模型学习的不是某一个场景,而是众多场景散布的形状。我们用与 5-1 相同的方法,改变速度·位置·幅度,铺开了 100 个投掷。点击左边的点来选择场景吧。

6生成器

四个生成器与评审员的评分表

用 100 个投掷生成六个新投掷。评审员看五项:是否逼真(骨长、抖动、投掷力度)、是否多样、是否没有照抄。切换生成器后点“重新生成”看看吧。

打着领带、拿着写字板和哨子的评审员火柴人们指着星级评分板、竖起大拇指
评审员。在实际训练中,由损失函数或判别器担任这个角色。
生成器

代码 2 的评分表 — 每个生成器各 20 个

上方画面是在浏览器中每次重新抽取六个,所以数字略有不同。下表是实际运行代码 2 的结果(训练用投掷 100 个,生成 20 个)。“新颖性”是与最近的训练场景之间的距离(以身高为单位,按坐标计算的均方根)。

生成器骨长误差抖动手腕最大速度多样性新颖性评审员一句话点评
训练数据(参考)4.7%0.02882.550.1260.000由于姿态估计的抖动,真实数据的骨长也有 4.7% 的波动
A 单一平均1.7%0.00451.360.0000.033平滑但总是一样,力度减了一半
B 逐坐标掷骰子44.2%0.265910.000.1490.109很多样,但不像人。手腕会瞬间移动
C 挑一个复制4.7%0.03002.750.1250.000很逼真,但是照抄的
D 抽取 3 个旋钮0.0%0.01252.710.1230.022五项全部通过。不过,它事先就知道旋钮

把评审员用于训练

本篇的评审员只在全部生成之后打分。实际的生成模型会把打分结果直接用于训练:要么调整权重,让损失函数(用一个数字衡量结果与训练数据相差多少)变小(VAE [R3]);要么把区分真假的判别器设为评审员,让它与生成器较量(GAN [R2])。可以说,5-1 的判别模型在 5-2 中以评审员的身份回来了。

7下一个任务

旋钮从哪里来 — 迈向下一个任务

D 之所以胜出,是因为它不是从 1,196 个数字中,而是从3 个数字(速度·位置·幅度)中抽取。这 3 个数字不管怎么改,都会经过骨架(fk)展开成人的形状。

本篇学到的内容
  • 生成就是从分布中抽取:学的不是唯一的正确答案,而是像样答案们的形状。
  • 混合和抽取的对象决定了一半:在坐标上会坏掉,在角度(旋钮)上能保持住。
  • 评分分三个方面:逼真度、多样性、新颖性。只看一项的话,A(平庸)或 C(照抄)就会胜出。
遗留问题
  • 谁来告诉我们旋钮:实际的动作数据不会附带“速度 ×1.03、幅度 ×0.98”这样的旋钮。而动作又太多样,人没法亲手搭出角度模型。这种隐藏的旋钮叫作潜变量。
  • 所以下一个问题是:只看这 1,196 个数据,能否自己找出几个旋钮?把 1,196 折叠成几个的一侧是编码器,把几个展开回 1,196 的一侧是解码器。
火柴人胶片和数字波浪被吸进巨大的漏斗,落成一颗小胶囊;助手用卡尺测量胶囊,博士竖起大拇指
下一个任务预告 · 折叠动作的漏斗
博士
博士把 1,196 个数字放进漏斗,折叠成只有几个数字的胶囊,再从胶囊里展开回来。胶囊里的数字就是旋钮!
助手
助手折叠再展开后如果能得到原来的动作……就说明那个胶囊里装下了整个动作?
果蝇研究员
果蝇研究员这就是 5-3,编码器和解码器。5-1 的乱扔检测也会跟着变好。

Colab 代码 —— 亲自运行本页内容

两段代码都只使用 Colab 默认安装的库。“下载笔记本(.ipynb)”后,在 Colab 中通过文件 → 上传笔记本打开,或者复制后粘贴到新笔记本的单元格中。

代码 1 · 动作是表,为什么一混就坏对应第 3·4 节 · numpy, matplotlib · CPU 不到 1 秒

在 5-1 的场景函数上加入了骨长检查(bone_error)和混合(blend)。把三组动作分别用坐标平均和角度平均混合,比较骨长误差。想换成自己的数据,就在 blend 的两个场景处放入实际的动作坐标(只能做坐标平均,这正是本篇讨论的问题)。

运行结果(2026-10-05 运行,numpy 2.4 · matplotlib 3.10 · CPU)。不使用随机数,任何时候运行结果都相同。还会同时输出三张图(动作表、坐标平均、角度平均)。
代码 2 · 四个动作生成器与评审员的评分表对应第 5·6 节 · numpy · CPU 约 10 秒

用 100 个投掷构建生成器 A~D,各抽取 20 个进行评分。第 6 节下方的评分表直接由这段输出生成。想测试新的生成器,就把形状为 (46, 13, 2) 的场景列表放进 judge("名称", 结果列表)。

运行结果(2026-10-05 运行,numpy 2.4 · CPU)。固定了种子,任何时候运行结果都相同。

AI 应用提示词 —— 以这段代码为起点

这是粘贴到 ChatGPT、Qwen、Claude 等 AI 助手中的提示词。点击“复制”,所选代码会一起附在提示词后面。把〔 〕里的内容换成你自己的情况即可。

一起附上的代码

AI 的回答只是起点。它推荐的论文、数值和库函数,一定要对照原文和官方文档核实。使用真人动作数据时,要先确认拍摄同意以及数据集的使用条件(是否允许商用等)。

术语表

与正文中黄色虚线下划线相同的词典。点击节名即可跳到首次出现的位置。

比喻合集 —— 以及比喻失效之处

比喻是理解的第一步,也可能是误解的种子。与人类知觉相比的比喻标注了强度。直接 有证据表明实际上在做同样的事 · 部分 只有部分性质相似 · 无 尚不知道有对应的东西

概念日常比喻人类知觉比喻比喻失效之处
判别 vs 生成批改考卷(答案对不对)与出考题(出一道像样的新题)部分成立 对人来说,认出一张脸和画出一张脸是不同的能力出题人是带着意图出题的,而生成模型只是顺着数据的形状抽取
分布全班同学身高集中分布的形状无身高只是一个数字,而动作是 1,196 个数字一起变化的形状,无法用眼睛画出来
坐标平均把两个人的照片半透明地叠在一起无叠照片时两个人都看得见,而坐标平均会造出两人之间的一个“中间人”,而且这个人的手臂是折起来的
潜变量(旋钮)调音台上的几个音量·音色旋钮部分成立 用“快一点、大一点”这样几句话来记住动作调音台的旋钮都标着名字,而通过学习找到的旋钮没有名字,含义也是混在一起的(5-3)
评审员选秀评委无评委有个人喜好,而本篇的评审员只看规定好的五个数字。数字反映不出的别扭之处,它会漏掉

作者简介与参考文献

E-1 作者简介 · E-2 学术参考文献 · E-3 图片与数字的出处

E-1 作者简介

Ahn Sangsun(M-Robo 株式会社代表)

曾任职于韩国电气安全公社、每日经济新闻,现创办每日经济的外部创业公司 M-Robo 株式会社并担任代表。M-Robo 株式会社是一家以媒体公司内部创业起步的媒体创业公司,曾为国民日报提供机器人记者(StockBot)服务,并为韩国互联网振兴院、韩国言论振兴财团、韩国广播通信电波振兴院等机构执行了多个项目。之后运营自有的 AI 新闻报纸 Money-Robo。担任代表期间,曾获得亚洲开放数据黑客马拉松冠军,并因在数据创业领域的贡献两次获得行政安全部长官奖,是人工智能和区块链领域 5 项专利的发明人及注册人。著有《AI 犯罪与自我防御》,并为韩国技术教育大学在线终身教育院开发了金融科技、统计学、人工智能领域的在线学习内容。最高学位为经济学博士(东国大学,微观数理经济学)。目前在国民大学、湖西大学等多所大学讲授数据和人工智能相关课程。详细简介

讲座

  • Ahn Sangsun (2025).《面向商业的数据科学》讲义. 韩国开放网络大学 人工智能融合学科.
  • Ahn Sangsun (2025). [K-数字] 人工智能自然语言处理. STEP(智能职业培训平台),韩国技术教育大学在线终身教育院.
  • Ahn Sangsun (2024). [K-数字] 金融科技数据分析基础. STEP(智能职业培训平台),韩国技术教育大学在线终身教育院.

STEP 课程链接:link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
如因网站改版无法正常访问,请访问 www.step.or.kr。

论文与报告

  • Ahn Sangsun (2025). 利用国民养老保障面板数据的家庭支出预测模型研究:基于人工智能模型的方法.《未来社会》, 16(2). 原文
  • Ahn Sangsun (2025). 利用国民养老保障面板数据的家庭支出预测模型研究:人工智能方法. 国民养老保障面板学术会议报告资料(2025.05.13),国民年金公团 国民年金研究院. 报告资料
  • Ahn Sangsun (2025). 基于 SNS 文本的疑似毒品交易检测算法研究:以模式与语境分析为中心.《未来社会》, 16(1). 原文
  • Ahn Sangsun (2024). 面向金融领域异常检测模型安全的基于统计的对抗性数据应对方案:实证分析与模拟结果.《未来社会》, 15(3). 原文
  • Ahn Sangsun (2024). 利用人工智能、基于虚拟角色特征的 SNS 帖子检测解决方案. 2024 Summer Newmedia Party 海报发表(2024.06.19),首尔媒体研究生院大学.
  • Ahn Sangsun (2024). 利用工伤面板数据的机器学习模型. 第 10 届工伤保险面板学术会议海报发表(2024.05.17),勤劳福祉公团 勤劳福祉研究院.
  • Ahn Sangsun (2024). 虚拟资产时间序列数据的分析与预测:时间序列模型与人工智能模型的比较及改进建议.《未来社会》, 15(1). 原文

E-2 学术参考文献

  1. [R1] Ng, A. Y., & Jordan, M. I. (2002). On discriminative vs. generative classifiers: A comparison of logistic regression and naive Bayes. Advances in Neural Information Processing Systems 14. — 第 2 节
  2. [R2] Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., & Bengio, Y. (2014). Generative adversarial nets. Advances in Neural Information Processing Systems 27. arXiv:1406.2661 — 第 2·6 节
  3. [R3] Kingma, D. P., & Welling, M. (2014). Auto-encoding variational Bayes. ICLR 2014. arXiv:1312.6114 — 第 2·6 节,下一篇 5-3
  4. [R4] Holden, D., Saito, J., & Komura, T. (2016). A deep learning framework for character motion synthesis and editing. ACM Transactions on Graphics, 35(4), Article 138. doi:10.1145/2897824.2925975 — 第 7 节(折叠动作的表示学习)
  5. [R5] Ho, J., Jain, A., & Abbeel, P. (2020). Denoising diffusion probabilistic models. Advances in Neural Information Processing Systems 33. arXiv:2006.11239 — 第 2 节

E-3 图片与数字的来源

  • 场景插图(动作数据仓库、生成学习、评审员、编码漏斗)是作者亲手制作的像素画
  • 所有动作场景都是与 5-1 相同的合成数据。第 4 节下方的数字和第 6 节下方的评分表是实际运行代码 1·2 的结果
  • 第 5·6 节的画面是在浏览器中用同样方法重新抽取的,随机数与代码 2 不同,因此数字略有差异

E-4 注释

  • [注] 旋钮(潜变量) — 这是本系列对潜变量(latent variable)的通俗比喻,指转动它时整个数据会一起变化的少数几个数字。英文讲解中也常把潜在空间的各个维度比喻为“knob(旋钮)”“dial(拨盘)”“slider(滑块)”。论文中的正式术语是潜变量,在 5-3 中从数据里找到的每个旋钮就是主成分(principal component)。与真正的旋钮不同,一个旋钮上可能混杂多种含义。

教师指南

这是写给讲师、在职培训(OJT)负责人和辅导老师的教学指南。时间只是预估,请根据实际课堂调整。

对象学完 5-1 的大学生和职场人士。想大致了解生成式 AI“学的是什么”的策划人员和从业者
预备知识5-1 的火柴人 13 点与六种场景,平均值与标准差
学习目标① 用箭头方向和“答案的个数”说明判别模型与生成模型的区别 ② 举例说明坐标平均为什么会破坏骨长 ③ 从逼真度·多样性·新颖性三个方面评价生成结果
预计时间阅读 30~40 分钟 · 动画演示 20 分钟 · Colab 实践 25 分钟(代码 1 10 分钟,代码 2 15 分钟)

三种教学方案

讲授型 50 分钟

以概念为主

导入 5 分钟(第 1·2 节 反转)→ 第 3 节 动作表 8 分钟 → 第 4 节 混合实验 12 分钟 → 第 5 节 数据云 7 分钟 → 第 6 节 四个生成器 13 分钟 → 练习题 5 分钟。

在职 OJT 90 分钟

以评价标准为中心

第 2 节 15 分钟 → 把第 6 节的评分表套用到本单位业务中的生成物(文档·图像·动作)上,制定“逼真度·多样性·新颖性”标准 30 分钟 → 结合第 4 节讨论“如何选择表示” 15 分钟 → 运行代码 2·添加新标准 30 分钟。

1 对 1 辅导

分层推进

入门者只学第 2·4·6 节。中级者让他们在代码 2 中亲手做出生成器 E(把两个训练场景用角度平均混合),并加入评分表。

各节教学要点

节停下来提问操作提示
2 反转“生成的正确答案有几个?”轮流点击识别 → 生成
3 动作是表“这张表里,格子之间有哪些不能随意打破的约定?”在投掷中把鼠标移到 0.8~1.2 秒的列上
4 混合“明明是一半一半混合,为什么手臂消失了?”在投掷 + 挥手的坐标平均中,找出红色条变长的帧
5 数据“从这片云中抽取一个新点,会得到怎样的投掷?”点击红点和绿点交界附近试试
6 生成器“A·B·C 各自在哪个评分项目上不合格?”每个生成器都点两三次“重新生成”

常见误解 Top 5

误解正确解释要展示的场景
生成模型生成唯一的正确答案从像样答案的分布中抽取一个。每次都不同才是正常的第 2 节、第 6 节“重新生成”
平均是最安全的生成平均的多样性为 0,而且把时机不同的动作取平均会让力度减弱(手腕速度 2.55 → 1.36)第 6 节 生成器 A
数字越多,表达越好1,196 个数字彼此关联。能守住这些关联的少量数字(角度、旋钮)更适合生成第 4 节 角度平均,第 6 节 生成器 D
与训练数据一模一样就是最好的生成照抄的新颖性为 0。还有把数据中的个人原样输出的风险第 6 节 生成器 C
看起来逼真,评价就可以结束了必须同时看逼真度、多样性和新颖性。只看一项的话,A 或 C 就会胜出第 6 节下方的评分表

练习题(点击展开解析)

Q1. 用 13 个关节表示一个 3 秒(15fps)的场景,共有多少个数字?延长到 5 秒呢?

3 秒是 46 帧(含第 0 秒)× 26 = 1,196 个。5 秒是 76 帧 × 26 = 1,976 个。

Q2. 连在肩膀 (0, 1) 上、长度为 0.33 的手臂,在一个场景中指向左侧水平方向 (−0.33, 1),在另一个场景中指向右侧水平方向 (0.33, 1)。如果对手的坐标取平均,手臂长度是多少?

手 = (0, 1),与肩膀成了同一个点。手臂长度为 0,骨长误差 100%。第 4 节的“最差 99.9%”就是这样的时刻。如果对角度取平均(−90° 与 +90° 的平均为 0°),手臂就成为向下垂、长度为 0.33 的手臂。

Q3. 生成器 C(挑一个复制)在逼真度和多样性上都能通过。为什么它不是好的生成器?

新颖性为 0。它只是把训练数据背下来再拿出来,生成不了新动作。如果数据中包含真人的动作或面孔,还会出现把个人信息原样泄露出去的问题。

Q4. 生成器 A 的手腕最大速度(1.36)为什么低于训练数据(2.55)?

每个场景投掷的瞬间(时机)不同,对坐标取平均后,快速挥动的区间会被薄薄地摊到很多帧上。峰值被抹平,就变成了软绵绵的投掷。

Q5. 生成器 D 五项全部通过,为什么还说它“实际上很难使用”?

D 事先就知道生成场景所用的旋钮(速度·位置·幅度)。实际的动作数据不会附带这样的旋钮。只看数据就把旋钮找出来,正是 5-3 编码器·解码器的工作。

Colab 作业

基础

在代码 1 中把混合比例改为 0、0.25、0.5、0.75、1,把投掷 + 挥手的坐标平均骨长误差整理成表。用两句话写出误差最大的比例及其原因。

挑战

在代码 2 中加入生成器 E“挑两个训练场景做坐标平均”和 F“在训练范围之外(幅度 ×1.6)抽取 3 个旋钮”并评分。报告 F 的结果即使通过了逼真度,还存在什么问题(罐子会飞到哪里)。

难度调整与延伸学习

入门者只要把第 4 节的“坐标平均 vs 角度平均”这一点看透,就掌握了本篇的一半
进阶让学生调查 GAN 和 VAE 如何把“评审员”放进训练中,并进行发表。论文要查阅原文确认
下一篇5-3 编码器·解码器 — 只看数据,自己找出旋钮(潜变量)

任务 5-2 完成!

你已读完「5-2 从识别到生成」篇。研究室成员们各说一句,帮你总结一下。

戴着映出大脑神经网络图案的护目镜的深度学习工程师火柴人,敲键盘、转旋钮、指着神经网络图的六种姿势
博士
博士我们把箭头反过来试了试。
  • 生成不是给出正确答案,而是从分布中抽取
  • 混合坐标,手臂就会折叠
  • 评分看逼真度·多样性·新颖性
助手
助手没想到平均投掷那么没劲……答案原来是三个旋钮。
果蝇研究员
果蝇研究员从数据里找出那些旋钮就是下一个任务。准备漏斗!