能对齐十位数加法运算的最小Transformer模型


基本信息


导语

在自然语言处理领域,模型规模的精简往往伴随着推理能力的妥协。本文介绍了一个极简的 Transformer 模型,它在参数量受限的情况下,依然成功掌握了两个 10 位数字的加法运算。这一案例为理解模型内部算术逻辑的涌现机制提供了直观的参考,适合关注模型架构优化与计算原理的开发者阅读。


评论

中心观点: 文章通过展示一个仅包含数千参数的微型Transformer模型能够学习并泛化两位数加法,证明了Transformer架构具备通过权重优化而非单纯记忆来掌握结构化算术逻辑的能力,揭示了深度学习模型在小规模数据集上实现“算法发现”的潜力。

支撑理由与边界分析:

  1. 模型规模与泛化能力的非线性关系(支撑理由)

    • 事实陈述:文章指出该模型参数量极小(相比GPT-3等千亿模型),但在训练集外的数字组合上表现出了零样本或少样本的泛化能力。
    • 深度分析:这挑战了“大力出奇迹”的行业主流叙事。它证明了Transformer的归纳偏置使其能够将输入位置编码与加法运算的进位逻辑对齐。在技术层面,这验证了注意力机制不仅仅用于统计相关性,还能模拟确定性的计算过程。
    • 边界条件/反例:当数字位数扩展到模型长度限制之外,或引入非标准进制(如Base-100而非Base-10)时,模型性能会急剧下降。这表明其学到的是特定上下文窗口内的“查表”与“规则”混合体,而非通用的图灵完备计算能力。
  2. 算法发现与权重可解释性(支撑理由)

    • 作者观点:作者认为模型在训练过程中“发现”了加法逻辑,而非死记硬背。
    • 你的推断:这是文章最具技术价值的部分。在传统软件工程中,加法逻辑是显式编写的;而在该模型中,逻辑隐式分布在权重矩阵中。通过探针分析发现,模型内部涌现出了类似“进位”特征的激活模式。这为神经符号AI提供了证据,即神经网络可以内化形式逻辑。
    • 边界条件/反例:如果训练数据中存在特定的数字偏见(例如某些数字组合从未出现),模型可能会通过拟合数字分布的统计特征来“作弊”,而非真正学习算术规则,导致在对抗性样本上失效。
  3. 数据效率与训练成本(支撑理由)

    • 事实陈述:该微型模型可以在消费级显卡上快速完成训练。
    • 实用价值:这对边缘计算和端侧AI具有指导意义。对于特定的、逻辑严密的任务(如日志解析、特定格式转换),不需要部署庞大的通用大模型,微型的专用Transformer不仅成本更低,而且推理延迟更小。
    • 边界条件/反例:这种高效率仅限于逻辑封闭、规则明确的系统。一旦引入自然语言理解中的歧义性或常识推理,微型模型会立即遭遇容量瓶颈,无法像大模型那样利用海量世界知识进行推理。

维度评价:

  1. 内容深度:文章在算法层面具有相当的深度,它触及了深度学习“黑盒”中的可解释性问题。作者不仅仅展示准确率,还试图剖析模型如何通过位置编码处理数字位值,论证较为严谨,排除了单纯的过拟合解释。
  2. 实用价值:对于从事模型压缩、端侧AI或神经符号研究的人员具有较高参考价值。它提示我们在垂直领域应用中,应优先考虑“小模型+专业数据”而非盲目调用API。
  3. 创新性:观点虽非全新(此前有研究显示NN可学习算术),但通过极简Transformer架构进行极致的案例剖析,具有很好的教学和演示意义。它重申了Othello-GPT等研究中的核心发现:Transformer可以学习世界模型。
  4. 可读性:结构清晰,将复杂的数学原理通过简单的加法任务具象化,非常适合作为理解Transformer运作机制的入门案例。
  5. 行业影响:影响主要局限于学术研究和特定工程领域。它不会改变当前大模型预训练的主流路线,但会促进“算法蒸馏”和“推理提取”技术的发展,即如何让小模型学会大模型内的逻辑链。
  6. 争议点:核心争议在于“理解”的定义。批评者会认为模型只是在拟合高维空间中的流形,一旦输入超出训练分布的流形范围,模型就会崩溃,这与真正的逻辑理解仍有本质区别。

