深度学习基础回顾:神经网络核心概念
各位同学,欢迎来到第二章。这一章咱们要聊的是深度学习最底层的那些东西——神经元、激活函数、前向反向传播、损失函数、优化器,还有过拟合和正则化。
说实话,这些概念你如果只是看书,会觉得挺枯燥的。但我做嵌入式AI这些年,发现一个规律:凡是能把这几块吃透的人,后面做模型压缩、定点量化、DSP移植的时候,基本不会踩大坑。反过来,那些一上来就调库、跑模型的人,遇到性能瓶颈往往束手无策。
所以这一章,我会结合我实际项目中的经验,把这些核心概念掰开了讲。你跟着我走一遍,后面会轻松很多。
2.1 神经元与激活函数
神经网络的灵感确实来自人脑,但你别把它想得太玄乎。说白了,一个神经元就是一个数学函数:输入加权求和,再加一个偏置,最后过一下激活函数。
公式长这样:
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
a = f(z)
其中 w 是权重,x 是输入,b 是偏置,f 是激活函数。
我在项目中见过不少新手,觉得激活函数随便选一个就行。其实不是的。激活函数决定了网络的表达能力,也直接影响训练能不能收敛。
常用的激活函数有这些:
| 激活函数 | 公式 | 输出范围 | 优点 | 缺点 |
|---|---|---|---|---|
| Sigmoid | σ(x) = 1/(1+e⁻ˣ) | (0, 1) | 平滑、可解释性强 | 梯度消失、输出非零中心 |
| Tanh | tanh(x) = (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ) | (-1, 1) | 零中心、比Sigmoid好 | 仍有梯度消失问题 |
| ReLU | ReLU(x) = max(0, x) | [0, +∞) | 计算快、缓解梯度消失 | 神经元死亡(负半轴梯度为0) |
| Leaky ReLU | LReLU(x) = max(αx, x) | (-∞, +∞) | 缓解神经元死亡 | α需要调参 |
2.2 前向传播与反向传播
这两个概念是神经网络训练的基石。我换个角度给你讲——前向传播是“猜”,反向传播是“改”。
前向传播:输入数据从输入层开始,一层一层往前算,最后得到输出。这个过程就是网络在做预测。
反向传播:算出来的预测值和真实值有差距,这个差距就是损失。然后从输出层开始,一层一层往回算,算出每个参数对损失的贡献(梯度),最后用梯度去更新参数。
我曾经在调试一个语音唤醒模型时,发现训练了十几个epoch损失就是不降。后来一查,是反向传播时梯度计算写错了,把链式法则的某一步漏掉了。嗯,这种错误很难查,但一旦你理解了反向传播的数学本质,就能快速定位。
反向传播的核心就是链式法则:
∂L/∂w = ∂L/∂a · ∂a/∂z · ∂z/∂w
其中L是损失,a是激活输出,z是加权和,w是权重。
2.3 损失函数与优化器
损失函数衡量的是“模型猜得有多离谱”。优化器决定的是“怎么调整参数才能让损失变小”。
常见的损失函数:
- 均方误差(MSE):回归任务常用。公式是 (ŷ - y)²。对异常值敏感。
- 交叉熵损失(Cross-Entropy):分类任务常用。配合Softmax使用效果很好。
- Huber损失:MSE和MAE的结合,对异常值不那么敏感。我在做传感器数据拟合时经常用。
优化器这块,我建议你记住几个关键点:
| 优化器 | 特点 | 适用场景 |
|---|---|---|
| SGD | 简单、稳定、需要手动调学习率 | 小数据集、需要精细调参 |
| Adam | 自适应学习率、收敛快 | 大多数场景的首选 |
| RMSprop | 对非平稳目标效果好 | RNN、在线学习 |
我个人习惯:做原型验证时先用Adam,快速看到效果。等模型结构稳定了,再切回SGD+学习率衰减,往往能得到更好的泛化性能。这个技巧在我做关键词唤醒模型时屡试不爽。
2.4 过拟合与正则化
过拟合,说白了就是模型把训练数据背下来了,但换个新数据就懵了。你想想看,这在实际部署中多可怕——在实验室跑得好好的,一到现场就翻车。
我遇到过最夸张的一次,一个图像分类模型在测试集上准确率98%,但部署到产线上之后,因为光照条件变了,准确率直接掉到60%。后来一查,模型过拟合了训练数据中的光照特征。
正则化就是用来治过拟合的。常用的方法有:
- L1/L2正则化:在损失函数后面加一个惩罚项。L1会让权重变稀疏,L2会让权重变小。
- Dropout:训练时随机让一部分神经元失活。相当于每次训练一个不同的子网络。
- 早停(Early Stopping):验证集损失不再下降时就停止训练。
- 数据增强:对训练数据做随机变换,相当于变相增加数据量。
2.5 本章知识体系
下面这张图把本章的核心知识点串起来了。你可以把它当作一个思维导图来看:
这张图把本章的四个核心模块串在了一起。你从中心节点出发,沿着箭头走一遍,就能建立起完整的知识框架。
好了,第二章的内容就到这里。这些概念是后面所有章节的基础——不管是模型剪枝、量化,还是DSP上的算子优化,都离不开这些底层的理解。你花时间把这章吃透,后面会越走越顺。