AI-For-Beginners 神经网络课程导读:从感知机到深度学习框架

发布时间:2026/10/2 1:10:17
AI-For-Beginners 神经网络课程导读:从感知机到深度学习框架 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本节内容是开源课程 AI-For-Beginners 第 3 章「神经网络」的入门总纲对应 translations/bg/lessons/3-NeuralNetworks/README.md 及其英文原版 lessons/3-NeuralNetworks/README.md。在动手训练模型之前你需要先理解神经网络的生物起源与数学本质明确它在整个机器学习学科中的位置并规划好后续五节内容的学习路径。读完本文你将掌握神经元的数学建模方式、机器学习两大核心问题的形式化表示分类与回归、从单层感知机到多层网络再到主流框架的技术演进脉络以及课程配套的动手实验资源。神经网络的定位通往人工智能的数学大脑课程开篇反复强调一个核心观点实现智能的一种途径是训练一个计算机模型或人工大脑。自 20 世纪中叶以来研究者尝试过各种数学模型直到近年来这一方向才被证明取得了巨大成功。这些模仿大脑的数学模型就是本文的主角——神经网络。术语澄清神经网络有时也被称为人工神经网络Artificial Neural NetworksANN目的是强调我们讨论的是数学模型而不是真实的生物神经元网络。本课程将神经网络置于更广阔的学科背景下看待机器学习的子集神经网络隶属于机器学习Machine Learning这一更大的学科机器学习的核心目标是用数据训练出能够解决问题的计算机模型。AI 的重要组成部分机器学习是人工智能的重要组成部分但本课程不涉及经典机器学习如决策树、SVM 等的内容专注于神经网络模型。如果希望补充经典机器学习的基础知识可以参阅课程附带的独立学习路径 Machine Learning for Beginners 课程说明 中提及的资源在 binder/environment.yml 与 requirements.txt 中则列出了本课程各章节运行 Notebook 所依赖的 Python 环境例如运行本章案例需要numpy、matplotlib、scikit-learn、pytorch等库。机器学习的形式化特征、标签与两类经典问题在开始构建任何模型之前必须先建立统一的数学语言。机器学习的基本设定是我们拥有一组训练样本X与对应的输出值Y。其中样本Examples通常是 N 维向量由一系列特征Features组成例如肿瘤的大小、年龄等属性。标签Labels即样本对应的输出值Y。从张量tensor的角度看输入数据集是一个大小为M×N的矩阵其中 M 是样本数量、N 是特征数量输出标签 Y 是一个大小为 M 的向量。课程将围绕机器学习中最常见的两类问题展开问题类型任务定义典型输出分类Classification将输入对象划分到两个或多个类别中类别标签如良/恶性肿瘤回归Regression为每个输入样本预测一个数值连续数值如房价、温度这一形式化框架在课程随后的动手实验中被反复使用。例如 examples/02-simple-neural-network.py 中generate_training_data函数生成 100 个二维坐标点特征为 x、y 坐标并为每个点打上位于直线 yx 上方标签 1或下方标签 0的标签这正是分类问题的直观体现。神经元模型从生物学到数学的映射神经网络的灵感直接来源于生物学。大脑由神经细胞神经元组成每个神经元拥有多个输入树突和一个输出轴突树突和轴突都能传导电信号而它们之间的连接——突触——具有可调的导电程度由神经递质调节。生物神经元人工神经元把这种生物机制抽象化就得到最简单的神经元数学模型包含若干输入 X₁, ..., X_N 与一个输出 Y以及一系列权重 W₁, ..., W_N。输出按如下公式计算Y f( Σᵢ Xᵢ·Wᵢ )其中f 是非线性激活函数activation function。这个看似简单的公式正是后续所有神经网络的基石加权求和 非线性变换。历史注记最早的神经元数学模型由 Warren McCullock 与 Walter Pitts 于 1943 年在经典论文A logical calculus of the ideas immanent in nervous activity中提出Donald Hebb 在《The Organization of Behavior: A Neuropsychological Theory》中则提出了这些网络可以被训练的方式即著名的 Hebb 学习规则。从公式到代码课程示例的实现印证公式不只是一行数学符号课程仓库的示例代码完整复现了这一计算过程。在 examples/02-simple-neural-network.py 中SimpleNeuron类对单个神经元的建模流程与上面的公式一一对应每个输入分配一个初始随机权重weights并附加一个偏置项biasfeedforward方法执行前向传播先加权求和total sum(w * x for w, x in zip(self.weights, inputs))再加偏置最后应用sigmoid 激活函数sigmoid(total)把输出压缩到 01 区间作为预测结果。代码中还实现了一个关键的辅助函数sigmoid_derivative导数 σ(x)·(1−σ(x))它是后面反向传播更新权重的基础——这一步虽然在单神经元里很简单但正是让网络从错误中学习的核心机制。运行该示例python examples/02-simple-neural-network.py即可看到一个仅有 2 个输入的单神经元经过 50 轮epoch训练后即可学会判断二维平面上的点位于直线 yx 的上方还是下方。本节课程地图五节课的技术演进路线第 3 章神经网络并非单篇文档而是由一节导读加三节正文外加独立实验构成的完整教学单元。下表汇总了本节的课程结构与学习顺序小节核心主题配套资源03-Perceptron感知机最早的神经网络模型用于二分类Perceptron.ipynb、实验多分类感知机04-OwnFramework多层网络与反向传播构建自己的神经网络框架OwnFramework.ipynb、实验自研框架求解 MNIST05-Frameworks主流深度学习框架PyTorch / TensorFlow Keras与过拟合IntroPyTorch.ipynb、IntroKerasTF.ipynb、实验第一站感知机Perceptron——最早的神经网络模型感知机是课程的第一课也是整个神经网络领域的起点。1957 年Frank Rosenblatt 在康奈尔航空实验室实现了最早的硬件感知机 Mark-1用于识别三角形、正方形、圆形等基本几何图形。其输入是一个 20×20 的光电池阵列即神经网络拥有 400 个输入与 1 个二值输出网络中的权重相当于需要手动调节的电位器。感知机是一个二分类模型对每个输入向量 x输出为 1 或 −1取决于类别。其输出计算式为y(x) f(wᵀx)其中 f 是阶跃激活函数step activation function。训练的目标是找到能正确分类绝大多数样本的权重向量 w使误差最小。误差由感知机准则perceptron criterion定义对误分类样本求和。优化通常采用梯度下降gradient descent即从初始权重 w⁽⁰⁾ 出发按公式逐步更新w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ − η·∇E(w)其中η 是学习率learning rate∇E(w) 是误差 E 对权重的梯度。课程给出了完整的 Python 训练代码见 03-Perceptron 正文从随机初始权重出发每轮随机挑选一个正例和一个负例用np.dot计算感知机输出若正例被误判为负则weights weights eta*weights.shape反之则减去该项迭代num_iterations默认 100轮。配套的 Perceptron.ipynb 则把玩具问题落地用sklearn.datasets.make_classification生成带两个特征的随机分类数据集例如根据肿瘤大小与年龄判断良性/恶性把 0/1 标签转换为 ±1并按 8:2 切分为训练集与测试集逐步演示感知机的训练与可视化过程。课程实验 PerceptronMultiClass.ipynb 则要求把二分类感知机推广到完整的手写数字识别多分类。第二站多层网络与自建框架——从线性到非线性感知机只能解决线性可分问题。第二课 04-OwnFramework 将模型扩展为更灵活的框架实现三大能力提升从二分类扩展到多分类在分类之外解决回归问题分离线性不可分的类别。课程首先把机器学习问题进一步形式化给定训练数据集 X 与标签 Y需要构建模型 f 使预测最准确预测质量由**损失函数Loss function**衡量。常用损失函数包括回归问题绝对误差 Σᵢ|f(x⁽ⁱ⁾)−y⁽ⁱ⁾|或平方误差 Σᵢ(f(x⁽ⁱ⁾)−y⁽ⁱ⁾)²分类问题0-1 损失等价于模型准确率或对数损失logistic loss。单层感知机的函数形式是线性的 f(x)wxbw 为权重矩阵、x 为输入特征向量、b 为偏置向量。做分类时常希望网络输出各类别的概率因此引入softmax 函数 σ对输出归一化函数变为 f(x)σ(wxb)。这里的 w 与 b 合称参数 θ⟨w,b⟩而神经网络训练的目标就是通过改变参数 θ 使整体误差最小化。梯度下降优化是达成这一目标的标准方法随机初始化参数 w⁽⁰⁾、b⁽⁰⁾然后反复执行更新步骤w⁽ⁱ⁺¹⁾ w⁽ⁱ⁾ − η·∂ℒ/∂w、b⁽ⁱ⁺¹⁾ b⁽ⁱ⁾ − η·∂ℒ/∂b。实际训练中误差是遍历全部训练样本求和得到的因此梯度计算开销巨大现实做法是每次只取一小部分数据——小批量minibatches——基于子集计算梯度。由于子集是随机抽取的这种方法被称为随机梯度下降Stochastic Gradient DescentSGD。多层感知机的关键创新在于组合多个网络层函数 f 变为多步计算——z₁ w₁x b₁ z₂ w₂α(z₁) b₂ f σ(z₂)其中 α 是非线性激活函数σ 是 softmax参数 θ⟨w₁,b₁,w₂,b₂⟩。梯度下降算法本身不变但梯度计算变得困难。借助链式求导法则可以逐层展开导数∂ℒ/∂w₂ (∂ℒ/∂σ)(∂σ/∂z₂)(∂z₂/∂w₂)∂ℒ/∂w₁ (∂ℒ/∂σ)(∂σ/∂z₂)(∂z₂/∂α)(∂α/∂z₁)(∂z₁/∂w₁)注意每条式子最左侧的因子完全相同因此可以从损失函数出发、沿着计算图反向高效地逐层求导——这正是反向传播backpropagation简称 backprop方法名的由来。计算图的可视化与梯度流动示意可参见 04-OwnFramework/images/ComputeGraphGrad.png。✅ 反向传播的更多细节会在配套 Notebook 中深入展开。自建框架的动手环节在 OwnFramework.ipynb 中课程要求读者逐步实现自己的神经网络库使其能完成多分类与回归任务。Notebook 首先用make_classification生成带噪声flip_y0.2的二维数据集并可视化随后逐步实现网络层、激活函数、损失函数与前向/反向传播。配套实验 MyFW_MNIST.ipynb 则要求用这个自研框架解决 MNIST 手写数字识别。第三站主流框架——PyTorch 与 TensorFlow/Keras第三课 05-Frameworks 指出高效训练神经网络需要两件事对张量tensor进行运算乘法、加法、sigmoid、softmax 等以及为所有表达式计算梯度以执行梯度下降。numpy 能完成第一部分但梯度需要专门的机制。在上一课自建的框架中所有导数函数都必须手写在backward方法里而理想的框架应能对任意可定义的表达式自动计算梯度。此外深度学习训练需要海量计算框架还必须支持在GPU乃至 TPU 等专用计算单元上并行化张量运算。目前最主流的两个框架是TensorFlow与PyTorch它们都提供低级 API允许构建计算图定义如何由输入参数计算输出通常是损失函数并可推送到 GPU 执行且提供对计算图求导、计算梯度的函数供优化模型参数使用高级 API把神经网络看作层的序列大幅简化常规网络的构建。训练模型通常只需准备数据然后调用fit函数。TensorFlowPyTorch低级 APITensorFlowPyTorch高级 APIKerasPyTorch Lightning两种 API 各有定位高级 API 能快速构建典型网络、不必操心细节低级 API 对训练过程控制力更强常用于研究新架构。两者可以混用——例如用低级 API 开发自定义层再嵌入高级 API 构建的大网络或用高级 API 定义网络结构、用低级 API 编写自定义训练循环因为二者底层概念一致、设计上相互兼容。课程采取双框架策略绝大部分内容同时提供 PyTorch 与 TensorFlow 两个版本学习者可任选其一深入。从入门顺序上课程建议先用低级 API 和张量理解神经网络的底层原理但若想快速上手也可以直接跳到高级 API 的 NotebookAPI 层级TensorFlow 生态PyTorch 生态低级 APIIntroKerasTF.ipynbIntroPyTorch.ipynb高级 APIIntroKeras.ipynbPyTorch LightningPyTorch 入门 NotebookIntroPyTorch.ipynb开篇即总结了框架的核心能力在 CPU/GPU/TPU 上操作张量、自动计算梯度所有内建张量函数的导数都被显式编程、提供高层网络构造器与简化训练函数fit、附带多种优化算法与数据处理抽象。安装方式通常简单到只需两条命令pip install torch torchvision或conda install pytorch -c pytorch过拟合必须掌握的核心概念在掌握框架之后课程马上引入机器学习中最重要、也最容易出错的概念——过拟合overfitting。考虑一个拟合 5 个数据点的任务图中以x标记线性模型2 个参数非线性模型7 个参数训练误差 5.3训练误差 0验证误差 5.1验证误差 20左图直线近似恰到好处参数数量合适模型正确抓住了数据分布背后的规律右图模型过于强大——只有 5 个点却有 7 个参数模型可以扭曲自身穿过所有点使训练误差归零但正因如此它无法理解数据背后的正确模式验证误差高达 20。因此在模型丰富度参数数量与训练样本数量之间取得正确平衡至关重要。过拟合为何发生课程归纳了三个常见原因训练数据不足模型过于强大输入数据中噪声过多。如何检测过拟合从上图可见过拟合的特征是训练误差极低、验证误差很高。训练过程中通常训练误差与验证误差先一起下降随后验证误差在某一点停止下降甚至开始回升——这就是过拟合的信号提示我们应该在此停止训练或至少保存一份模型快照。曲线示意见 lessons/3-NeuralNetworks/images/Overfitting.png。如何预防过拟合发现过拟合后可以采取以下措施之一增加训练数据量降低模型复杂度采用正则化技术例如 Dropout训练技巧专题该内容在后续课程中展开。过拟合与偏差-方差权衡从统计学角度看过拟合是更一般问题——偏差-方差权衡Bias-Variance Tradeoff——的一个具体实例。模型的误差来源可分为两类偏差误差Bias errors算法未能正确捕捉训练数据中的关系通常源于模型能力不足欠拟合underfitting方差误差Variance errors模型拟合的是输入数据中的噪声而非有意义的规律过拟合。训练过程中偏差误差逐渐下降模型学会逼近数据方差误差逐渐上升因此必须在恰当的时机停止训练——无论是手动检测到过拟合还是通过引入正则化自动完成——以防止过拟合。在框架 Notebook 中还可以观察到另一个与过拟合相关的实操经验学习率过高可能导致过拟合或结果不稳定而学习率过低则需要更多 epoch 才能收敛见 IntroKeras.ipynb 中的实验提示。动手与实验路线第 3 章的学习强调边学边做每个小节都配套了 Notebook 与实验任务实验答案与说明位于对应lab/目录实验任务内容对应资源感知机实验完成完整的手写数字分类判断给定图像最可能是哪个数字03-Perceptron/lab/README.md、PerceptronMultiClass.ipynb自建框架实验用本课构建的框架解决 MNIST 手写数字分类04-OwnFramework/lab/README.md、MyFW_MNIST.ipynb框架实验用 PyTorch 或 TensorFlow以单层与多层全连接网络解决两个分类问题05-Frameworks/lab/README.md、LabFrameworks.ipynb此外examples/02-simple-neural-network.py 可作为本章的零依赖入门示例它不依赖任何 ML 框架从零实现 sigmoid 激活函数、单神经元的前向传播与反向传播读者可以修改num_samples、epochs与learning_rate观察训练行为的变化直观理解神经元如何学习。小结本节导读为整章神经网络学习搭建了完整的地基从生物神经元到Y f(Σ XᵢWᵢ)的数学抽象从机器学习的两大问题分类与回归到张量化的数据表示从感知机的梯度下降训练到多层网络的反向传播再到 PyTorch 与 TensorFlow 两大主流框架的 API 生态最后落脚于贯穿整个深度学习生涯的过拟合概念。掌握这些基础后就可以沿着 03-Perceptron → 04-OwnFramework → 05-Frameworks 的路线亲手实现并训练自己的第一个神经网络。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐AI-For-Beginners 神经网络入门从感知机到 PyTorch 的完整学习路线AI For Beginners 神经网络入门从感知机到 PyTorch 的完整学习路线 本篇文章基于 AI For Beginners 开源课程中神经网络教程人工智能机器学习深度学习如何快速掌握Julia神经网络编程从感知机到深度学习框架的完整指南如何快速掌握Julia神经网络编程从感知机到深度学习框架的完整指南 Julia作为一种高性能的编程语言正在人工智能和深度学习领域迅速崛起。本文将带你从基础的编程语言编译器语言运行时标准库JIT编译从感知机到多层感知机在 Generative AI for Beginners 中从零构建神经网络框架与反向传播从感知机到多层感知机在 Generative AI for Beginners 中从零构建神经网络框架与反向传播 本文对应仓库中的 own_framework教程人工智能大模型创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考