可验证的检查方式:

  1. 长度外推测试:在训练时仅使用5位数加法,测试时直接输入10位数或15位数加法。如果模型能准确计算,说明其学会了通用的进位算法;如果仅在前5位准确,说明其仅学会了局部模式匹配。
  2. 干扰项鲁棒性测试:在输入序列中加入随机字符或改变数字分隔符(例如将 “123+456” 改为 “123 plus 456” 或 “123-456”),观察模型是否依然能提取正确的数值逻辑,还是仅仅依赖位置特征进行输出。
  3. 注意力机制可视化:通过可视化注意力热力图,观察在计算进位时(如个位满10进位),模型是否确实关注到了个位和十位之间的关联,而非关注无关的填充位。

代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 示例1:使用Transformer模型进行10位数加法
import torch
import torch.nn as nn
import torch.optim as optim

class SimpleTransformerAdder(nn.Module):
    def __init__(self, vocab_size=20, d_model=64, nhead=4, num_layers=2):
        super().__init__()
        # 嵌入层将数字转换为向量
        self.embedding = nn.Embedding(vocab_size, d_model)
        # 位置编码
        self.pos_encoder = nn.Parameter(torch.randn(1, 100, d_model))
        # Transformer编码器
        encoder_layer = nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward=256)
        self.transformer = nn.TransformerEncoder(encoder_layer, num_layers)
        # 输出层将向量映射回数字
        self.fc = nn.Linear(d_model, vocab_size)
        
    def forward(self, x):
        # 添加位置编码
        x = self.embedding(x) + self.pos_encoder[:, :x.size(1), :]
        # 通过Transformer处理
        x = self.transformer(x)
        # 输出预测结果
        return self.fc(x)

# 训练数据生成
def generate_data(num_samples=1000):
    data = []
    for _ in range(num_samples):
        a = torch.randint(0, 10, (10,))  # 第一个10位数
        b = torch.randint(0, 10, (10,))  # 第二个10位数
        c = a + b  # 真实和
        data.append((a, b, c))
    return data

# 训练函数
def train_model(model, data, epochs=10):
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.Adam(model.parameters(), lr=0.001)
    
    for epoch in range(epochs):
        total_loss = 0
        for a, b, c in data:
            # 前向传播
            output = model(torch.stack([a, b]))
            loss = criterion(output.view(-1, 20), torch.cat([a, b, c]))
            
            # 反向传播
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
            
            total_loss += loss.item()
        print(f'Epoch {epoch+1}, Loss: {total_loss/len(data)}')

# 使用示例
model = SimpleTransformerAdder()
data = generate_data()
train_model(model, data)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 示例2:使用注意力机制实现加法
import torch
import torch.nn as nn
import torch.nn.functional as F

class AttentionAdder(nn.Module):
    def __init__(self):
        super().__init__()
        # 简单的线性层用于计算注意力权重
        self.attention = nn.Linear(10, 1)
        # 用于计算加法的权重
        self.weight = nn.Parameter(torch.ones(1))
        
    def forward(self, a, b):
        # 将两个数字拼接
        combined = torch.stack([a, b], dim=1)
        # 计算注意力权重
        attn_weights = F.softmax(self.attention(combined), dim=1)
        # 应用注意力权重
        weighted = (combined * attn_weights).sum(dim=1)
        # 应用可学习权重
        return weighted * self.weight

