generative-ai-for-beginners RAG 课程语料深读:神经网络框架(TensorFlow vs PyTorch)与过拟合的完整解析
2026/9/8 22:44:09 网站建设 项目流程

generative-ai-for-beginners RAG 课程语料深读:神经网络框架(TensorFlow vs PyTorch)与过拟合的完整解析

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

本篇以 generative-ai-for-beginners 仓库中爱沙尼亚语(et)版第 15 课 RAG 与向量数据库的语料文件frameworks.md为核心,完整解读其两大技术主题:神经网络框架的低层/高层 API 对比,以及过拟合与偏差-方差权衡;并结合该文件在仓库配套 Notebook 中的真实用途,说明它如何作为 RAG 检索语料被切分、嵌入和查询。读完后你将掌握框架 API 选型的判断依据、过拟合的识别与缓解手段,以及该文档在 RAG 演示流水线中的端到端角色。

文档在仓库中的定位与角色

frameworks.md位于爱沙尼亚语翻译目录下的第 15 课数据语料中:

  • 翻译版(本文主体):translations/et/15-rag-and-vector-databases/data/frameworks.md
  • 英文原版:15-rag-and-vector-databases/data/frameworks.md
  • 同目录语料:own_framework.md(多层感知机与自研框架)、perceptron.md(感知器)

从源码结构看,这三个文件并非孤立的讲义,而是第 15 课 RAG 演示的核心知识库。在 notebook-rag-vector-databases.ipynb 中,data/frameworks.mddata/own_framework.mddata/perceptron.md被依次读取,构建出含pathtext两列的 DataFrame;随后按max_length=400, min_length=300的字符阈值调用split_text切分成 chunk,用嵌入模型(环境变量AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT指定部署)转成向量,最终通过NearestNeighbors(n_neighbors=5, algorithm='ball_tree')建立近邻索引,实现"用户提问 → 向量检索 → 将命中的 chunk 注入对话上下文"的 RAG 闭环。因此,本文所解析的每一段技术内容,都是该 RAG 应用被检索、被问答的最小语义单元之一。

高效训练神经网络的两项前提

文档开篇指出,要高效训练神经网络必须同时解决两件事:

  1. 对张量(tensor)做运算:乘法、加法,以及计算 sigmoid、softmax 等函数;
  2. 计算所有表达式的梯度,以便执行梯度下降优化。

numpy可以完成第一点,但梯度计算需要专门机制。文档回顾了一个关键痛点:在先前章节自研的迷你框架中,所有导数函数都必须手工编写进执行反向传播的backward方法。理想中的框架应当能对任意可定义表达式自动求梯度——这正是自动微分(autograd)能力成为现代框架标配的动机。

第三项隐含前提是在 GPU 或其他专用计算单元(如 TPU)上执行计算。深度神经网络训练需要海量计算,而这些计算能在 GPU 上并行(parallelize,即把计算分布到多个设备)执行至关重要。

两大主流框架:低层 API 与高层 API 的对比

文档给出当前最流行的两个神经网络框架及其 API 分层:

层级TensorFlow 系PyTorch 系
低层 APITensorFlowPyTorch
高层 APIKerasPyTorch Lightning

两个框架的低层 API 都支持在 CPU 和 GPU 上操作张量;高层 API 则构建在低层 API 之上。二者的定位差异可概括为:

低层 API 构建"计算图"(computational graph)。该图定义了给定输入参数下如何计算输出(通常是损失函数),并可整体推送到 GPU 上执行。框架提供对计算图求导的函数,算出的梯度随即用于优化模型参数。这种"先定义完整计算、再求导执行"的模式,给训练过程提供了细粒度控制。

高层 API 把神经网络看作"层的序列"(sequence of layers),使绝大多数网络的结构搭建变得简单。训练通常只需两步:准备数据,然后调用fit函数完成其余工作。取舍很清晰——高层 API 让你不必纠结细节就能快速搭建典型网络;低层 API 则提供更强的控制力,因此在探索新型网络架构的研究场景中被大量使用。

两者可以组合使用,文档特别强调这一点:

  • 用低层 API 开发自己的网络层架构,再把它嵌入由高层 API 构建和训练的大网络中;
  • 或用高层 API 以层序列方式定义网络,再用自己的低层训练循环来执行优化。

两套 API 共享相同的基础概念,设计上就是配合工作的。

