深度学习核心概念

我们用 “教 AI 做宫保鸡丁” 来比喻整个过程

1.特征(Features) → 食材清单

  • 比如:鸡肉、花生、干辣椒、酱油……
  • 在 Cora 数据集中,每个节点有 1433 个特征 → 相当于每篇论文有 1433 个关键词(是否包含某个词)
  • NUM_FEATURES = 1433 就是“食材种类数”

2.标签(Labels) → 菜名

  • 每篇论文属于 7 个类别之一(如“神经网络”、“数据库”……)
  • NUM_CLASSES = 7 就是“有多少种菜名可选”

3.模型(Model) → 菜谱 + 厨师大脑

  • GCN 就是一本“图神经网络菜谱”
  • 它告诉厨师:“看到邻居用了辣椒,你也该放点!”(利用图结构)

4.前向传播(Forward Pass) → 按菜谱做菜

  • 输入食材(特征)→ 经过几道工序(GCN 层)→ 输出一道菜(预测类别)
  • 比如:鸡肉 + 辣椒 → 宫保鸡丁(预测为“川菜”)

5.损失(Loss) → 尝味道打分

  • 真实菜名是“宫保鸡丁”,但 AI 做出来像“鱼香肉丝” → 打低分(高损失)
  • 损失函数(如交叉熵)就是“味觉评分系统”
  • F.nll_loss = “你猜错的离谱程度”

6.反向传播(Backward Pass) → 复盘改进

  • 厨师尝到菜太咸 → 回想:“是不是酱油放多了?”
  • 然后调整下一次的酱油量(更新模型参数)
  • 这个“从结果倒推原因”的过程,就是反向传播!

7.优化器(Optimizer) → 厨师的学习策略

  • Adam 就像一个聪明的厨师:
    如果连续几次都太咸,就大幅减少酱油
    如果偶尔咸,就微调
  • LEARNING_RATE = 0.01 = “每次调整的步子大小”
    太大 → 一步跨过最佳点(震荡不收敛)
    太小 → 调一万次还没到位(训练慢)

8.过拟合(Overfitting) → 死记硬背菜谱

  • 厨师把训练时的 100 道菜背得滚瓜烂熟
  • 但遇到新客人点“微辣版宫保鸡丁”就懵了 ❌
  • 表现:训练准确率 99%,测试准确率 70%
  • 就像你煮鸡蛋:
    煮 5 分钟:溏心蛋(刚好)✅
    煮 10 分钟:全熟蛋(还能吃)
    煮 30 分钟:蛋黄发绿、蛋白变硬(过头了!)❌
  • 模型训练也一样:
    训练太少 → 模型“没学会”(欠拟合)
    训练刚好 → 模型“学得最好”(泛化强)
    训练太多 → 模型“死记硬背训练数据”,在新数据上表现差(过拟合)

9.验证集(Validation Set) → 试吃员

  • 不参与训练,但用来实时反馈:“这道菜好吃吗?”
  • 决定是否继续训练 or 早停
  • 不能当测试集用!(否则就作弊了)

10.测试集(Test Set) → 最终考试

  • 训练完才拿出来
  • 模拟“真实世界的新数据”
  • 只测一次! 测完不准再改模型(否则成绩无效)

总结

深度学习术语宫保鸡丁比喻你的代码中的体现
特征 (Features)食材(鸡肉、辣椒…)data.x (1433维)
标签 (Labels)菜名(宫保鸡丁)data.y (0~6)
模型 (Model)菜谱 + 厨师GCNModel
前向传播按菜谱做菜out = model(data)
损失 (Loss)味道打分F.nll_loss(…)
反向传播复盘改进loss.backward()
优化器学习策略torch.optim.Adam
学习率调整步子大小lr=0.01
过拟合死记硬背菜谱训练准、测试差
验证集试吃员data.val_mask
测试集最终考试data.test_mask
早停味道最好时停火if val_acc > best…

更多推荐