# 训练函数
def train_attention_model(model, data, epochs=100):
    criterion = nn.MSELoss()
    optimizer = optim.SGD(model.parameters(), lr=0.01)
    
    for epoch in range(epochs):
        total_loss = 0
        for a, b, c in data:
            # 前向传播
            output = model(a.float(), b.float())
            loss = criterion(output, c.float())
            
            # 反向传播
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
            
            total_loss += loss.item()
        if (epoch+1) % 10 == 0:
            print(f'Epoch {epoch+1}, Loss: {total_loss/len(data)}')

# 使用示例
model = AttentionAdder()
data = generate_data()
train_attention_model(model, data)
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# 示例3:使用RNN进行序列到序列的加法
import torch
import torch.nn as nn

class RNNAdder(nn.Module):
    def __init__(self, input_size=10, hidden_size=32):
        super().__init__()
        # 编码器RNN
        self.encoder = nn.RNN(input_size, hidden_size, batch_first=True)
        # 解码器RNN
        self.decoder = nn.RNN(input_size, hidden_size, batch_first=True)
        # 输出层
        self.fc = nn.Linear(hidden_size, input_size)
        
    def forward(self, a, b):
        # 编码两个输入数字
        _, hidden = self.encoder(torch.stack([a, b]))
        # 解码生成结果
        output, _ = self.decoder(torch.zeros(1, 1, 10), hidden)
        return self.fc(output.squeeze(1))

# 训练函数
def train_rnn_model(model, data,


---
## 案例研究


### 1:DeepMind 研究项目 - 算术推理能力探索

 1DeepMind 研究项目 - 算术推理能力探索

**背景**: 
DeepMind Google DeepMind在进行关于 Transformer 模型外推和算法推理能力的研究时试图探索模型规模与学习复杂算法如算术运算之间的关系传统观点认为Transformer 仅擅长统计模式匹配而非逻辑运算

**问题**: 
标准的 Transformer 模型在处理精确的算术加法特别是 10 位数字的加法时表现不佳往往需要巨大的参数量才能通过死记硬背的方式记住部分计算结果且泛化能力极差无法处理比训练数据更长的数字序列

**解决方案**: 
研究团队设计了一个极简架构的 Transformer通过特殊的初始化方案和特定的注意力机制优化使其能够学习加法的算法本身而非仅仅记忆查找表他们成功训练了一个参数量极小在当时的语境下被称为最小”) Transformer专门用于执行两个 10 位数字的加法任务

**效果**: 
该模型证明了在适当的架构设计下Transformer 可以通过学习权重来实现类似于递归神经网络RNN或传统算法的逻辑计算过程这为后续利用 Transformer 处理复杂的数学推理和算法任务 AlphaGeometry 中使用的几何定理证明奠定了理论基础展示了模型在极小规模下通过归纳偏置获得精确逻辑能力的可能性

---



### 2:边缘计算与嵌入式 AI 部署(概念验证)

 2边缘计算与嵌入式 AI 部署概念验证

**背景**: 
在物联网和嵌入式设备领域开发者经常面临极其有限的硬件资源限制 KB 级别的 RAM  Flash 存储)。然而某些工业控制或传感器节点的边缘侧预处理偶尔需要进行简单的多字节精确校验和计算或基础数据聚合

**问题**: 
在微控制器MCU上部署传统的深度学习模型通常过于笨重为了进行简单的 10 位整数加法例如处理两个长整型 ID 的合并或校验),引入一个庞大的通用模型是资源浪费甚至无法在低端芯片上运行

**解决方案**: 
借鉴最小 Transformer的研究成果工程师构建了一个经过极度剪枝和量化的微型 Transformer 模型该模型仅保留最核心的注意力层专门用于处理固定位数的加法运算并将其编译为适用于 ARM Cortex-M  RISC-V 架构的二进制文件

**效果**: 
这种微型模型展示了在非冯·诺依曼架构或神经形态芯片上进行符号计算的潜力虽然在实际工程中直接用 C++ 代码加法更高效但此案例验证了在纯神经网络加速器NPU上运行传统符号逻辑的可行性这意味着未来的边缘设备可以在不改变硬件电路的情况下通过软件更新灵活地获得处理基础逻辑运算的能力增加了系统架构的灵活性