关于学习路径,文档给出的建议是:课程多数内容同时提供 PyTorch 和 TensorFlow 两种 Notebook,可任选一个框架学习;若不确定选型,可先阅读社区中"PyTorch vs TensorFlow"的讨论,也可以两个都看看加深理解。课程本身优先使用高层 API 以保证简洁,但仍会从低层 API 和张量操作讲起——如果想快速上手、不愿在这些细节上花时间,可以直接跳到高层 API 的 Notebook。

对应到同目录语料,own_framework.md 展示了"不用现成框架"的另一条路径:从梯度下降的更新式w^(i+1) = w^(i) − η·∂L/∂w出发,推导多层感知机在链式法则下的反向传播梯度(∂L/∂w₂ = (∂L/∂σ)(∂σ/∂z₂)(∂z₂/∂w₂)等),解释了"为什么低层 API 值得理解"。

过拟合:机器学习中最不能搞错的概念

文档的第二大主题过拟合(overfitting)以一个对照实验引入:对 5 个数据点(图中以x表示)做近似拟合——

线性模型(2 个参数)非线性模型(7 个参数)
训练误差 = 5.3训练误差 = 0
验证误差 = 5.1验证误差 = 20

左侧模型参数数量与数据规模相称,学到了点分布的"本质规律";右侧模型过强——仅 5 个点却有 7 个参数,它可以调整到穿过所有点使训练误差归零,但这恰恰阻止了模型理解数据背后的真实模式,导致验证误差飙高。文档的核心结论是:模型丰富度(参数量)与训练样本量之间的平衡至关重要

过拟合为什么会发生

三个成因:训练数据量不足;模型过于强大;输入数据噪声过大。

如何检测过拟合

判据是"训练误差极低 + 验证误差很高"。典型训练曲线表现为:训练误差和验证误差先同步下降,随后验证误差停止下降转为上升——这个拐点就是过拟合信号,提示应在此处停止训练(至少保存一个模型快照)。

如何预防过拟合

发现过拟合时可采取三招:增加训练数据量;降低模型复杂度;使用正则化技术(如后文会讲的 Dropout)。

过拟合与偏差-方差权衡(Bias-Variance Tradeoff)

文档进一步把过拟合归入统计学中更一般的问题。模型的误差来源有两类:

  • 偏差误差(bias errors):算法无法正确捕捉训练数据中的真实关系所致,往往源于模型不够强,即欠拟合(underfitting)
  • 方差误差(variance errors):模型拟合了输入数据的噪声而非有意义的关系所致,即过拟合

训练过程中偏差误差持续下降(模型学习近似数据),方差误差持续上升。因此必须适时停止训练——要么人工发现过拟合后手动停止,要么通过引入正则化自动约束——以防过拟合。

练习、挑战与自研究问题

文档保留了完整的课程配套要素:

  • 练习:在配套 Notebook(TensorFlow+Keras / PyTorch,及高层的 Keras / PyTorch Lightning)中继续框架学习;
  • 挑战:完成各 Notebook 末尾的"tasks"任务;
  • 自研究:围绕 TensorFlow、PyTorch、过拟合三个主题做调研,并回答两个自测问题——TensorFlow 与 PyTorch 的区别?过拟合与欠拟合的区别?
  • 作业:用 PyTorch 或 TensorFlow 的单层与多层全连接网络,分别解决两个分类问题。

关于爱沙尼亚语版本的说明

需要指出的是,translations/et/15-rag-and-vector-databases/data/frameworks.md 末尾附有翻译免责说明:该文档由 AI 翻译服务 Co-op Translator 生成,可能含自动翻译错误或偏差,英文原版应视为权威来源。因此涉及技术细节的严谨引用时,建议以 15-rag-and-vector-databases/data/frameworks.md 为准,et 版可视为同一内容在 RAG 多语言语料场景下的等价副本。

小结与延伸阅读

这份语料文件浓缩了"框架为什么存在(自动梯度 + 并行计算)→ 如何分层设计(计算图 vs 层序列)→ 训练时最容易犯什么错(过拟合与偏差-方差权衡)"的完整认知链条,并在仓库中承担 RAG 知识检索的实际职能:它被 notebook-rag-vector-databases.ipynb 切分、嵌入、索引,成为第 15 课"用自有笔记增强 LLM"场景(详见 translations/et/15-rag-and-vector-databases/README.md 与英文版 15-rag-and-vector-databases/README.md)中可被问答的真实数据。想动手验证时,可直接运行该 Notebook(需配置AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT等环境变量),观察"what is a perceptron?"这类问题如何命中data/perceptron.md的对应 chunk——这正是本文语料在向量检索中的真实运行方式。

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询