二元运算表任务表面上是离散符号预测,实质上在问模型能不能学到背后的代数结构。
如果模型只记忆训练样本,它在未见过的组合上会失败;如果模型学到了结构,它就能在验证集上泛化。
MLfinal
MLfinal 用二元运算表构造监督学习任务,观察小型 Transformer 如何从符号样本里学到隐藏代数结构。这个项目的重点不是单纯分类准确率,而是训练过程里“先记忆、后泛化”的现象。
项目概览
MLfinal 用二元运算表构造监督学习任务,让模型从形如 a ∘ b = c 的符号样本中学习隐藏运算规则。实验对象包括模加法、模减法、模除法、多项式型模运算,以及对称群上的乘法与共轭相关运算。
这个项目最有意思的地方在于:模型并不只是背答案。随着训练步数增加,它可能先表现为过拟合,随后验证准确率突然上升,呈现类似 grokking 的泛化现象。
- 样本形式:
a ∘ b = c - 典型运算:模加法、模减法、模除法、多项式型模运算、
S_5上的群运算。 - 训练集比例:可以调整为 50%、30%、25% 等不同设置。
- 评估指标:输出 token 的准确率,以及训练/验证曲线随时间的变化。
| 项目 | 设置 |
|---|---|
| 模型 | 解码器式 Transformer |
| 层数 | 2 层 |
| 隐藏宽度 | 128 |
| 注意力头数 | 4 |
| 优化器 | AdamW / Adam |
| 关注现象 | 过拟合后的延迟泛化 |
- 哪些运算更容易让模型学出结构?
- 训练集比例下降时,grokking 的出现时间如何变化?
- 权重衰减、噪声、dropout 对泛化时间有没有稳定影响?
- 输出嵌入的可视化是否能对应到数学对象的结构?