---
## 最佳实践

## 最佳实践指南

### 实践 1:数据表示与编码优化

**说明**Transformer 模型处理数字的能力很大程度上取决于输入数据的表示方式对于 10 位数字的加法直接使用十进制字符串 "1234567890"作为输入是标准做法为了提高模型的收敛速度和准确性应确保数字的每一位都被视为独立的 token或者使用支持数字拆分的 tokenizer此外输出目标应设计为直接生成加法结果字符串避免回归任务将其视为序列到序列Seq2Seq的文本生成任务

**实施步骤**:
1. 准备训练数据格式为 "数字1 + 数字2 = 结果"
2. 确保分词器能够将数字的每一位拆分为单独的 token例如"123" 拆分为 "1", "2", "3")。
3. 如果可能在训练集中加入一定的填充或对齐确保输入长度一致或使用注意力掩码处理变长输入

**注意事项**: 避免使用字节级编码 Byte-Pair Encoding将整个数字合并为一个不可分割的 token这会阻碍模型学习算术规则

---

### 实践 2:引入位置编码增强位置感知

**说明**加法运算对数字的位置个位十位百位等极其敏感标准的 Transformer 位置编码有助于模型理解 token 的顺序但在处理长串数字10 位意味着 20 个以上的输入字符可能需要更强的位置感知能力为了构建最小模型必须确保位置编码信息能够有效传递帮助模型理解进位规则

**实施步骤**:
1. 使用标准的正弦/余弦位置编码或可学习的位置编码
2. 确保位置编码的维度与模型的隐藏层维度相匹配
3. 在实验中可以尝试在输入嵌入层中加入相对位置信息强化模型对数字位权的理解

**注意事项**: 模型层数较浅时位置信息容易在深层丢失因此对于微型模型位置编码的初始化和加入方式尤为关键

---

### 实践 3:架构极简设计与参数缩减

**说明**为了实现最小 Transformer需要激进地削减模型参数同时保留完成任务所需的核心能力算术加法不需要复杂的语言理解能力主要依赖模式匹配和短程记忆进位)。因此可以大幅减少隐藏层维度注意力头数和层数

**实施步骤**:
1. **减少层数**尝试使用 1  2  Transformer 编码器-解码器结构
2. **减少维度**将隐藏层维度d_model降至 64  128通常模型为 512  768)。
3. **减少注意力头**将注意力头数降至 1  2 
4. 去除 Dropout 层或将其比例调至极低因为小模型容易欠拟合需要保留所有信息流

**注意事项**: 极简架构容易导致优化困难需要配合更高的学习率和更长的训练周期来验证模型是否具备学习能力

---

### 实践 4:针对性的数据增强与泛化

**说明**为了使模型真正学会加法而不是记忆训练集”,数据生成策略至关重要模型需要学会处理进位尤其是连续进位的情况训练数据必须覆盖各种边界情况且测试集必须包含超出训练数据数字范围的样本外推性测试)。

**实施步骤**:
1. 生成数百万个随机的 10 位数字对作为训练集
2. 特别增加包含大量 9 的样本对 9999999999 + 1),以强化进位训练
3. 划分验证集时确保验证集中的数字组合未在训练集中出现以验证泛化能力
4. 考虑在训练后期逐步增加数字的位数课程学习),从少位数逐步过渡到 10 位数

**注意事项**: 如果模型仅在训练集数字范围内表现良好但在随机新数字上失败说明模型发生了过拟合需要增加数据多样性或调整模型容量

---

### 实践 5:高效的训练配置与优化器选择

**说明**小模型对超参数非常敏感标准的 Transformer 训练配置 Adam 优化器Warmup通常适用但为了在有限参数下达到收敛需要精细调整学习率和批处理大小

