深度学习 A to Z · 3-7

序列模型 — 带着记忆一步一步往前走

句子、声音、传感器记录、股价——这些数据的意义由顺序决定。给一次只看一张的神经网络加上一个记住“刚才看到的东西”的环,就成了 RNN;再给这份记忆加上不让它变模糊的门(gate),就成了 LSTM 和 GRU。我们会用数字追踪记忆是否真的留了下来,并通过实验确认:即使有门,学习也不会自动成功。

1990Elman 的简单循环神经网络 [R1]
1997LSTM 发表 [R3]
3 个 · 2 个LSTM 与 GRU 的门数量
1,152 : 912隐藏大小为 16 时 LSTM 与 GRU 循环层的参数 (Keras)
+0.86 → −0.88翻转第一个信号后随之改变的 LSTM 记忆(第 5 节)
2 段可在 Colab 中直接运行的代码
1一次一张

一次一张、单向流动 — 单个画面无法得知的事

在 3-1 中,果蝇判断了影子是否“正在靠近”。可如果只拿到一张拍下影子的照片,会怎样呢?

神经网络接收的内容

给初学者的解说

3-2·3-3 的神经网络接收一个输入、给出一个输出就结束了。它不会记得之前看到过什么。这样的神经网络叫作前馈(只向前流动的)神经网络。一张同样大小的影子,可能正在靠近,也可能正在远去。答案不在单个画面里,而在画面的顺序里。3-1 的实验把两张画面(先·后)一起输入,也是这个原因。

2前馈

用前馈网络输入顺序的两种方法及其局限

数列“100 → 110 → 120”(上升)和“120 → 110 → 100”(下降)由同样的三个数组成。把它们输入前馈神经网络有两种方法。

输入方法
数列长度
3环与展开

为什么会出现环,以及展开

ht = f(xt, ht−1)每个时刻重复使用同一组权重

查看
长度

给初学者的解说

解决第 2 节问题的思路很简单:处理每一步时,同时接收上一步生成的摘要(隐藏状态)。画成图,就是从方框出来的箭头又回到自身,形成一个环。把这个环沿时间轴一路展开,看起来就像同一个方框按步数连成一串的前馈神经网络。这些方框全都使用同一组权重。正如 3-3 的 CNN 在所有“位置”上使用同一个滤波器,RNN 在所有“时刻”上使用同一组权重。所以长度变了,权重数量也不变。

4RNN

RNN — 隐藏状态、BPTT 与梯度消失

ht = tanh(wx·xt + wh·ht−1)Elman, 1990

环的权重 wh
输入

BPTT 与梯度消失

在展开图上做反向传播,就是 BPTT(随时间反向传播)[R8]。最后输出的误差要传回第一步,每往回走一步都要乘以 wh × tanh 的梯度(1 − h²)。这个值小于 1 时,按步数连乘会趋近于 0(梯度消失);大于 1 时则可能爆炸。Bengio 等人在 1994 年证明,正因如此,用梯度下降学习长时间依赖从根本上就很困难 [R2]。

把 wh 调大(1.5),记忆会留得更久,但 tanh 会贴近 ±1,梯度 1 − h² 接近 0。抓住记忆与通过学习修正这份记忆,二者相互冲突。这与 3-2 中“sigmoid 的梯度最大只有 0.25”是同根的问题。

5LSTM

LSTM — 细胞状态与三道门

ct = ft ⊙ ct−1 + it ⊙ gt · ht = ot ⊙ tanh(ct)Hochreiter & Schmidhuber, 1997 · 遗忘门 Gers 等, 2000

遗忘门偏置 bf
第一个信号
符号名称范围作用(本单元中设定的权重)
ct细胞状态无限制运送长期记忆的传送带。只经过一次乘法(f)和一次加法就传到下一步
ft遗忘门0~1 (σ)保留多少过去的记忆。用 σ(bf) 固定为常数
it输入门0~1 (σ)写入多少新值。σ(10 × 起始标记 − 5):只在第一步打开
gt候选值−1~1 (tanh)要写入的内容。tanh(3 × xt)
ot输出门0~1 (σ)输出多少记忆。σ(5) ≈ 0.993,始终保持打开
ht隐藏状态(输出)−1~1ot ⊙ tanh(ct)。送往下一层以及下一步的门
⊙逐元素相乘向量相同位置的元素相乘。像本例这样只有一个数时,就是普通乘法

给初学者的解说

