news 2026/5/4 3:47:47

大模型教我成为大模型算法工程师之day7:神经网络基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型教我成为大模型算法工程师之day7:神经网络基础

Day 7: 神经网络基础 - 深度学习的敲门砖

导读:欢迎来到“60天算法工程师”计划的第二个板块——深度学习基础。在结束了数学基础与传统机器学习的学习后,从今天开始,我们将正式进入深度学习的世界。

深度学习(Deep Learning)的核心在于使用多层神经网络来从数据中自动学习表示(Representation)。今天作为深度学习的第一天,我们将剥开复杂的网络结构外衣,回归本源,探讨神经网络最基础的构建模块:感知机、多层网络、激活函数、损失函数以及支撑这一切训练的基石——反向传播算法。


1. 从感知机到多层网络 (Perceptron to MLP)

1.1 感知机 (Perceptron)

感知机是神经网络的鼻祖,由 Frank Rosenblatt 在 1957 年提出。它是一个简单的线性二分类模型。

数学公式非常直观:
y=f(wTx+b) y = f(\mathbf{w}^T \mathbf{x} + b)y=f(wTx+b)
其中fff是阶跃函数(Step Function)。

局限性:感知机最大的问题是无法解决线性不可分问题,最著名的例子就是“异或”(XOR)问题。这导致了神经网络研究的第一次寒冬。

1.2 多层感知机 (Multi-Layer Perceptron, MLP)

为了解决非线性问题,引入了隐藏层(Hidden Layer)非线性激活函数

  • 隐藏层:将输入空间映射到高维特征空间,使其线性可分。
  • 非线性:如果只有多层线性变换,无论多少层叠加,最终等效于单层线性变换(矩阵乘法的结合律)。激活函数是赋予神经网络非线性能力的关键

万能逼近定理 (Universal Approximation Theorem)
一个包含足够多神经元的单隐层前馈神经网络,可以以任意精度逼近任意连续函数。


2. 激活函数 (Activation Functions)

激活函数决定了神经元是否被“激活”。现代深度学习对激活函数的选择非常考究。

2.1 传统派:Sigmoid 与 Tanh

  • Sigmoid:σ(x)=11+e−x\sigma(x) = \frac{1}{1+e^{-x}}σ(x)=1+ex1,输出(0,1)(0, 1)(0,1)
    • 缺点:易导致梯度消失(导数最大值仅0.25);输出不是零中心(Zero-centered);指数计算昂贵。
  • Tanh:tanh⁡(x)=ex−e−xex+e−x\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}tanh(x)=ex+exexex,输出(−1,1)(-1, 1)(1,1)
    • 优点:零中心。
    • 缺点:依然存在梯度消失问题。

2.2 现代派:ReLU 家族

  • ReLU (Rectified Linear Unit):f(x)=max⁡(0,x)f(x) = \max(0, x)f(x)=max(0,x)
    • 优点:计算简单;正区间梯度为1,缓解梯度消失;带来稀疏性。
    • 缺点Dead ReLU问题(负区间梯度为0,神经元可能永久“死亡”)。
  • Leaky ReLU / PReLU: 在负区间给予一个小的斜率(如 0.01),解决 Dead ReLU。

2.3 前沿派:GELU 与 Swish

现代大模型(如 BERT, GPT, EfficientNet)常用的激活函数。

  • Swish:f(x)=x⋅σ(βx)f(x) = x \cdot \sigma(\beta x)f(x)=xσ(βx)
    • 由 Google 搜索得出,具有平滑、非单调特性。
  • GELU (Gaussian Error Linear Unit):xΦ(x)x \Phi(x)xΦ(x)
    • 在 BERT 中被普及。它不仅仅是激活,还包含随机正则化的思想(Dropout 的期望)。
    • 特点:在x=0x=0x=0附近平滑弯曲,允许小的负值。
激活函数适用场景备注
Sigmoid二分类输出层隐藏层基本不用
ReLUCNN, 浅层 MLP默认首选,高效
GELUTransformer (BERT/GPT)大模型标配,性能更优