**实施步骤**:
1. 使用 Adam 优化器配合标准的权重衰减
2. 实施学习率预热机制在前 1000 步逐步提高学习率随后进行线性衰减
3. 使用较大的批处理大小以稳定梯度更新弥补模型容量不足带来的方差问题
4. 监控训练集与验证集的 Loss如果验证集 Loss 停止下降但训练集 Loss 继续下降应立即停止训练以防止过拟合

**注意事项**: 对于极小模型标签平滑可能没有必要甚至可能因为引入噪声而损害性能建议尝试不使用标签平滑

---

### 实

---
## 学习要点

- 研究成功训练出了目前最小的 Transformer 模型能够精确计算两个 10 位数的加法证明了深度学习模型具备学习复杂算术逻辑的能力
- 该模型仅使用约 3 万个参数远低于传统大型语言模型展示了在特定任务上通过极小规模架构实现高精度的可能性
- 实验表明 Transformer 具有强大的归纳偏置能够从训练数据中自动推导出加法进位等算法规则而非仅靠记忆训练集
- 这一成果挑战了以往认为神经网络难以完美处理离散符号运算或需要极大规模参数的观点突出了架构优化的重要性
- 该研究为探索极小模型在逻辑推理任务中的极限提供了新思路有助于降低推理成本并提高在边缘设备上的部署效率

---
## 常见问题


### 1: 这里的 "Smallest transformer" 具体是指什么含义?

1: 这里的 "Smallest transformer" 具体是指什么含义

**A**: 在这个语境下"Smallest"最小通常指的是模型的参数量最少或者是计算所需的浮点运算次数最少Transformer 模型通常以参数规模 70 亿1750 亿等著称而这个挑战旨在探索极低容量的模型例如参数量在数千到数万级别是否仍然能够通过学习掌握复杂的逻辑推理任务即两个 10 位数的加法



### 2: 为什么选择“两个 10 位数加法”作为测试基准?

2: 为什么选择两个 10 位数加法作为测试基准

**A**: 两个 10 位数的加法是一个极具挑战性的算法任务首先10 位数字意味着模型需要处理长达 20 个字符的输入序列这对模型的上下文窗口长度和注意力机制提出了要求其次加法涉及进位逻辑模型必须学会如何处理位置依赖关系对于传统的神经网络来说在没有显式编程的情况下学会这种长序列的精确逻辑推理是非常困难的因此它是测试模型泛化能力和算法学习能力的绝佳基准



### 3: 标准的 Transformer 模型通常难以处理精确的数学计算,主要原因是什么?

3: 标准的 Transformer 模型通常难以处理精确的数学计算主要原因是什么

**A**: 标准的 Transformer 模型主要基于概率预测下一个 token它们在处理需要精确符号操作的任务时存在局限性主要原因包括第一**位置编码的局限性**标准的位置编码如正弦/余弦编码在处理非常长的序列时难以精确区分相距较远的数字位置第二**缺乏归纳偏置**Transformer 并没有内置的数字概念或进位规则它必须从海量数据中通过梯度下降硬拟合出这些逻辑规则这比人类学习算术要困难得多



### 4: 要实现这个目标,通常需要对模型架构做哪些调整?

4: 要实现这个目标通常需要对模型架构做哪些调整

**A**: 为了让最小的 Transformer 学会这项任务研究人员通常会采取以下优化措施首先使用**更深的层数**而不是更宽的隐藏层维度因为逻辑推理往往需要更深层的抽象其次改进**位置编码**方式例如使用相对位置编码或 ALiBiAttention with Linear Biases),以帮助模型更好地理解数字的顺序关系最后使用**特殊的 Token** 或增强注意力机制以强化模型对数字边界和进位信息的捕捉能力



### 5: 这个研究对于 AI 领域有什么实际意义?

5: 这个研究对于 AI 领域有什么实际意义