为了便于说明,这个单元的权重是人为设定的。规则是“只在第一步写入,之后几乎不擦除”。所以翻转第一个信号,20 步之后的记忆也会准确地翻转。第 4 节的 RNN 在同样的输入下翻转第一个信号,最后的值到小数点后第四位都完全相同。这说明 LSTM 是一种能够容纳长期记忆的结构。细胞状态只靠一次乘法(f ≈ 1)和加法延续,所以反向传递的梯度也几乎不减小 [R3]。

补充两点。第一,1997 年最初的 LSTM 并没有遗忘门。遗忘门是 Gers 等人为了解决输入无休止地延续时细胞状态只增不减的问题而加上的 [R4],如今所说的“LSTM”通常指这个版本。第二,结构能够容纳记忆,并不保证学习能找到那组权重。代码 2 的实验展示了这一差别(第 6 节下方)。

6GRU

GRU — 精简为两道门的 LSTM

ht = (1 − zt) ⊙ ht−1 + zt ⊙ h̃tCho 等, 2014

隐藏大小
输入大小

GRU 合并了什么

GRU 把 LSTM 的遗忘门和输入门合并成一个更新门 z。过去的记忆保留 (1 − z),空出的部分由新候选 h̃ 按 z 填满。保留得越多,写入得越少;写入得越多,保留得越少——就像一杆秤。此外又加了一个重置门 r,决定在计算候选时使用多少过去的记忆。它不区分细胞状态和隐藏状态,因此也没有输出门 [R5]。

权重组从 LSTM 的 4 组减少到 3 组,按教科书公式,参数恰好是 3/4。Keras 默认的 GRU 多一套偏置,所以稍多一些(隐藏 16、输入 1 时为 912 个对 1,152 个,约 0.79 倍)。哪一个更好,因任务而异。

代码 2 的实验 — 结构能够容纳记忆,与学习能找到它,是两回事

每一步都是 ±1、正确答案是第一步的数列(后面各步都是长得一模一样的干扰项)。隐藏 16、Adam 0.005、30 个轮次(epoch)、训练 2,000 条·测试 1,000 条。两个种子的结果分别列出。50% 左右相当于瞎猜,即学习失败。

7自编码器

自编码器 — 像沙漏一样先压缩再还原

训练网络把输入压缩到狭窄的中间层(瓶颈),再还原成原样。不需要正确答案——输入本身就是正确答案。果蝇的蘑菇体则恰恰相反,是把输入扩展开。

瓶颈大小
查看

给初学者的解说

瓶颈越窄,就越只能留下最重要的东西。图中的数列是把两种正弦波混合而成的 16 格片段。已有证明表明,没有激活函数的(线性)自编码器通过学习能达到的最好结果与主成分分析(PCA)相同 [R6],因此这张图直接计算并展示了这个最优结果。多层堆叠的非线性自编码器可以比 PCA 压缩得更好 [R7]。

在序列模型中,它被用作这样的结构:RNN 编码器把一个句子压缩成固定长度的向量,RNN 解码器再把它展开成另一个句子(编码器–解码器)[R5]。很难把长句子全部塞进一个狭窄瓶颈的局限,催生了下一篇 3-8 的注意力。

8图示规则·脉络

图示规则与发展脉络 — 如何读图,谁在何时

不同的书和论文,图示符号都略有差异。这里整理本系列的约定,并按时间顺序看看序列模型是如何一边解决问题一边发展过来的。

符号含义前馈RNNLSTMGRU自编码器
方框一层(权重乘法 + 激活函数)✓✓✓✓✓
→数值流动的方向只向前向前 + 下一时刻向前 + 下一时刻向前 + 下一时刻只向前
↺ 环再次接收上一时刻的值—hh 和 ch—(序列型用 RNN)
σ压到 0~1 的门(gate)——3 个 (f, i, o)2 个 (z, r)—
tanh压到 −1~1 的激活函数可选✓候选 g 与输出候选 h̃可选
⊙ · ⊕逐元素相乘 · 相加——✓✓—
沙漏先变窄再变宽的层大小————✓
9选择助手

选择助手 — 我的数据该先试哪个

回答三个问题,就能选出一个作为起点的模型。这不是正确答案,而是第一个候选。最终决定始终要用验证数据比较后做出(3-2 第 9 节)。

① 数据
② 序列长度
③ 处理方式

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

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

