🧠 深度学习详解:激活函数 · 反向传播 · 梯度下降 · 常见网络
神经网络是怎么「学会」的?激活函数、前向/反向传播、梯度下降、常见网络架构,一次讲透。
神经元 & 激活函数
🧠 一个神经元
神经元 = 权重 × 输入 求和 + 偏置,再经过激活函数输出。
无数个神经元分层连接,就组成了神经网络。
🚫 为什么需要非线性
如果只有线性运算,堆再多层也还是线性,能力有限。
激活函数引入非线性,网络才有能力拟合各种复杂规律。
| 激活函数 | 作用 | 特点 | 常见场景 |
|---|---|---|---|
| Sigmoid | 压到 (0,1) | 平滑,但梯度易消失 | 二分类输出 |
| Tanh | 压到 (-1,1) | 零中心,比 sigmoid 好 | RNN 常用 |
| ReLU | max(0, x) | 简单快,防梯度消失 | 隐藏层默认 |
| Softmax | 变成概率分布 | 所有输出总和=1 | 多分类输出 |
前向传播 & 反向传播
📤 前向传播
数据从输入层一路算到输出层,得到预测结果。这是「顺着」走一遍。
🔁 反向传播
算出预测和答案的损失后,从输出层往前逐层算每个参数的梯度(链式法则),告诉每个权重「该往哪调、调多少」。
反向传播的本质,就是用链式法则高效计算梯度——从输出层往输入层一路「回传」每个参数对损失的影响。
没有它,深度网络根本没法高效训练。
梯度下降 & 优化器
⛰️ 梯度下降
把损失想象成一座山谷,梯度就是当前最陡的方向。
沿梯度的反方向迈一小步更新参数,损失就下降,直到逼近谷底(最优解)。学习率 = 步长。
🚀 优化器
基础版 SGD(每次按一个样本/批次更新);进阶版带动量加速、Adam 自适应调步长,收敛更快更稳。
| 优化器 | 思想 | 特点 |
|---|---|---|
| SGD | 沿梯度直接更新 | 简单,但可能震荡、收敛慢 |
| Momentum | 加「动量」惯性 | 减小震荡,加速收敛 |
| Adam | 自适应步长 + 动量 | 默认好用,收敛快、稳定 |
常见网络架构
🖼️ CNN 卷积神经网络
用卷积核在图像上滑动,自动提取局部特征(边缘、纹理、形状)。
特别擅长图像:分类、检测、分割。
⏱️ RNN 循环神经网络
按顺序处理数据,靠「记忆」前面的内容理解上下文。
适合序列:文本、语音、时间序列。缺点是难并行、长序列会忘。
| 网络 | 擅长 | 核心机制 | 代表应用 |
|---|---|---|---|
| CNN | 图像 / 空间 | 卷积提取局部特征 | 图像分类、目标检测 |
| RNN | 序列 / 时间 | 按顺序记忆上下文 | 文本、语音、时间序列 |
| Transformer | 序列 + 并行 | 注意力机制 | GPT、BERT 等大模型 |
现在的趋势:Transformer 成了主流——它用注意力机制能并行处理序列,摆脱了 RNN 的顺序瓶颈,成为大模型(GPT、Claude)的底座。
但 CNN、RNN 的思路仍是基础,很多场景还在用。
一张图记住整条训练链路
深度学习 = 神经网络(权重 + 激活函数引入非线性)→ 前向算预测 → 损失衡量差距 → 反向传播算梯度 → 梯度下降更新权重 → 循环直到收敛。CNN 管图像、RNN 管序列、Transformer 靠注意力成为大模型底座。
激活函数给神经元引入非线性。因为如果只有线性运算,网络堆多少层都还是线性组合,拟合不了复杂规律。加了激活函数(比如 ReLU、Sigmoid),网络才有能力逼近各种函数。
反向传播是“算梯度”的方法:用链式法则从输出层往前逐层,算出每个参数对损失的影响。梯度下降是“更新参数”的方法:损失像个山谷,沿梯度的反方向迈一小步,损失就下降,一直逼近最优解。学习率就是那一步的大小。
CNN 用卷积提取局部特征,擅长图像;RNN 按顺序处理序列,靠记忆理解上下文,但难并行、长序列会忘;Transformer 用注意力机制,能并行处理序列、抓长距离关系,成了现在大模型的底座。