十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

generative-ai-for-beginners 学习路线:TensorFlow 与 PyTorch 的神经网络框架选型及过拟合防治

generative-ai-for-beginners 学习路线:TensorFlow 与 PyTorch 的神经网络框架选型及过拟合防治 generative-ai-for-beginners 学习路线TensorFlow 与 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课程第 15 课RAG 与向量数据库知识库中的基础材料 frameworks.md系统讲解训练神经网络必须的两大能力——张量运算与梯度计算梳理 TensorFlow 与 PyTorch 两大主流框架的低层 API 与高层 API 设计并深入剖析机器学习中最关键的陷阱之一过拟合Overfitting。读完本文你将能够理解计算图与自动微分的工作原理、理解 Keras 与 PyTorch Lightning 等高阶封装的价值、识别并防治模型过拟合并掌握偏差-方差权衡Bias-Variance Tradeoff这一通用分析框架。为什么需要深度学习框架要高效地训练神经网络本质上需要完成两件事对张量tensor进行运算例如乘法、加法以及 sigmoid、softmax 等函数的计算计算所有表达式的梯度以便执行梯度下降gradient descent优化。numpy库可以很好地完成第一部分张量运算但它没有梯度计算机制。在本课程的上一节 own_framework.md 中我们亲手构建了一个微型神经网络框架其核心局限是必须在backward方法里手动编写所有导数函数来完成反向传播backpropagation。这种做法的痛点非常明显——每引入一个新算子就要手工推导并实现其导数。理想情况下框架应当能够对任意可定义的表达式自动计算梯度。这正是现代深度学习框架要解决的核心问题。另一个关键需求是在专用计算设备上执行计算。深度神经网络的训练需要海量计算GPU图形处理器或 TPU张量处理器这类专用设备可以大规模并行执行矩阵运算。✅ 术语并行化parallelize指将计算分布到多个设备上执行。两大主流框架TensorFlow 与 PyTorch目前最流行的两个神经网络框架是TensorFlow与PyTorch。两者都提供了低层 API在 CPU 和 GPU 上操作张量高层 API分别是Keras构建于 TensorFlow 之上与PyTorch Lightning构建于 PyTorch 之上。API 层级TensorFlowPyTorch低层 APITensorFlow 核心PyTorch高层 APIKerasPyTorch Lightning注PyTorch 的高层封装生态中PyTorch Lightning 是最具代表性的项目之一原文档的表格同时以 Pytorch 作为高层 API 的名称实际使用中常以 Lightning 等封装库承担序列化层式的高层抽象。低层 API计算图与自动微分两个框架的低层 API都允许构建所谓的计算图computational graph。这张图描述了给定输入参数如何计算出输出通常是损失函数并且可以在 GPU 可用时被推送至 GPU 上执行。同时框架提供了对计算图进行微分并计算梯度的函数梯度随后被用于优化模型参数。这与我们在 own_framework.md 中手动实现的反向传播形成鲜明对比手写框架需要在backward方法中为每个算子手工编程导数工作量随网络复杂度爆炸式增长现代框架借助计算图与自动微分任何可定义表达式的梯度都由框架自动求出这与链式求导法则chain rule的逐层反向传播思想完全一致——从损失函数出发沿着计算图向后依次求出各层参数的偏导。多层感知机MLP的梯度计算就是链式法则的典型应用。例如对两层网络z₁w₁xb₁z₂w₂α(z₁)b₂fσ(z₂)其中 α 是非线性激活函数、σ 是 softmax∂ℒ/∂w₂ (∂ℒ/∂σ)(∂σ/∂z₂)(∂z₂/∂w₂)∂ℒ/∂w₁ (∂ℒ/∂σ)(∂σ/∂z₂)(∂z₂/∂α)(∂α/∂z₁)(∂z₁/∂w₁)注意所有表达式最左侧的因子是相同的因此可以从损失函数出发高效地反向逐层计算导数——这正是反向传播算法backprop名称的由来。与感知机训练的一脉相承在更早的 perceptron.md 中可以看到梯度下降思想的雏形。感知机作为二分类模型其训练就是寻找使误差 E(w) 最小的权重向量更新规则为w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ - η∇E(w)其中η 是学习率learning rate∇E(w) 是误差函数的梯度。从感知机的单层线性模型到多层网络的自动微分再到 TensorFlow/PyTorch 的计算图核心优化思想一脉相承只是梯度计算的自动化程度与并行能力不断提升。高层 API把网络看作层的序列高层 API将神经网络视为层的序列sequence of layers这让绝大多数神经网络的构建变得简单得多。训练模型通常只需两步准备数据然后调用fit函数。高层 API 的核心价值快速搭建无需关注大量底层细节即可构造典型网络标准化训练流程数据准备 fit调用即可完成训练。与此同时低层 API 提供对训练过程更精细的控制因此在新网络架构的研究工作中被大量使用。低层与高层 API 的协同使用一个重要的事实是两种 API 可以混合使用。例如用低层 API 开发自己的网络层架构然后嵌入到由高层 API 构建并训练的大网络中使用或者用高层 API 以层序列形式定义网络再编写自己的低层训练循环training loop执行优化。由于两种 API 共享同一套底层基础概念它们被设计为可以很好地协同工作。✅ 从本仓库的结构看这种低层打底、高层封装的设计在生态中普遍存在低层 API 负责计算图与自动微分这一不可变的地基高层 API 则在其上提供约定俗成的层封装与训练流程。学习路径与框架选择在本课程AI for Beginners中PyTorch 与 TensorFlow 两条路线的内容基本对等你可以选择偏好的框架只学习对应路线的 notebook若不确定如何选择可以查阅互联网上关于PyTorch vs. TensorFlow的讨论或两条路线都过一遍以获得更全面的理解。课程的学习策略是在可能的情况下优先使用高层 API 以求简洁但同时强调从底层理解神经网络的工作原理因此会先从低层 API 和张量操作入手。如果你希望快速上手、不愿在细节上花太多时间可以跳过低层 API 部分直接进入高层 API 的 notebook。⚠️ 说明原文档中提到的配套 PyTorch/TensorFlow 练习 notebook 不在本仓库目录内本仓库第 15 课的核心是可运行的 notebook-rag-vector-databases.ipynb因此这些框架练习需要按原课程指引在对应教学环境中完成。这些材料在本仓库中的角色值得注意的是frameworks.md 与 own_framework.md、perceptron.md 一起在本仓库中被用作RAG检索增强生成应用的知识库数据源。在 notebook-rag-vector-databases.ipynb 中可以看到data_paths [data/frameworks.md?WT.mc_idacademic-105485-koreyst, data/own_framework.md?WT.mc_idacademic-105485-koreyst, data/perceptron.md?WT.mc_idacademic-105485-koreyst]即这三篇神经网络教学文档被分块chunking、向量化后存入向量数据库作为第 15 课 README 中用我们自己的数据增强 LLM场景的落地数据。这意味着理解本文的框架与过拟合概念不仅能夯实神经网络基础还能直接观察到它如何作为真实文本被嵌入并检索用于增强 LLM 回答——这正是本课程生成式 AI 入门的闭环实践。过拟合机器学习中必须理解的概念过拟合是机器学习中极其重要的概念务必准确理解。考虑用模型近似 5 个数据点图中以x标记的问题线性模型2 个参数非线性模型7 个参数训练误差 5.3训练误差 0验证误差 5.1验证误差 20左侧一条恰当的直线近似。由于参数数量适中模型很好地把握了点分布的规律右侧模型过于强大。只有 5 个点却有 7 个参数模型可以调整到精确穿过所有点使训练误差降为 0。但这样一来模型无法理解数据背后的正确规律导致验证误差非常高20。因此在模型复杂度参数数量与训练样本数量之间取得恰当平衡至关重要。过拟合产生的原因训练数据不足模型过于强大参数过多输入数据中噪声过多。如何检测过拟合从上面的对比可以看出过拟合可通过训练误差极低而验证误差高来识别。通常训练过程中训练误差与验证误差会一起下降但在某个时间点之后验证误差可能停止下降并开始回升。这是过拟合的信号提示我们应该在这个时刻停止训练或者至少保存一份模型快照。如何防止过拟合一旦发现过拟合可以尝试以下手段增加训练数据量降低模型复杂度使用正则化regularization技术例如 Dropout丢弃法本课程后续会介绍。✅ 从训练机制上解释训练中偏差误差通常下降模型逐步学会拟合数据而方差误差上升在验证误差开始回升前停止训练就是要在二者之间找到平衡点。过拟合与偏差-方差权衡过拟合实际上是统计学中一个更一般的问题——偏差-方差权衡Bias-Variance Tradeoff——的典型案例。分析模型误差的来源可以看到两类误差偏差误差Bias errors算法未能正确捕获训练数据中的关系所致。它源于模型不够强大欠拟合/underfitting方差误差Variance errors模型去近似输入数据中的噪声、而非有意义的关联所致过拟合/overfitting。训练过程中偏差误差下降而方差误差上升。要防止过拟合就必须适时停止训练——既可以在检测到过拟合时手动停止也可以通过引入正则化自动实现。结论本课的核心收获有两点框架选型与 API 理解TensorFlow 与 PyTorch 是两大主流 AI 框架均同时提供低层 API计算图、自动微分、GPU 并行与高层 APIKeras、PyTorch Lightning 的层序列化抽象与fit训练且二者可以协同使用过拟合及其治理理解过拟合的产生原因数据不足、模型过强、噪声过多、检测方法训练误差低而验证误差高、防治手段增数据、降复杂度、正则化以及其在偏差-方差权衡中的定位。练习与任务在配套 notebook 中底部有任务tasks练习。请跟随 notebook 逐步完成。掌握框架之后可以回到本课程主线继续深入学习后续内容。复习与自测建议自行调研以下主题TensorFlowPyTorchOverfitting过拟合并思考以下问题TensorFlow 与 PyTorch 的差异是什么过拟合与欠拟合underfitting的区别是什么作业使用 PyTorch 或 TensorFlow分别用单层与多层全连接网络fully-connected networks解决两个分类问题以亲身体验框架 API 的用法并观察模型复杂度对训练/验证误差的影响——这正是本文所讲复杂度与样本量平衡的直观验证。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表