人工智能之核心技术 深度学习第一章 神经网络基础—公式关注公众号文章目录人工智能之核心技术 深度学习一、感知器模型1.1 线性感知器Perceptron1.2 多层感知器MLP, Multi-Layer Perceptron二、激活函数常见激活函数对比激活函数图像示意三、神经网络结构设计3.1 各层作用3.2 设计原则1隐藏层数量2每层神经元数量四、配套代码实现PyTorch五、万能近似定理Universal Approximation Theorem总结资料关注一、感知器模型1.1 线性感知器Perceptron结构线性感知器是最简单的神经网络单元由 Frank Rosenblatt 在 1957 年提出。它模拟生物神经元接收多个输入加权求和后通过一个激活函数输出结果。数学表达式为y f ( ∑ i 1 n w i x i b ) y f\left( \sum_{i1}^{n} w_i x_i b \right)yf(i1∑nwixib)其中x i x_ixi是第i ii个输入w i w_iwi是对应的权重b bb是偏置biasf ( ⋅ ) f(\cdot)f(⋅)是激活函数感知器中通常为阶跃函数原理感知器试图学习一个线性决策边界超平面将两类数据分开。如果数据线性可分感知器学习算法可以收敛到正确解。局限性感知器只能解决线性可分问题。经典反例是异或XOR问题x₁x₂XOR000011101110这四点无法用一条直线完全分开如下图所示因此单层感知器无法学习 XOR。x1Perceptronx2y关键结论单层感知器 线性分类器 → 无法处理非线性问题。1.2 多层感知器MLP, Multi-Layer Perceptron为了解决感知器的局限性人们引入了隐藏层形成了多层感知器MLP。结构输入层 → 一个或多个隐藏层 → 输出层核心思想通过堆叠非线性变换组合出复杂的决策边界从而拟合非线性函数如 XORXOR 的 MLP 解决方案2 层隐藏层有 2 个神经元分别学习“AND”和“OR”逻辑输出层组合它们实现 XORx1h1h2x2y✅突破MLP 非线性激活函数 → 可以逼近任意连续函数万能近似定理二、激活函数激活函数赋予神经网络非线性表达能力。如果没有激活函数无论多少层网络都等价于一个线性模型。常见激活函数对比激活函数公式优点缺点适用场景Sigmoid$ \sigma(x) \frac{1}{1 e^{-x}} $输出在 (0,1)适合概率输出梯度消失、输出非零中心二分类输出层Tanh$ \tanh(x) \frac{e^x - e{-x}}{ex e^{-x}} $零中心、比 Sigmoid 梯度更强仍存在梯度消失隐藏层早期ReLU$ \text{ReLU}(x) \max(0, x) $计算快、缓解梯度消失“神经元死亡”负区梯度为0默认隐藏层激活函数Leaky ReLU$ \text{LReLU}(x) \begin{cases} x x 0 \ \alpha x x \leq 0 \end{cases} $解决 ReLU 死亡问题需调超参α \alphaαReLU 的改进版Softmax$ \text{Softmax}(z_i) \frac{e^{z_i}}{\sum_j e^{z_j}} $多分类概率归一化仅用于输出层多分类任务输出层激活函数图像示意现代实践建议隐藏层优先使用ReLU或Leaky ReLU二分类输出用Sigmoid多分类输出用Softmax三、神经网络结构设计3.1 各层作用层类型作用输入层接收原始特征如像素值、文本向量不做计算仅传递隐藏层提取特征、学习数据的抽象表示层数越多抽象能力越强输出层生成最终预测分类概率、回归值等激活函数依任务而定3.2 设计原则1隐藏层数量浅层网络1~2 层适用于简单任务、小数据集深层网络3 层适用于复杂任务图像、语音但需足够数据和正则化⚠️ 并非越深越好过深可能导致梯度消失/爆炸过拟合训练困难2每层神经元数量输入层神经元数 特征维度输出层神经元数 类别数分类或 1回归隐藏层神经元数经验法则通常介于输入与输出之间常用$ N_h \frac{N_{in} N_{out}}{2} $ 或 $ N_h \sqrt{N_{in} \times N_{out}} $也可采用“金字塔”结构逐层减少实用技巧从简单结构开始如 1 隐藏层64 神经元用验证集调参Grid Search / Random Search使用 Dropout、BatchNorm 提升泛化四、配套代码实现PyTorch以下是一个完整的 MLP 实现用于解决 XOR 问题importtorchimporttorch.nnasnnimporttorch.optimasoptim# XOR 数据Xtorch.tensor([[0,0],[0,1],[1,0],[1,1]],dtypetorch.float32)ytorch.tensor([[0],[1],[1],[0]],dtypetorch.float32)# 定义 MLP 模型classXOR_MLP(nn.Module):def__init__(self):super().__init__()self.hiddennn.Linear(2,4)# 输入2维隐藏层4神经元self.outputnn.Linear(4,1)# 输出1维self.relunn.ReLU()self.sigmoidnn.Sigmoid()# 二分类输出defforward(self,x):xself.relu(self.hidden(x))xself.sigmoid(self.output(x))returnx# 实例化模型、损失函数、优化器modelXOR_MLP()criterionnn.BCELoss()# 二元交叉熵optimizeroptim.SGD(model.parameters(),lr0.1)# 训练forepochinrange(1000):optimizer.zero_grad()predmodel(X)losscriterion(pred,y)loss.backward()optimizer.step()ifepoch%2000:print(fEpoch{epoch}, Loss:{loss.item():.4f})# 测试withtorch.no_grad():outputmodel(X)print(\n预测结果:)foriinrange(4):print(f输入:{X[i].tolist()}- 预测:{output[i].item():.4f}(真实:{y[i].item()}))输出示例Epoch 0, Loss: 0.7032 Epoch 200, Loss: 0.0321 ... 预测结果: 输入: [0.0, 0.0] - 预测: 0.0123 (真实: 0.0) 输入: [0.0, 1.0] - 预测: 0.9876 (真实: 1.0) ...✅ 成功解决 XOR五、万能近似定理Universal Approximation Theorem定理一个具有单隐藏层和足够多神经元的前馈神经网络只要使用非线性激活函数就可以以任意精度逼近任何定义在紧集上的连续函数。这意味着理论上一个隐藏层就足够强大。但实践中深层网络更高效用更少参数表达复杂函数。总结概念关键点感知器线性模型无法解决 XORMLP引入隐藏层 非线性激活 → 解决非线性问题激活函数赋予非线性能力ReLU 是默认选择网络结构输入→隐藏→输出深度/宽度需平衡资料关注公众号咚咚王giteehttps://gitee.com/wy18585051844/ai_learning《Python编程从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计第四版 (盛骤) 》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论》《西瓜书周志华-机器学习》《TensorFlow机器学习实战指南》《Sklearn与TensorFlow机器学习实用指南》《模式识别第四版》《深度学习 deep learning》伊恩·古德费洛著 花书《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》《深入浅出神经网络与深度学习(迈克尔·尼尔森MichaelNielsen》《自然语言处理综论 第2版》《Natural-Language-Processing-with-PyTorch》《计算机视觉-算法与应用(中文版)》《Learning OpenCV 4》《AIGC智能创作时代》杜雨张孜铭《AIGC原理与实践零基础学大语言模型、扩散模型和多模态模型》《从零构建大语言模型中文版》《实战AI大模型》《AI 3.0》