ARTICLE DETAIL

资讯详情

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

多层感知机(MLP)与反向传播:generative-ai-for-beginners 课程中的机器学习形式化、梯度下降与反向传播原理

多层感知机(MLP)与反向传播:generative-ai-for-beginners 课程中的机器学习形式化、梯度下降与反向传播原理 多层感知机MLP与反向传播generative-ai-for-beginners 课程中的机器学习形式化、梯度下降与反向传播原理【免费下载链接】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 仓库中的神经网络专题文档data/own_framework.md阿拉伯语译文 与其内容一致展开。读完后你将掌握三个核心能力把分类/回归问题形式化为“可调参数 损失函数”的优化问题、用梯度下降与随机梯度下降SGD训练神经网络、以及理解多层感知机Multi-Layered Perceptron, MLP为何能分类线性不可分数据——即反向传播的链式求导原理。文档在课程中的位置own_framework.md是第 15 课 Retrieval Augmented Generation (RAG) and Vector Databases 配套知识库文档之一。该课程为了演示 RAG把三篇神经网络教学文档作为“私有数据”注入知识库perceptron.md感知机Perceptron二分类线性模型上一节own_framework.md本文档多层感知机与反向传播本节frameworks.md现有主流框架TensorFlow / PyTorch / Keras 等的对比下一节。在配套的 notebook-rag-vector-databases.ipynb 中data/own_framework.md与另外两篇文档一起被读取、分块chunking、向量化embedding并写入本地索引与 Azure AI Search 供语义检索。也就是说本文档既是“教学内容”也是本课程 RAG 演示的“语料”——关于它如何被分块和检索的实操细节见本文最后一节“仓库中的落地用法”。从单层感知机出发为什么要扩展到 MLP在上一节perceptron.md中课程介绍了最简单的神经网络模型——单层感知机。它是一个线性二分类模型给定输入向量 x输出 y(x) f(wᵀx)其中 f 是阶跃激活函数w 是需要通过训练求得的权重向量。单层感知机只能处理线性可分的分类问题。本文档own_framework.md将这一模型扩展为更灵活的框架允许我们在二分类之外进行多类别分类multi-class classification在分类之外解决回归问题regression分离线性不可分的类别。同时文档的目标是用 Python 开发一个自己的模块化框架own modular framework能够构建不同的神经网络架构——这解释了文件名 “own framework” 的由来。机器学习问题的形式化文档首先把机器学习问题做严格的形式化表述假设有训练数据集X与标签Y需要构建一个模型f使其预测尽可能准确。预测质量由损失函数Loss functionℒ度量。文档给出的常用损失函数分为两类问题类型常用损失函数数学表达回归预测一个数值绝对误差absolute error∑ᵢ|f(x⁽ⁱ⁾) − y⁽ⁱ⁾|回归平方误差squared error∑ᵢ(f(x⁽ⁱ⁾) − y⁽ⁱ⁾)²分类0-1 损失本质上等价于模型的准确率accuracy分类逻辑损失logistic loss对数形式的连续可微损失对于单层感知机模型函数f被定义为线性函数f(x) wx b其中w是权重矩阵x是输入特征向量b是偏置向量。而对于不同的神经网络架构f可以取更复杂的形态。softmax把网络输出变成类别概率文档特别指出分类场景下我们往往希望网络的输出是各类别对应的概率。为了把任意实数向量转换为概率即对输出做归一化通常引入softmax 函数 σ于是模型变为f(x) σ(wx b)softmax 将每个类别的“原始得分logits”归一化为和为 1 的非负概率这正是多分类任务的标准输出层。训练目标在上述f的定义中w和b合称为参数θ ⟨w,b⟩。给定数据集 ⟨X,Y⟩我们可以把整个数据集上的总误差计算为参数 θ 的函数。由此得出全文的核心结论✅神经网络训练的目标就是通过不断调整参数 θ 来最小化误差。这一句话把“神经网络训练”归结为一个纯粹的数值优化问题——后续的梯度下降与反向传播都是为了解决这个问题。梯度下降优化Gradient Descent文档介绍了函数优化的经典方法——梯度下降。核心思想是计算损失函数关于参数的导数多维情况下称为梯度然后沿梯度反方向调整参数使误差下降。形式化表述如下用随机值初始化参数 w⁽⁰⁾、b⁽⁰⁾反复执行以下更新步骤多次w⁽ⁱ⁺¹⁾ w⁽ⁱ⁾ − η · ∂ℒ/∂w b⁽ⁱ⁺¹⁾ b⁽ⁱ⁾ − η · ∂ℒ/∂b其中ηeta是学习率learning rate控制每一步参数更新的幅度∂ℒ/∂w、∂ℒ/∂b 是损失函数对相应参数的偏导数。从批量到随机Minibatch 与 SGD文档进一步区分了理想与现实理论上每一步优化都应考虑整个数据集因为损失被定义为对所有训练样本求和实际中我们每次只取数据集的一小部分——称为minibatch小批量——基于这个数据子集计算梯度。由于每次被选中的子集都是随机的这种方法被称为随机梯度下降stochastic gradient descent, SGD。这解释了现代深度学习训练循环的典型形态循环遍历多个 epoch每个 epoch 内把数据切成若干随机 minibatch逐批计算梯度并更新参数。SGD 的随机性反而带来了计算效率提升和一定程度的正则化效果可结合 frameworks.md 中关于计算图与 GPU 并行的讨论理解其工程意义。多层感知机MLP前向传播结构单层网络的表达能力有限——它只能分类线性可分的类别。要构建更丰富的模型就把网络的若干层串联起来。文档给出的两层 MLP 前向传播公式为z₁ w₁x b₁ z₂ w₂α(z₁) b₂ f σ(z₂)各符号含义符号含义α非线性激活函数non-linear activation function这是打破线性叠加、获得非线性表达力的关键σsoftmax 函数θ ⟨w₁, b₁, w₂, b₂⟩整个网络的参数集合每层各自持有一组权重与偏置直观理解输入 x 先经第一层线性变换得到 z₁α 引入非线性“弯折”第二层再做线性变换得到 z₂最后 softmax 输出类别概率。只要 α 是非线性的多层叠加后f就不再是输入的线性函数理论上可以逼近复杂的非线性决策边界——这就是 MLP 能处理线性不可分类别的数学依据。反向传播Backpropagation链式法则如何工作有了多层结构后梯度下降算法本身不变但梯度怎么算变得更复杂。文档利用**链式求导法则chain differentiation rule**给出各层权重的导数∂ℒ/∂w₂ (∂ℒ/∂σ)(∂σ/∂z₂)(∂z₂/∂w₂) ∂ℒ/∂w₁ (∂ℒ/∂σ)(∂σ/∂z₂)(∂z₂/∂α)(∂α/∂z₁)(∂z₁/∂w₁)✅ 链式求导法则用于计算损失函数关于各参数的导数。文档随后点出了反向传播命名的本质原因注意上面所有表达式最左侧的部分都是相同的即 ∂ℒ/∂σ 这一项。因此我们可以从损失函数出发沿着计算图“由后往前”逐层高效地计算导数避免重复计算公共子表达式。正是这种“从损失出发、沿计算图反向逐层传递”的求导方式得名backpropagation反向传播或简称 backprop。可以这样理解其工程价值若逐参数独立求导公共因子会被反复计算而反向传播把中间结果如 ∂ℒ/∂σ、∂σ/∂z₂复用给更早的层使得训练成本与参数量近似线性相关而非指数膨胀。文档原文在此处留有 “TODO: image citation” 占位即仓库中未附带该示意图并声明反向传播将在配套 notebook 中更详细地展开。课程实战任务Challenge 与 Assignment文档结尾给出了三层递进的实践安排完整继承如下Challenge挑战在配套 notebook 中自己动手实现一个用于构建和训练多层感知机的框架——从源码层面看清现代神经网络是如何运转的。课程原文指向 “OwnFramework notebook”在本仓库的当前形态中该课程第 15 课配套的 notebook 是 notebook-rag-vector-databases.ipynb它把本文档作为 RAG 知识库语料展示了“文本 → 分块 → embedding → 检索 → 增强生成”的完整链路适用前提需配置AZURE_OPENAI_ENDPOINT、AZURE_OPENAI_API_KEY、AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT、AZURE_OPENAI_DEPLOYMENT等环境变量notebook 中通过os.getenv读取。Assignment作业使用本课自己构建的框架完成MNIST 手写数字分类——这正是“多类别分类 线性不可分”两个能力的综合检验10 个数字类别单个像素值无法线性分离。Review Self Study复习与自研文档明确建议对反向传播做更深入的学习——它是 AI 与机器学习中最通用的算法之一。仓库中的落地用法本文档如何成为 RAG 语料这一节把文档内容与仓库源码串联起来说明own_framework.md在本仓库中的真实用途——它是 RAG 演示的被检索对象。在 notebook-rag-vector-databases.ipynb 中可以确认以下处理链路加载语料notebook 将data/frameworks.md、data/own_framework.md、data/perceptron.md三个文件读入 pandas DataFrame每行记录{path, text}分块chunking对全文调用split_text(x, 400, 300)——即把每篇文档按词切分为长度介于 300 与 400 字符之间的文本块再用explode(chunks)把块展开为独立行。这正是 README 所述“因 LLM 存在输入 token 上限需把长文档拆成 chunk 并附带上下文”策略的具体实现向量化分块文本经 Azure OpenAI 的 embedding 部署AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT转换为向量检索与重排用sklearn.neighbors.NearestNeighborsn_neighbors5, algorithmball_tree在本地构建最近邻索引对查询向量执行kneighbors找出语义最接近的块再把这些块拼进 prompt 交给 LLMgpt-4o-minitemperature0.7生成基于私有数据的回答评估维度README 同时给出了 RAG 应用的评估标准——回答质量、groundedness回答是否来自提供的文档、相关性与流畅度。也就是说本文档讲解的“多层感知机 / 梯度下降 / 反向传播”知识点恰好会被课程的 RAG 演示以“what is a perceptron?”这类问题检索到并返回给用户——教学内容与工程演示在此形成了闭环。小结形式化任何机器学习任务 模型f(θ) 数据集 ⟨X, Y⟩ 损失函数 ℒ分类常用 0-1 损失或逻辑损失回归常用绝对/平方误差softmax 把输出归一化为类别概率。优化训练目标是最小化总误差梯度下降按 w⁽ⁱ⁺¹⁾ w⁽ⁱ⁾ − η∂ℒ/∂w 迭代更新参数实际训练用随机 minibatch即 SGD。表达力多层感知机通过“线性层 非线性激活 α 线性层 softmax”叠加获得处理线性不可分问题的能力。反向传播利用链式法则从损失出发沿计算图反向逐层求导公共子表达式天然复用因此高效。仓库佐证data/own_framework.md 既是教学正文也是 RAG notebook 的知识库语料分块参数 400/300完整链路可参考 第 15 课 README。继续学习的自然路径是 frameworks.md在掌握“手写框架”的原理之后理解 TensorFlow / PyTorch 等主流框架的 low-level API计算图、GPU 并行与 high-level APIKeras 等如何把本文档中的原理产品化。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表