3. 损失函数设计 (Loss Functions)

损失函数衡量模型预测值与真实值之间的差距,是优化的“指路明灯”。

3.1 回归任务

  • MSE (L2 Loss):1N∑(y−y^)2\frac{1}{N}\sum (y - \hat{y})^2N1(yy^)2。对异常值敏感。
  • MAE (L1 Loss):1N∑∣y−y^∣\frac{1}{N}\sum |y - \hat{y}|N1yy^。鲁棒性强,但零点不可导。
  • Huber Loss: 结合了 MSE 和 MAE 的优点。

3.2 分类任务

  • 交叉熵损失 (Cross Entropy Loss):
    L=−∑iyilog⁡(y^i) L = - \sum_{i} y_i \log(\hat{y}_i)L=iyilog(y^i)
    本质是衡量两个概率分布(真实分布与预测分布)之间的差异(KL散度)。
    • 二分类:Binary Cross Entropy (BCE)。
    • 多分类:Categorical Cross Entropy。

3.3 特殊场景

  • Focal Loss: 用于解决类别极度不平衡问题(如目标检测)。通过降低易分类样本的权重,让模型专注于难分类样本。
    FL(pt)=−αt(1−pt)γlog⁡(pt) FL(p_t) = -\alpha_t (1-p_t)^\gamma \log(p_t)FL(pt)=αt(1pt)γlog(pt)

4. 反向传播与计算图 (Backpropagation & Computational Graph)

这是深度学习能够训练的核心机制。

4.1 计算图 (Computational Graph)

将神经网络的计算过程表示为有向无环图(DAG)。

  • 节点:操作(加法、乘法、激活函数)。
  • :数据(Tensor)。

4.2 链式法则 (Chain Rule)

反向传播本质上就是链式法则的递归应用。
假设y=f(u),u=g(x)y = f(u), u = g(x)y=f(u),u=g(x),则:
∂y∂x=∂y∂u⋅∂u∂x \frac{\partial y}{\partial x} = \frac{\partial y}{\partial u} \cdot \frac{\partial u}{\partial x}xy=uyxu

4.3 自动微分 (Autograd)

现代框架(PyTorch/TensorFlow)不需要手动推导梯度。

  • 前向传播 (Forward):计算输出,并建立计算图,缓存中间变量。
  • 反向传播 (Backward):从 Loss 出发,沿着图反向遍历,计算每个节点的梯度。

5. 代码实践:PyTorch 实现一个简单的 MLP

我们用 PyTorch 实现一个简单的 MLP 来拟合非线性数据(模拟 XOR 问题或简单的函数拟合)。

importtorchimporttorch.nnasnnimporttorch.optimasoptimimportmatplotlib.pyplotasplt# 1. 准备数据 (模拟一个非线性关系 y = x^2)x=torch.unsqueeze(torch.linspace(-1,1,200),dim=1)# shape=(200, 1)y=x.pow(2)+0.1*torch.normal(torch.zeros(*x.size()))# 加入噪声# 2. 定义 MLP 网络classMLP(nn.Module):def__init__(self):super(MLP,self).__init__()# 隐藏层:输入1维 -> 隐藏10维self.hidden=nn.Linear(1,10)# 激活函数:使用 ReLUself.act=nn.ReLU()# 输出层:隐藏10维 -> 输出1维self.output=nn.Linear(10,1)defforward(self,x):x=self.hidden(x)x=self.act(x)x=self.output(x)returnx net=MLP()print(net)# 3. 定义损失函数和优化器criterion=nn.MSELoss()optimizer=optim.SGD(net.parameters(),lr=0.1)# 4. 训练循环fortinrange(2000):prediction=net(x)# 前向传播loss=criterion(prediction,y)# 计算 Lossoptimizer.zero_grad()# 梯度清零loss.backward()# 反向传播 (计算梯度)optimizer.step()# 更新参数ift%200==0:print(f'Step{t}, Loss:{loss.item():.4f}')# 5. 简单验证 (不可视化模式下)print(f"Final Loss:{loss.item():.4f}")# 我们可以看到 Loss 随着训练逐步下降,说明网络学到了 y=x^2 的非线性关系

