深度学习核心概念
·
深度学习核心概念
我们用 “教 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… |
更多推荐
所有评论(0)