资讯动态

AI-For-Beginners 神经网络入门:从感知机到深度学习框架的完整学习路线

发布时间:2026/10/5 10:17:15 来源:尧图企业网站定制
教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载导读本文基于 AI-For-Beginners 课程第三部分《神经网络导论》对应 lessons/3-NeuralNetworks/README.md整理而成。该部分是整个课程从符号 AI 迈向现代深度学习的关键转折点回答了大脑的数学化模型究竟是什么、如何用数据训练它这一核心问题。读完本文你将理解机器学习与神经网络的基本形式化定义、单个神经元与感知机的数学模型与训练算法梯度下降、多层感知机与反向传播的原理以及 PyTorch 与 TensorFlow/Keras 两大主流框架的分工并掌握识别与应对过拟合的实战技巧。神经网络大脑的数学化模型在课程前面的导论中我们已经讨论过实现智能的路径之一——训练一个计算机模型即人工大脑。自 20 世纪中叶以来研究者尝试了各种数学模型直到近年来这一方向取得了巨大成功。这些大脑的数学模型就被称为神经网络Neural Networks。神经网络有时也被称为人工神经网络Artificial Neural NetworksANN以明确我们讨论的是数学模型而非真实的神经元网络。从生物学的角度看我们的大脑由神经细胞神经元构成每个神经元拥有多个输入树突和单个输出轴突。树突与轴突都能传导电信号而它们之间的连接——突触——具有可变的导电性这种导电性受神经递质调节。这正是神经网络模型的生物学灵感来源神经元的数学模型最简单的神经元数学模型包含若干输入 X₁, …, XN、一个输出 Y以及一组权重 W₁, …, WN输出按下式计算Y f(Σᵢ XᵢWᵢ)其中 f 是某种非线性激活函数。早期神经元模型由 Warren McCulloch 与 Walter Pitts 在 1943 年的经典论文A logical calculus of the ideas immanent in nervous activity中提出Donald Hebb 在其著作The Organization of Behavior: A Neuropsychological Theory中则提出了这些网络如何被训练的思路即赫布学习的雏形。机器学习神经网络的学科母体神经网络是更大学科——机器学习Machine Learning——的一部分。机器学习的核心目标是用数据训练计算机模型使其能够解决问题。机器学习是人工智能的重要组成部分但本课程并不覆盖经典机器学习经典 ML 可参见课程姊妹项目 Machine Learning for Beginners。数据集的形式化表示在机器学习中我们假设存在一组样本数据集X及对应的输出值Y。样本通常是 N 维向量由特征features组成输出则被称为标签labels。当输入与输出以张量表示时输入数据集是一个 M×N 矩阵其中 M 是样本数N 是特征数输出标签 Y 是长度为 M 的向量。两类最常见的机器学习问题课程聚焦以下两类问题分类Classification将输入对象划分到两个或多个类别中回归Regression为每个输入样本预测一个数值。本课程的后续内容只关注神经网络模型这一类解决方案。本节课程地图四步走本节第 3 部分围绕以下四个主题展开层层递进感知机Perceptron——最早的二分类神经网络模型之一多层网络Multi-Layered Perceptron——配合 OwnFramework.ipynb 从零搭建自己的神经网络框架神经网络框架Frameworks——配套 PyTorch 入门笔记本 与 Keras/TensorFlow 入门笔记本过拟合Overfitting——深度学习实战中必须掌握的核心概念。感知机最早的二分类神经网络感知机是历史上最早的神经网络实现之一。1957 年Cornell Aeronautical Laboratory 的 Frank Rosenblatt 实现了名为 Mark-1 的硬件装置用于识别三角形、正方形、圆形等基本几何图形。输入图像由 20×20 的光电池阵列表示因此网络有400 个输入和1 个二值输出这个简单网络只包含一个神经元也被称为阈值逻辑单元threshold logic unit训练阶段网络权重扮演着电位器的角色需要人工调节。感知机模型与阶跃激活函数假设模型有 N 个特征输入向量大小为 N。感知机是二分类模型对每个输入向量 x其输出为 1 或 -1取决于类别。输出计算公式为y(x) f(wᵀx)其中 f 是阶跃激活函数f(x) 1 当 x ≥ 0f(x) -1 当 x 0。一般线性模型还应包含偏置项 b即 y f(wᵀx b)。在 Perceptron.ipynb 中代码通过给输入特征追加一个恒等于 1 的额外维度来吸收偏置从而简化模型——这是实现中的关键技巧。训练感知机感知机准则与梯度下降训练感知机就是要找到一个权重向量 w使大多数样本被正确分类即误差最小。该误差 E 由感知机准则perceptron criterion定义E(w) -Σ wᵀxᵢtᵢ其中求和只对被错误分类的训练样本 i 进行xᵢ 是输入数据tᵢ 对负例与正例分别取 -1 与 1。该准则被看作权重 w 的函数我们的目标是最小化它。通常采用梯度下降gradient descent方法先取初始权重 w⁽⁰⁾然后每一步按下式更新权重w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ - η∇E(w)这里 η 是学习率learning rate∇E(w) 是 E 的梯度。计算梯度后可以得到更新公式w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ ΣηxᵢtᵢPython 训练算法仓库真实代码在 Perceptron.ipynb 中训练算法实现如下与原文档示例一致并带注释说明def train(positive_examples, negative_examples, num_iterations100, learning_rate0.01): num_dims positive_examples.shape[1] # 初始化权重为简单起见用 0随机初始化也是好主意 weights np.zeros((num_dims, 1)) pos_count positive_examples.shape[0] neg_count negative_examples.shape[0] report_frequency 10 for i in range(num_iterations): # 每次迭代随机挑选一个正例和一个负例 pos random.choice(positive_examples) neg random.choice(negative_examples) z np.dot(pos, weights) if z 0: # 正例被误分类为负例 weights weights learning_rate * pos.reshape(weights.shape) z np.dot(neg, weights) if z 0: # 负例被误分类为正例 weights weights - learning_rate * neg.reshape(weights.shape) # 周期性打印全体样本上的当前准确率 if i % report_frequency 0: pos_out np.dot(positive_examples, weights) neg_out np.dot(negative_examples, weights) pos_correct (pos_out 0).sum() / float(pos_count) neg_correct (neg_out 0).sum() / float(neg_count) print(Iteration{}, pos correct{}, neg correct{}.format(i, pos_correct, neg_correct)) return weights该代码直接实现了梯度下降更新公式 w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ ηxₙtₙ。在仓库示例输出中可以看到初始准确率约 50%经过若干轮迭代后很快提升到接近 90%。学习率关键超参数learning_rate参数默认 0.01控制每一步训练中权重的调整幅度较大的学习率如 1.0使感知机学习更快但可能越过最优解较小的学习率如 0.001收敛更慢但可能更精确地收敛。Perceptron.ipynb 还提供了学习率对比实验learning_rates [0.001, 0.01, 0.1, 1.0]四宫格决策边界图以及基于ipywidgets的交互式滑块可以直观观察不同学习率下决策边界与最终权重值w₀、w₁、偏置的变化。评估与扩展测试集评估训练完成后将测试数据同样补一维乘上权重矩阵检查结果符号是否与标签1/-1一致求和后除以样本数即得准确率动手实验感知机应用与玩具问题、真实问题演练见 Perceptron.ipynb进一步的多分类任务完整的手写数字识别见 lab 说明 与 PerceptronMultiClass.ipynb。多层感知机从线性到非线性单层感知机只能处理线性可分的数据。在 04-OwnFramework 一节中模型被扩展为更灵活的框架实现三个目标在二分类之外支持多分类在分类之外支持回归问题分离线性不可分的类别。同时课程将用 Python 开发一个模块化框架用于构建不同的神经网络架构。机器学习问题的形式化训练数据集X带标签Y需构建模型 f 做出最准确的预测预测质量由损失函数ℒ 衡量。常用损失函数回归预测数值绝对误差Σᵢ|f(x⁽ⁱ⁾)-y⁽ⁱ⁾|或平方误差Σᵢ(f(x⁽ⁱ⁾)-y⁽ⁱ⁾)²分类0-1 损失本质等同于模型准确率或逻辑损失logistic loss。对于单层感知机f 是线性函数 f(x)wxbw 为权重矩阵x 为输入特征向量b 为偏置向量不同网络架构下 f 可更复杂。分类问题中通常希望网络输出对应类别的概率。为把任意数值转换为概率归一化输出常用softmax函数 σ此时 f(x)σ(wxb)。w 与 b 合称为参数θ⟨w,b⟩。给定数据集 ⟨X,Y⟩整体误差可写成参数 θ 的函数。神经网络训练的目标就是通过改变参数 θ 使误差最小化。梯度下降优化与随机梯度下降SGD梯度下降是著名的函数优化方法计算损失函数对参数的导数多维情况下称为梯度并按使误差减小的方向调整参数用随机值初始化参数 w⁽⁰⁾, b⁽⁰⁾多次重复更新w⁽ⁱ⁺¹⁾ w⁽ⁱ⁾ - η∂ℒ/∂wb⁽ⁱ⁺¹⁾ 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。仓库中的自研框架实现OwnFramework.ipynb 从零实现了完整的自研框架关键组件包括各层forward方法定义前向计算如net.forward(train_x[0:10])Softmax 层σ(z_c) e^(z_c)/Σⱼe^(z_j)用于把任意输出值归一化为概率CrossEntropyLoss 类交叉熵损失forward(p, y)中通过p_of_y p[np.arange(len(y)), y]取正确类概率再取-log_prob.mean()对全部样本求均值。仓库注释特别强调损失函数必须对整个数据集或小批量返回一个数值因此需要.mean()聚合backward方法在每个层内手工编写导数计算实现反向传播例如dlog_softmax[np.arange(len(self.y)), self.y] - 1.0/len(self.y)的损失反向传播实现训练循环train_epoch(net, train_x, train_labels, lossCrossEntropyLoss(), batch_size4, lr0.1)采用小批量 SGD。将各层组合起来便构成计算图computational graph例如z net.forward(train_x[0:10]) → p softmax.forward(z) → loss cross_ent_loss.forward(p, train_labels[0:10])。实验任务使用本课自建框架完成 MNIST 手写数字分类见 lab 说明 与 MyFW_MNIST.ipynb仓库 data/mnist.pkl.gz 即提供了 MNIST 数据。神经网络框架PyTorch 与 TensorFlow/Keras自研框架需要手工为每个表达式编写导数这显然不可持续。要高效训练神经网络框架必须提供两个能力张量运算乘法、加法以及 sigmoid、softmax 等函数计算自动梯度计算对所有表达式求梯度以执行梯度下降优化。此外深度网络训练计算量巨大框架还应支持在GPU或 TPU 等专用计算单元上并行计算。术语 parallelize并行化指把计算分布到多个设备上执行。当前最流行的两个神经网络框架是TensorFlow与PyTorch它们都提供底层 API 与高层 API层级TensorFlowPyTorch低层 APITensorFlowPyTorch高层 APIKerasPyTorch Lightning低层 API允许构建所谓的计算图——定义给定输入参数下如何计算输出通常是损失函数有 GPU 时可将计算图推送到 GPU 上执行同时提供对计算图求导、计算梯度的函数用于优化模型参数。低层 API 对训练过程控制力更强在研究新架构时大量使用高层 API把神经网络视为层的序列sequence of layers极大简化了常见网络的构建训练模型通常只需准备好数据然后调用fit函数即可。两种 API 可以混用例如用低层 API 开发自定义网络层再将其嵌入高层 API 构建并训练的大网络中或用高层 API 将网络定义为层序列再用自研的低层训练循环做优化。两者基于相同的基本概念设计上可以良好协同。课程中大部分内容同时提供 PyTorch 与 TensorFlow 两个版本可选择偏好框架并只浏览对应笔记本建议从低层 API 和张量入手理解原理赶时间的话也可以直接跳至高层的 API 笔记本。仓库配套实践笔记本层级TensorFlowPyTorch低层 APIIntroKerasTF.ipynbIntroPyTorch.ipynb高层 APIIntroKeras.ipynbPyTorch Lightning以 IntroPyTorch.ipynb 为例仓库实际展示了张量基础torch.tensor创建、torch.randn(size(10,3))随机张量、torch.exp、torch.sum等运算以及add_原地操作与requires_gradTrue自动微分autograd对c torch.mean(torch.sqrt(torch.square(a) torch.square(b)))这类复合表达式调用backward()自动计算梯度验证了对任意可定义表达式求梯度的框架能力线性回归训练w torch.tensor([100.0], requires_gradTrue)前向torch.matmul(x, w) b损失torch.mean(torch.square(labels - predictions))并支持device cuda if torch.cuda.is_available() else cpu的设备切换数据集管理torch.utils.data.TensorDatasetDataLoader(dataset, batch_size16)的小批量数据加载机制二分类模型自定义torch.nn.Module子类配合torch.nn.functional.binary_cross_entropy_with_logits训练。实验任务使用 PyTorch 或 TensorFlow用单层与多层全连接网络解决两个分类问题见 lab 说明 与 LabFrameworks.ipynb。过拟合训练深度学习模型必须避开的陷阱过拟合是机器学习中极其重要的概念。考虑用模型去逼近 5 个数据点下图中 x 标记的问题线性模型2 个参数非线性模型7 个参数训练误差 5.3训练误差 0验证误差 5.1验证误差 20左侧直线近似效果好。因为参数数量合适模型正确把握了数据点分布背后的规律右侧模型过于强大。仅有 5 个点却有 7 个参数模型可以调整得穿过所有点使训练误差为 0但这也使它无法理解数据背后的真实模式导致验证误差极高。因此在模型的丰富度参数数量与训练样本数量之间取得正确平衡至关重要。过拟合产生的原因训练数据不足模型过于强大输入数据噪声过多。如何检测过拟合从上面的对比可以看出过拟合可以通过训练误差极低 验证误差很高来识别。通常训练过程中训练误差与验证误差都会先下降但到某个节点后验证误差可能停止下降并开始上升——这就是过拟合的信号提示我们应在此处停止训练或至少保存一份模型快照。如何预防过拟合发现过拟合时可采取以下措施之一增加训练数据量降低模型复杂度使用正则化技术例如 Dropout课程后续章节会介绍。过拟合与偏差-方差权衡过拟合实际上是统计学中更普遍问题——偏差-方差权衡Bias-Variance Tradeoff的一个特例。模型误差可分解为两类偏差误差Bias error算法未能正确捕获训练数据之间的关系可能源于模型能力不足欠拟合underfitting方差误差Variance error模型拟合了输入数据中的噪声而非有意义的关系过拟合。训练过程中偏差误差下降模型逐渐学会逼近数据方差误差上升。因此在恰当的时机停止训练至关重要——无论是手动检测到过拟合时还是自动引入正则化——以防止过拟合。结语与实践路径本节从神经网络是大脑的数学模型这一基本思想出发完成了从单层感知机、多层感知机与反向传播、到现代深度学习框架的完整知识闭环阅读本节主文档 README 建立整体认知用 Perceptron.ipynb 动手实现并可视化感知机的训练与决策边界再完成 多分类 lab跟随 OwnFramework.ipynb 从零构建自己的神经网络框架并在 MyFW_MNIST.ipynb 上验证 MNIST 分类在 PyTorch 与 TensorFlow/Keras 笔记本中体验现代框架的张量运算、自动微分与小批量训练完成 Frameworks lab时刻警惕过拟合善用验证集监控与正则化手段。这一部分为后续计算机视觉卷积网络、NLPRNN 与 Transformer等章节奠定了统一的神经网络理论基础——理解计算图 梯度下降 反向传播这一三元组你就掌握了现代深度学习最核心的心智模型。赞分享教程人工智能机器学习深度学习【免费下载链接】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 开源课程中神经网络教程人工智能机器学习深度学习AI for Beginners 神经网络入门从感知机到现代深度学习框架AI for Beginners 神经网络入门从感知机到现代深度学习框架 导读 本文是 AI for Beginners 课程第 3 大章《神经网络Neur教程人工智能机器学习深度学习AI-For-Beginners 神经网络入门指南从感知机到现代深度学习框架AI For Beginners 神经网络入门指南从感知机到现代深度学习框架 本指南以 AI For Beginners 课程第三部分神经网络 less教程人工智能机器学习深度学习上一篇3步终极指南让经典暗黑破坏神2在现代PC上完美重生下一篇华硕主板风扇控制异常终极解决方案FanControl专业调校完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