第二章 深度学习基础回顾:神经网络原理、激活函数、损失函数、优化器、过拟合与正则化

各位同学好,我是老张。在反洗钱领域摸爬滚打了十几年,从规则引擎时代一路干到深度学习时代。今天咱们聊聊深度学习的基础,这些东西看着基础,但我在项目中吃过不少亏,希望能帮你们少走弯路。

2.1 神经网络原理:从感知机到多层网络

神经网络这东西,说白了就是模仿人脑的神经元结构。但别想得太玄乎,本质上就是个数学函数。

感知机:最简单的神经网络单元。输入乘以权重,加上偏置,过个激活函数,输出结果。公式长这样:

y = f(w1*x1 + w2*x2 + ... + wn*xn + b)

我在做反洗钱特征工程时,一开始就用单层感知机试过。结果呢?连异或问题都搞不定。后来才明白,单层感知机只能处理线性可分问题。

多层感知机(MLP):把多个感知机堆叠起来,就有了隐藏层。隐藏层越多,网络越深,能学到的特征就越抽象。

核心思想:每一层都在做特征变换。浅层学边缘、纹理,深层学语义、模式。在反洗钱场景里,浅层可能学交易金额、频率,深层就能学出洗钱团伙的关联模式。

我习惯把神经网络看作一个「万能函数逼近器」。只要层数够深、神经元够多,理论上能拟合任何复杂函数。但要注意,不是越深越好,后面会讲。

2.2 激活函数:给网络注入非线性

如果没有激活函数,多层网络就退化成单层线性变换,那跟线性回归有啥区别?激活函数就是给网络注入「非线性」的关键。

激活函数 公式 特点 反洗钱场景建议
Sigmoid σ(x) = 1/(1+e^(-x)) 输出0-1,适合二分类;但容易梯度消失 输出层用,隐藏层慎用
Tanh tanh(x) = (e^x-e^(-x))/(e^x+e^(-x)) 输出-1到1,零中心化;仍有梯度消失 比Sigmoid好点,但也不推荐隐藏层
ReLU f(x) = max(0, x) 计算快,缓解梯度消失;但神经元可能「死掉」 隐藏层首选,我基本都用它
Leaky ReLU f(x) = max(αx, x) 解决ReLU死亡问题 如果ReLU效果不好,试试这个

⚠️ 我曾经在反洗钱模型里用了Sigmoid做隐藏层,结果训练到一半梯度就消失了,模型死活不收敛。后来换成ReLU,问题立马解决。记住:隐藏层优先用ReLU及其变体。

为什么会梯度消失?你想想看,Sigmoid在两端导数接近0,反向传播时梯度连乘,越传越小。深层网络基本学不动。

2.3 损失函数:衡量模型好坏的标准

损失函数就是告诉模型「你错得有多离谱」。不同的任务用不同的损失函数。

回归任务:

  • 均方误差(MSE):L = (y_pred - y_true)²。对异常值敏感,适合误差服从高斯分布的场景。
  • 平均绝对误差(MAE):L = |y_pred - y_true|。对异常值更鲁棒,但梯度恒定,收敛慢。

分类任务:

  • 交叉熵损失:L = -[y*log(p) + (1-y)*log(1-p)]。二分类用这个,多分类用多类别交叉熵。

💡 在反洗钱场景中,正负样本极度不平衡(正常交易占99.9%)。我建议用加权交叉熵或Focal Loss,给少数类(洗钱交易)更高的权重。这个后面章节会细讲。

我个人习惯:分类问题无脑用交叉熵,回归问题看数据分布。如果数据有大量异常值,MAE比MSE靠谱。

2.4 优化器:让模型学会参数

有了损失函数,怎么让参数往正确的方向更新?优化器就是干这个的。

梯度下降(GD):最原始的方法,每次用全部数据计算梯度。太慢了,大数据集根本跑不动。

随机梯度下降(SGD):每次用一个样本更新参数。快是快了,但震荡严重,收敛不稳定。

小批量梯度下降(Mini-batch GD):折中方案,每次用一小批数据(比如32、64个样本)。实际中最常用。

自适应优化器:

  • Adam:结合了Momentum和RMSprop的优点,自适应学习率。我90%的场景都用它。
  • AdamW:Adam的改进版,加了权重衰减解耦,正则化效果更好。

核心经验:Adam是「万金油」,基本不用调参就能用。但如果你追求极致精度,可以先用Adam快速找到最优区域,再换SGD精调。

我曾经在反洗钱模型里用SGD,调学习率调了一周都没调好。换成Adam,默认参数直接收敛。嗯,这里要注意:Adam虽然好用,但有时会泛化性差一点,需要配合正则化。

2.5 过拟合与正则化:防止模型「死记硬背」

过拟合是深度学习最大的坑。模型在训练集上表现完美,一到测试集就拉胯。说白了,模型把噪声也学进去了。

怎么判断过拟合?

  • 训练损失持续下降,验证损失先降后升
  • 训练精度接近100%,验证精度差一大截

正则化方法:

方法 原理 我的使用建议
L1正则化 在损失函数上加权重绝对值之和 适合特征选择,让不重要权重变0
L2正则化 在损失函数上加权重平方和 最常用,让权重变小但不为0
Dropout 训练时随机丢弃一部分神经元 我习惯设0.5,效果不错
早停法 验证损失不再下降时停止训练 必须用,省时省力
数据增强 对输入数据做变换,增加多样性 反洗钱场景可以加噪声、时间偏移

⚠️ 我曾经在反洗钱模型里没加正则化,训练了200个epoch,训练精度99.9%,验证精度只有60%。后来加了L2和Dropout,验证精度直接提到85%。别偷懒,正则化一定要加。

你想想看,反洗钱数据里正常交易和异常交易的比例可能是10000:1。如果不做正则化,模型很容易学成「把所有交易都判为正常」,因为这样准确率也有99.99%。但我们要抓的是那0.01%的异常啊!

2.6 本章知识体系总览

下面这张图是我自己画的,把本章的核心知识点串起来了。建议保存下来,后面学具体模型时回来对照。

深度学习基础 神经网络原理 感知机 → 多层感知机 → 万能逼近 激活函数 Sigmoid / Tanh / ReLU / Leaky ReLU 损失函数 MSE / MAE / 交叉熵 / Focal Loss 优化器 SGD / Adam / AdamW 过拟合与正则化 L1/L2 / Dropout / 早停 / 数据增强 💡 反洗钱场景核心要点 1. 隐藏层用ReLU,输出层根据任务选 2. 类别不平衡用加权损失或Focal Loss 3. 正则化必须加,Dropout + L2是黄金组合

💡 这张图我建议你打印出来贴墙上。每次调参时看一眼,能帮你快速定位问题出在哪个环节。

好了,深度学习基础就讲到这里。这些概念看着简单,但真正用好需要大量实践。我在反洗钱项目里踩过的坑,后面章节会一个一个给你们拆解。记住:理论是地图,实践才是走路。


公众号:蓝海资料掘金营,微信deep3321