Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Grokking

顿悟现象(Grokking)指延迟泛化:网络早期就能拟合训练集,但经过许多训练步骤后,验证准确率才会从随机猜测水平跃升至接近完美。

Grokking 是一种延迟泛化现象:神经网络早早就在训练数据上达到完美准确率,却在验证数据上长时间停留在随机猜测水平;之后,即使模型看起来已经过拟合很久,仍会突然实现泛化。OpenAI 的 Power 等人(2022)在小型 Transformer上训练模运算等算法任务时发现了这一现象,并以 grokking 命名:训练准确率已经饱和很久之后,验证准确率才从随机猜测水平升至完美。这个词来自 Robert Heinlein 的小说《异乡异客》,其中 grok 的意思是彻底理解某事。

Grokking 的发生过程#

模加法是经典的 grokking 任务:网络接收数对 (a, b),必须输出 (a + b) mod p,而训练时只能使用所有数对中的一部分。下面的运行示例使用 PyTorch 的 AdamW 优化器,在 p = 97 的 9,409 对数中取 30% 来训练一个小型多层感知机;在 CPU 上不到一分钟即可完成:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
p = 97  # task: predict (a + b) mod 97 from one-hot encodings of a and b
a, b = torch.cartesian_prod(torch.arange(p), torch.arange(p)).T
x, y = torch.cat([F.one_hot(a, p), F.one_hot(b, p)], dim=1).float(), (a + b) % p
idx = torch.randperm(p * p)
train, val = idx[: p * p * 3 // 10], idx[p * p * 3 // 10 :]  # train on 30% of all pairs

model = torch.nn.Sequential(torch.nn.Linear(2 * p, 256), torch.nn.ReLU(), torch.nn.Linear(256, p))
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1.0)  # strong weight decay
for step in range(1, 20001):
    loss = F.cross_entropy(model(x[train]), y[train])
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if step % 4000 == 0:
        train_acc, val_acc = [(model(x[i]).argmax(1) == y[i]).float().mean().item() for i in (train, val)]
        print(f"step {step:5d}: train accuracy {train_acc:.2f}, validation accuracy {val_acc:.2f}")

训练到第 4,000 步时,准确率已达到 1.00,而验证准确率为 0.00。之后,验证准确率在第 8,000 步升至 0.16,第 12,000 步升至 0.54,第 16,000 步升至 0.84,第 20,000 步升至 0.97。使用 weight_decay=0.0 时,同一次运行的验证准确率在全部 20,000 步中都保持在 0.00。

Nanda 等人(2023)通过逆向工程分析一个在模加法任务上训练的单层 Transformer,解释了这一停滞期。网络学会使用离散傅里叶特征和三角恒等式,将加法转换为绕圆旋转的操作。训练分为三个连续阶段:记忆、回路形成和清理。泛化回路逐渐增强,但验证准确率保持不变;当权重衰减移除了仍主导输出的记忆解后,性能才会跃升。

Grokking 的成因#

  • 正则化:在最初的实验中,权重衰减是最有效的干预方法;如果没有权重衰减,上面的运行示例完全无法实现泛化。
  • 数据集规模:训练数据占比越小,模型在实现泛化之前需要进行的优化就越多;低于某个阈值后,网络在实际可行的预算内永远无法实现泛化。
  • 权重范数:Omnigrok将 grokking 与权重规模联系起来,因为泛化解的权重范数小于记忆解。研究者从较大的初始权重出发,在图像、语言和分子任务上诱发了 grokking,并通过约束权重范数,在算法任务中消除了这一现象。
  • 数值稳定性:Prieto 等人(2025)发现,如果不进行正则化,交叉熵训练会不断放大 logits,直到 softmax 中的浮点误差阻止学习;他们将此称为 Softmax Collapse。他们提出的 StableMax 激活函数和 ⊥Grad 优化器无需权重衰减即可产生 grokking。
  • 过拟合:训练集和验证集表现之间的差距持续存在或不断扩大。而在 grokking 中,随着训练继续进行,这种差距会自行缩小。
  • 双重下降:随着模型规模或训练时长增加,测试误差先下降、后上升、再下降。按轮次出现的双重下降是另一种延迟改进形式:测试误差在训练过程中先上升一段时间,然后再次下降。
  • 机制可解释性:研究训练后网络内部算法的领域。模运算任务上的 grokking 成为该领域的主要案例研究之一,因为研究者可以完整地读取模型学到的算法。

实践中的 Grokking#

在由单一精确规则决定的小型算法数据集上,grokking 最为明显。它对实验设计仍然很重要,因为早停会在验证指标停止改善时结束运行,这可能导致 grokking 运行在停滞期中途被截断。Ultralytics YOLO 训练在验证适应度连续 patience 个轮次没有提升时停止,默认值为 100;而在 patience=0 时则会运行每一个轮次。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来