代码 1 · 用 numpy 逐步计算 RNN 与 LSTM对应第 4·5 节 · numpy, matplotlib · CPU 不到 1 秒

用同一个数列计算第 4 节只有一个数的 RNN 和第 5 节手工设定的 LSTM。隐藏状态、反向传递的梯度、翻转第一个信号时的变化,都会得到与页面相同的数字。想换成自己的数据,只需修改 SEQ。

运行结果(2026-10-03 运行,numpy 2.4 · matplotlib 3.10 · CPU)。计算中没有随机数,无论何时运行结果都相同。
代码 2 · 用 Keras 比较 SimpleRNN · LSTM · GRU — “记住第一个信号”对应第 6 节 · tensorflow(Keras), numpy, matplotlib · CPU 约 5 分钟

用三种模型学习每一步都是 ±1、正确答案是第一步的数列。长度 10 · 50 · 100,种子 2 个。第 6 节下方的表格直接由这段输出生成。

运行结果(2026-10-03 运行,TensorFlow 2.21 · Keras 3.15 · CPU)。成功与失败可能随种子·版本·硬件而变化。这种波动本身就是这个实验要展示的内容之一。

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

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

一并附上的代码

AI 的回答只是起点。它提出的论文·数值·库函数务必对照原文和官方文档核实。如果在竞赛·论文中借助了 AI,请按照主办方和期刊的规定说明使用的事实和范围。

术语表

与正文中黄色虚线下划线相同的词典。整个系列使用统一的写法。点击章节名可跳到首次出现的位置。

类比合集 — 以及类比失灵之处

类比是理解的第一步,但也可能成为误解的种子。果蝇·大脑类比标注了强度。直接 有证据表明实际在做同样的事 · 部分 只有部分性质相似 · 无 尚未发现对应的东西

概念日常类比果蝇·大脑类比类比失灵之处
隐藏状态读书时在脑中积累的情节梗概部分 神经元群体的持续活动大脑的短时记忆由什么回路维持,因脑区而异,仍在研究之中
展开·权重共享同一位员工每天按同一套工作守则干活无大脑不会在每个时刻制造相同的“副本”。展开是为了计算而画的图
梯度消失传话游戏中最初的话变得模糊无 反向传播本身尚未在大脑中得到证实传话是向前传递的信号变模糊,而梯度消失是向后传递的学习信号变小
细胞状态工厂的传送带无传送带上的物品原样前进,而细胞状态每一步都会按遗忘门的比例略微减小
门水龙头(开多大,0~1)部分 调节突触传递的神经调质(例如:果蝇蘑菇体中的多巴胺)多巴胺参与学习(连接强度的变化)。LSTM 的门是决定每一步流向的计算,其本身并不是学习
GRU 的更新门秤:旧记忆减得越多,装进的新内容越多无与真正的秤不同,每一步、每个数都使用不同的比例
自编码器瓶颈把冗长的会议总结成三行,再重新展开写出来部分 反例:蘑菇体不是压窄,而是扩展与人写摘要不同,自编码器不由人来决定“什么重要”,只靠还原误差来决定

作者简介与参考文献

E-1 作者简介 · E-2 学术参考文献 · E-3 图片参考资料

E-1 作者简介

Sangsun Ahn(M-Robo 公司代表)

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

课程

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

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

论文与报告

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

E-2 学术参考文献

  1. [R1] Elman, J. L. (1990). Finding structure in time. Cognitive Science, 14(2), 179–211. — 开篇概览,第 4·8 节
  2. [R2] Bengio, Y., Simard, P., & Frasconi, P. (1994). Learning long-term dependencies with gradient descent is difficult. IEEE Transactions on Neural Networks, 5(2), 157–166. doi:10.1109/72.279181 — 第 4·8 节
  3. [R3] Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation, 9(8), 1735–1780. doi:10.1162/neco.1997.9.8.1735 — 开篇概览,第 5·8 节
  4. [R4] Gers, F. A., Schmidhuber, J., & Cummins, F. (2000). Learning to forget: Continual prediction with LSTM. Neural Computation, 12(10), 2451–2471. doi:10.1162/089976600300015015 — 第 5·8 节(遗忘门)
  5. [R5] Cho, K., van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder–decoder for statistical machine translation. EMNLP 2014, 1724–1734. doi:10.3115/v1/D14-1179 — 第 6·7·8 节(GRU,编码器–解码器)
  6. [R6] Baldi, P., & Hornik, K. (1989). Neural networks and principal component analysis: Learning from examples without local minima. Neural Networks, 2(1), 53–58. 作者公开版 — 第 7·8 节
  7. [R7] Hinton, G. E., & Salakhutdinov, R. R. (2006). Reducing the dimensionality of data with neural networks. Science, 313(5786), 504–507. doi:10.1126/science.1127647 — 第 7·8 节
  8. [R8] Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. deeplearningbook.org — 第 3·4 节(第 10 章 循环神经网络,BPTT)
  9. [R9] Caron, S. J. C., Ruta, V., Abbott, L. F., & Axel, R. (2013). Random convergence of olfactory inputs in the Drosophila mushroom body. Nature, 497(7447), 113–117. doi:10.1038/nature12063 — 第 7 节
  10. [R10] Dasgupta, S., Stevens, C. F., & Navlakha, S. (2017). A neural algorithm for a fundamental computing problem. Science, 358(6364), 793–796. bioRxiv 预印本 — 第 7 节