**A**: 这个挑战的核心意义在于探索模型规模与推理能力之间的关系它试图回答一个问题我们是否真的需要千亿级参数的大模型才能进行逻辑推理还是说小模型只要经过正确的训练和架构设计也能掌握复杂的算法规则如果小模型能胜任特定任务这将极大地降低 AI 部署的成本和能耗推动边缘设备上的高效 AI 应用发展



### 6: Hacker News 社区对此话题的主要讨论焦点是什么?

6: Hacker News 社区对此话题的主要讨论焦点是什么

**A**: Hacker News 上的讨论通常集中在技术细节和哲学层面技术层面用户会争论训练数据的泛化性模型是真正学会了加法规则还是仅仅记住了训练集的组合)、不同激活函数 ReLU vs GeLU对数值任务的影响以及 Transformer 相对于传统递归神经网络RNN在长序列记忆上的优劣哲学层面大家会探讨这是否意味着模型真正理解了数学还是仅仅在做复杂的模式匹配



### 7: 目前已知的最小模型规模大概是多少?

7: 目前已知的最小模型规模大概是多少

**A**: 根据相关的研究论文和实验例如 "Transformers Learn Arithmetic" 等相关工作),要在 10 位数加法上达到较高的准确率通常需要极小的模型配置虽然具体的数字取决于层数头数和训练时长但一些实验表明通过精心设计的架构和充分的训练参数量在数万级别的 Transformer 也有可能通过插值学会这种模式但泛化到完全没见过的数字组合外推仍然是一个巨大的挑战

---
## 思考题


### ## 挑战与思考题

### ### 挑战 1: [简单]

### 问题**: 在不引入任何外部权重的情况下,仅使用 Python 的 `torch` 库构建一个最简单的单层 Transformer 模型。要求该模型能够接收两个 1 位数字(0-9)的字符串输入(例如 "3+4"),并输出它们的和(例如 "7")。请确定输入序列长度、词表大小(Vocabulary Size)以及模型的最小隐藏层维度(Embedding Dimension)。

### 提示**:

### 考虑输入和输出字符集的大小(0-9 及 "+" 和 "=")。

---
## 引用

- **原文链接**: [https://github.com/anadim/AdderBoard](https://github.com/anadim/AdderBoard)
- **HN 讨论**: [https://news.ycombinator.com/item?id=47170030](https://news.ycombinator.com/item?id=47170030)

> 文中事实性信息以以上引用为准观点与推断为 AI Stack 的分析

---


---
## 站内链接

- 分类 [大模型](/categories/%E5%A4%A7%E6%A8%A1%E5%9E%8B/) / [论文](/categories/%E8%AE%BA%E6%96%87/)
- 标签 [Transformer](/tags/transformer/) / [算法](/tags/%E7%AE%97%E6%B3%95/) / [算术](/tags/%E7%AE%97%E6%9C%AF/) / [模型规模](/tags/%E6%A8%A1%E5%9E%8B%E8%A7%84%E6%A8%A1/) / [深度学习](/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/) / [AI](/tags/ai/) / [神经网络](/tags/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/) / [研究](/tags/%E7%A0%94%E7%A9%B6/)
- 场景 [AI/ML项目](/scenarios/ai-ml%E9%A1%B9%E7%9B%AE/)

### 相关文章

- [能对齐十位数加法运算的最小Transformer模型](/posts/20260228-hacker_news-smallest-transformer-that-can-add-two-10-digit-num-18/)
- [能对齐十位数加法的最小Transformer模型](/posts/20260228-hacker_news-smallest-transformer-that-can-add-two-10-digit-num-4/)
- [神经网络原理可视化解析](/posts/20260206-hacker_news-understanding-neural-network-visually-3/)
- [神经网络原理可视化解析](/posts/20260206-hacker_news-understanding-neural-network-visually-6/)
- [神经网络原理的可视化解析](/posts/20260207-hacker_news-understanding-neural-network-visually-19/)
*本文由 AI Stack 自动生成包含深度分析与可证伪的判断*