3、深度学习基础(上):感知机、多层感知机、激活函数、损失函数

好,咱们正式开始啃深度学习的基础。这一章我把它叫做「地基中的地基」。你想想看,后面要讲的色彩重建、HDR 融合,本质上都是在这些基础模块上搭积木。如果感知机怎么工作的你都没搞明白,那后面看网络结构就跟看天书一样。

我个人习惯,讲理论之前先问一个问题:一个神经元,到底能不能学会「异或」? 这个问题当年可是直接导致了神经网络第一次寒冬。咱们带着这个疑问往下看。

3.1 感知机:最简单的「决策者」

感知机(Perceptron)是 1957 年由 Frank Rosenblatt 提出的。说白了,它就是模仿生物神经元的一个简化模型:输入一堆信号,每个信号有不同权重,加权求和后超过某个阈值就「激活」,否则就「静默」。

核心公式:

输出 = sign( w₁x₁ + w₂x₂ + ... + wₙxₙ + b )

其中 sign(z) = 1 if z ≥ 0 else 0

我在项目中遇到过有人把感知机当万能分类器用,结果在非线性问题上碰了一鼻子灰。为什么?因为感知机本质上只能画一条直线(超平面)把数据分开。它解决不了线性不可分问题。

避坑指南: 我曾经在某个早期版本的 ISP 参数预测模型里,试图用单层感知机做色温分类。结果发现只要光照场景稍微复杂一点(比如混合光源),模型就彻底崩溃。后来我才意识到,单层感知机的表达能力太有限了——它连一个简单的 XOR 问题都搞不定。

3.2 多层感知机:给神经元「叠 buff」

既然单层不行,那就叠多层。多层感知机(MLP)就是在输入和输出之间加了一层或多层「隐藏层」。每一层都是全连接的,层与层之间通过激活函数引入非线性。

你想想看,为什么加了隐藏层就能解决 XOR 问题?因为隐藏层相当于把原始输入空间做了一个非线性变换,把原来线性不可分的数据映射到一个新的、线性可分的空间里。这个思想,后来在色彩重建中也被大量使用——把 RGB 空间映射到更丰富的特征空间。

我的经验: 在 AI ISP 的色调映射模块里,我习惯用 3-4 层 MLP 做中间特征提取。层数太少,非线性表达能力不够;层数太多,训练不稳定且容易过拟合。一般来说,隐藏层宽度从输入维度开始逐层减半是个不错的起点。

3.3 激活函数:给网络注入「灵魂」

没有激活函数的多层网络,叠再多层也只是线性变换的复合——说白了还是线性。激活函数就是那个「非线性开关」。下面我重点讲三个最常用的。

3.3.1 Sigmoid:经典的「S 型曲线」

Sigmoid 把任意实数压缩到 (0, 1) 之间。公式很简单:σ(z) = 1 / (1 + e⁻ᶻ)。

优点:输出可以解释为概率,平滑可导。
缺点:两端梯度几乎为 0,深层网络容易梯度消失。

我曾经踩过的坑: 在训练一个 8 层的色彩校正网络时,我用 Sigmoid 做所有隐藏层的激活函数。结果训练到第 3 个 epoch 损失就不动了。一查梯度,靠近输入层的梯度已经小到 10⁻⁸ 级别。这就是典型的梯度消失。后来我把中间层换成 ReLU,问题立刻解决。

3.3.2 Tanh:零中心的「升级版 Sigmoid」

Tanh 输出范围是 (-1, 1),零中心。公式:tanh(z) = (eᶻ - e⁻ᶻ) / (eᶻ + e⁻ᶻ)。

相比 Sigmoid,Tanh 的梯度更大,收敛更快。但它依然有梯度饱和的问题。

3.3.3 ReLU:当前工业界的「默认选择」

ReLU(Rectified Linear Unit)就是 f(z) = max(0, z)。简单粗暴。

优点:计算极快,正区间梯度恒为 1,有效缓解梯度消失。
缺点:负区间输出恒为 0,可能导致「神经元死亡」——一旦某个神经元在训练中落入负区间,它可能永远无法恢复。

我的建议: 在 AI ISP 的 HDR 融合网络中,我默认使用 ReLU 作为隐藏层激活函数。如果发现大量神经元死亡(比如训练过程中某些通道的输出一直为 0),可以换成 Leaky ReLU 或 PReLU。这些变体在负区间保留了一个小斜率,能有效避免死亡问题。

下面这张图展示了三种激活函数的形状对比:

三种常用激活函数对比 Sigmoid -∞ +∞ 1 0 Tanh -∞ +∞ 1 -1 ReLU -∞ +∞ max 0 Sigmoid 和 Tanh 在两端梯度饱和,ReLU 在正区间梯度恒为 1

3.4 损失函数:告诉模型「你错在哪」

损失函数衡量的是模型预测值和真实值之间的差距。训练过程就是不断减小这个差距。不同的任务需要不同的损失函数。

任务类型 常用损失函数 公式 我的使用场景
回归(如色彩值预测) 均方误差(MSE) L = (y - ŷ)² 色彩重建中的 RGB 值回归
回归(对异常值鲁棒) 平均误差(MAE) L = |y - ŷ| HDR 融合中的亮度映射
二分类 二元交叉熵(BCE) L = -[y log(ŷ) + (1-y) log(1-ŷ)] 过曝/欠曝区域检测
多分类 交叉熵(CE) L = -Σ yᵢ log(ŷᵢ) 色温分类

关键理解: 损失函数的选择直接影响梯度的大小和方向。比如在 HDR 融合中,如果使用 MSE,模型会对大误差(如过曝区域)非常敏感,导致整体色调偏暗。我一般会先用 MAE 做粗调,再用 MSE 做精调,或者直接使用 Huber Loss(MSE 和 MAE 的混合体)。

3.5 本章小结:一张图看懂基础

下面这张 SVG 图把感知机、MLP、激活函数和损失函数的关系串起来了。你可以把它当作本章的知识地图。

深度学习基础(上)知识结构图 感知机 多层感知机 (MLP) 激活函数 损失函数 线性分类器 无法解决 XOR 隐藏层 + 非线性 万能近似定理 Sigmoid / Tanh / ReLU 梯度消失 / 神经元死亡 MSE / MAE / Huber 交叉熵 / BCE 感知机 → MLP(引入隐藏层)→ 激活函数(引入非线性)→ 损失函数(指导优化方向)

嗯,这一章的内容就到这里。感知机是起点,MLP 是骨架,激活函数是灵魂,损失函数是标尺。把这四个概念吃透了,后面讲反向传播、梯度下降、网络训练技巧的时候,你就能跟上节奏了。