E-3 图片参考资料

  • 第 1 节的靠近·远去画面 — 与 3-1「AI 是如何工作的」第 3·4 节的画面设定相同
  • 第 7 节的蘑菇体图 — 与 3-1 第 5 节相同的概略数值(嗅小球约 50 种,凯尼恩细胞约 2,000 个)

给教育者的提示

这是面向讲师、实务 OJT 负责人和辅导老师的教学指南。时间为预估值,请根据实际课堂调整。

对象学完 3-2 的大学生·职场人士。处理传感器·日志·句子·时间序列数据的从业者
先修知识3-2 的反向传播与梯度消失、sigmoid·tanh。了解 3-3 的权重共享,第 3 节会更容易
学习目标① 用两种方法(平均、拼接)说明前馈网络为什么难以处理顺序 ② 用数字展示 RNN 的隐藏状态与梯度消失 ③ 说明 LSTM·GRU 的门起什么作用,并区分“结构能够容纳记忆”与“学习能找到它”
预计时间阅读 45~55 分钟 · 动画演示 25 分钟 · Colab 实践 30 分钟(代码 1 10 分钟,代码 2 运行 5 分钟 + 解读 15 分钟)

三种教学方案

讲授型 50 分钟

以概念为主

导入 5 分钟(第 1 节的相同画面)→ 第 2·3 节 10 分钟 → 第 4 节梯度消失 10 分钟 → 第 5 节翻转第一个信号 15 分钟 → 第 6 节下方实验表讨论 5 分钟 → 检测题 5 分钟。

实务 OJT 90 分钟

以业务应用为主

用第 9 节选择助手给团队数据分类 15 分钟 → 第 4·5 节 20 分钟 → 代码 2 运行·解读 30 分钟(“结果因种子而异”该如何报告)→ 第 7 节异常检测思路 15 分钟 → 提示词卡片 10 分钟。

一对一辅导

按水平安排进度

入门者只看第 1·3·5·9 节。中级者先让他们手算第 5 节的 c 跟三步,再与代码 1 的 lstm 函数对照,并亲自推导第 6 节的参数公式。

各节教学要点

章节停下来提问的问题操作提示
1 一次一张“只看第三张画面,能知道是不是在靠近吗?”停在“当前的一张画面”,再切换到“顺序”
2 前馈“如果每次句子长度都不同,拼接会怎样?”交替点击长度 3 和 5,观察输入格数的变化
3 环与展开“展开的五个方框,权重有几组?”在折叠图 ↔ 展开图之间交替点击
4 RNN“把 w_h 调大,记忆留得更久,为什么学习反而更难?”从 0.9 改成 1.5,比较 h12 和梯度的数字
5 LSTM“翻转第一个信号,20 步之后的记忆会怎样?”在 b_f = 5 下切换 +1/−1,再改成 b_f = 1 看差别
6 GRU“有门的 LSTM·GRU 为什么在 T = 100 时失败了?”把实验表中种子 0 和 1 并排阅读
7 自编码器“瓶颈为 4 时误差突然减小的原因是什么?”把瓶颈从 1 增加到 4,观察绿色曲线,再切换到蘑菇体视图
8 图示规则·脉络“1997 年的 LSTM 与如今的 LSTM 有什么不同?”点击年表,翻到 2000 年的遗忘门
9 选择助手“我们团队的数据属于哪一类?”让每位参与者选择答案,再讨论推荐结果出现分歧的地方