关键点解析:

  1. nn.Module: 所有网络的基类。
  2. zero_grad(): 必须步骤。因为 PyTorch 默认会累积梯度(便于 RNN 等操作),所以在每一轮更新前需清空。
  3. backward(): 自动微分的魔法入口。

6. 总结与下期预告

今天我们通过 MLP、激活函数和反向传播,推开了深度学习的大门。神经网络不再是神秘的黑盒,而是一堆线性变换与非线性激活的组合,在微积分的指导下不断优化。

核心考点总结

  • 为什么需要非线性激活函数?(为了逼近复杂函数)
  • Sigmoid 为什么会梯度消失?(导数最大值小且两端饱和)
  • GELU 相比 ReLU 好在哪里?(平滑性,概率解释)
  • 交叉熵与 MSE 的区别?(分类 vs 回归,概率分布匹配 vs 距离度量)

下期预告
模型建好了,怎么训练得又快又好?Day 8 我们将深入探讨优化器(SGD, AdamW)与 训练技巧(BatchNorm, Dropout, LR Schedule),这些是炼丹师必备的调参内功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 9:14:56

从零构建智能Agent编排系统,掌握Docker Swarm与K8s协同秘技

第一章:智能 Agent 的 Docker 容器编排策略在构建分布式智能 Agent 系统时,Docker 容器化技术为服务的隔离性、可移植性和弹性伸缩提供了坚实基础。然而,随着 Agent 数量增长和交互复杂度上升,单一容器部署已无法满足需求&#xf…

作者头像 李华
网站建设 2026/5/3 9:14:54

Docker Buildx构建缓慢?你必须知道的7个Agent镜像优化实践

第一章:Docker Buildx构建缓慢的根源分析在使用 Docker Buildx 进行多平台镜像构建时,开发者常遇到构建速度显著下降的问题。该现象并非由单一因素导致,而是多种底层机制共同作用的结果。资源分配不足 Buildx 构建依赖于 BuildKit 引擎&#…

作者头像 李华
网站建设 2026/5/3 9:14:55

从安装到运行:VSCode量子项目部署全流程(附官方插件清单)

第一章:VSCode 的量子开发环境搭建 在当前量子计算快速发展的背景下,使用现代化编辑器进行高效开发变得尤为重要。Visual Studio Code(VSCode)凭借其强大的扩展生态和轻量级架构,成为搭建量子开发环境的理想选择。通过…

作者头像 李华
网站建设 2026/5/2 16:25:58

Arduino UNO Q 从 Arduino Cloud 远程控制闪烁 LED

本示例面向对物联网与 Arduino 生态感兴趣的初学者与进阶者,一步一步实现“Blinking LED from Arduino Cloud”示例的原理与操作方案。我们将通过Arduino Cloud 网页端的仪表盘创建一个开关,远程控制Arduino UNO Q 板上自带的LED。要实现这一点&#xff…

作者头像 李华
网站建设 2026/5/3 0:30:19

8 个自考论文降重工具,AI 免费网站推荐

8 个自考论文降重工具,AI 免费网站推荐 论文写作的“重担”与“焦虑” 对于自考学生而言,撰写一篇高质量的论文不仅是对知识的综合检验,更是对时间、精力和耐心的极限挑战。从选题到开题,从资料收集到文献综述,再到最终…

作者头像 李华
网站建设 2026/5/1 0:52:50

离网下基于下垂控制的 T 型三电平逆变器研究

离网下三相不平衡负载,基于下垂控制的T型三电平逆变器,采用正负序分离四环控制,正序电压电流双闭环,负序电压电流双闭环,中点电位平衡控制,采用SPWM调制。 1.提供下垂控制原理,参数计算方法以及相关文献 2.…

作者头像 李华