常见误解 Top 5

误解正确解释要展示的场景
用了 LSTM,长期记忆问题就解决了LSTM 是能够容纳长期记忆的结构。学习能否找到那组权重,取决于任务·训练时间·初始化第 6 节下方实验表(T = 100)
SimpleRNN 只要过几步就一定会遗忘视初始化和任务而定,它有时也能记得相当久。在本实验中,直到 T = 50 两个种子都成功了第 6 节下方实验表(T = 50)
LSTM 从一开始就有遗忘门1997 年的原始论文里没有,是 2000 年 Gers 等人加上的第 8 节年表
GRU 总是比 LSTM 更快、更好只是参数少到约 3/4,性能因任务而异。在本实验的 T = 50 中,只有 GRU 失败了第 6 节
自编码器模仿了大脑的记忆方式它是压窄后做摘要的计算技术。果蝇的蘑菇体反而是扩展第 7 节蘑菇体视图

检测题(点击展开解析)

Q1. 把数列取平均后输入前馈神经网络,会丢失什么信息?请举例说明。

顺序丢失了。100 → 110 → 120(上升)和 120 → 110 → 100(下降)的平均值都是 110,神经网络无法区分。

Q2. 向只有一个数的 RNN h_t = tanh(x_t + 0.9·h_(t−1)) 输入 1, 0, 0,h_1、h_2 分别是多少?

h_1 = tanh(1) ≈ 0.762, h_2 = tanh(0.9 × 0.762) = tanh(0.686) ≈ 0.595.

Q3. 如果遗忘门恒为 f = σ(5) ≈ 0.9933,且输入门完全关闭,那么第一步写入的细胞状态到第 20 步时是初始值的多少倍?

要连乘 19 步,所以是 0.9933 的 19 次方 ≈ 0.880 倍。第 5 节的实际值(0.988 → 0.864,约 0.875 倍)略小一些,是因为输入门没有完全关闭(0.007),干扰信号一点点渗了进来。这个数列的干扰信号中 −1 有 10 个,+1 有 9 个。

Q4. 隐藏 16、输入 1 时,SimpleRNN、LSTM、GRU(教科书公式)的循环层参数各有多少?

一组 = 16 × (16 + 1) + 16 = 288。SimpleRNN 288,LSTM 4 × 288 = 1,152,GRU 3 × 288 = 864。Keras 默认 GRU 多出 48 个偏置,为 912。

Q5. 在代码 2 中,LSTM 在 T = 100 时两个种子都失败了。可以得出“LSTM 无法进行长期记忆”的结论吗?

不可以。像第 5 节那样把权重设定得当,LSTM 就能容纳长期记忆。失败的意思是梯度下降在 30 个轮次内没能找到那组权重。要改变训练时间、学习率、数据量重新实验,并用多个种子重复,才能下结论。

Colab 作业

基础

在代码 1 的 lstm 函数中,把输入门改为始终打开(i = σ(5))。计算翻转第一个信号时 20 步之后的细胞状态会怎样,并用两句话写出输入门的作用。

挑战

在代码 2 中尝试至少一种把 T = 100 的失败变为成功的方法(增加轮次、改变学习率、增加数据等)。用 3 个以上的种子把结果做成表格报告,并有理有据地写出什么起了作用。

难度调整与延伸学习

入门者跳过第 4 节的梯度图和第 7·8 节,讲解也不会断。只需把第 5 节的“翻转第一个信号”讲清楚
进阶把第 4 节的梯度连乘公式推广到隐藏大小为多维(矩阵)的情形,讨论特征值与梯度消失·爆炸的关系 [R2]
延伸学习Sangsun Ahn,《面向商业的数据科学》讲义(数据科学总览) · STEP [K-数字] 人工智能自然语言处理(与 3-5·3-8 相关) · STEP [K-数字] 金融科技数据分析基础(与 3-6 相关)
讲师用资料检测题的评分标准和作业参考答案见教师用答案页面 (3-7)

辛苦了!

「3-7 序列模型」篇读完了。实验室的成员们各说一句话帮你总结。

博士
博士我们认识了带着记忆一步一步往前走的模型。
  • RNN 把记忆装进隐藏状态,传给下一步
  • LSTM 的门(gate)能够容纳长期记忆
  • 能够容纳,与学习能找到它,是两回事
助手
助手T = 100 又是 50%!
果蝇研究员
果蝇研究员第一个信号……是什么来着……