4. 深度学习基础回顾:快速回顾全连接网络(DNN)、卷积神经网络(CNN)、循环神经网络(RNN/LSTM)的核心原理,为后续融合算法打基础
说实话,很多做神经信号处理的朋友,一上来就急着搞融合算法,结果发现连基础网络都调不明白。我个人习惯是,先把地基打牢。这一章咱们快速过一遍三大经典网络的核心逻辑,为后续的EEG+深度学习融合铺路。
核心观点: 全连接网络(DNN)是万能函数逼近器,卷积神经网络(CNN)是空间特征提取器,循环神经网络(RNN/LSTM)是时序建模器。神经信号处理中,三者各有用途,也经常组合使用。
4.1 全连接网络(DNN)—— 最朴素的“万能砖”
DNN说白了就是多层感知机的堆叠。每一层做的事情很简单:y = σ(Wx + b)。嗯,就这。但别小看它,理论上只要层数够深、神经元够多,它能拟合任何连续函数。
我在项目中遇到过一个典型的坑:用纯DNN处理原始EEG信号。数据维度是64通道×1000时间点,直接拉平变成64000维输入。结果呢?模型参数量爆炸,训练慢得像蜗牛,还严重过拟合。后来我才意识到,DNN虽然万能,但它不擅长处理高维结构化数据——它把每个输入特征都当成独立的,完全忽略了空间和时间上的局部相关性。
避坑指南: 我曾经在脑电分类任务中,把DNN的隐藏层加到8层,结果训练集准确率99%,测试集只有60%。这就是典型的过拟合。对于神经信号这种高噪声数据,2-3层DNN往往就够用了,关键是要配合正则化(Dropout、L2)使用。
4.2 卷积神经网络(CNN)—— 空间特征的“扫描仪”
CNN的核心思想就三个字:局部连接。你想想看,一张图片里,相邻像素之间才有意义,相隔很远的像素基本没关系。EEG信号也一样——相邻通道之间的空间关系,比远距离通道重要得多。
CNN的三大法宝:
- 卷积核(Kernel):一个滑动的小窗口,提取局部特征。比如3×3的卷积核,只看周围9个点的信息。
- 权值共享:同一个卷积核在整个输入上滑动,参数是共享的。这大大减少了参数量。
- 池化(Pooling):下采样操作,保留主要特征,降低维度。我习惯用最大池化,因为它对噪声更鲁棒。
举个具体的例子。假设你有一个64通道的EEG信号,每个通道采样1000个时间点。用CNN处理时,你可以把它看作一个64×1000的“图像”。第一个卷积层用32个3×3的卷积核,输出就是32张特征图。每个特征图对应一种局部模式——比如某个脑区的α波活动。
我的经验: 在神经信号处理中,1D卷积(只在时间维度上滑动)往往比2D卷积更有效。因为EEG通道之间的空间关系并不像图像像素那样规整。我常用的做法是:先用1D卷积提取每个通道的时间特征,再用一个全连接层融合通道间的信息。
4.3 循环神经网络(RNN/LSTM)—— 时序依赖的“记忆体”
RNN的设计初衷很直观:处理序列数据。它的隐藏状态会随时间步传递,理论上能记住之前的信息。但实际应用中,标准RNN有个致命问题——梯度消失/爆炸。说白了就是,时间步一长,前面的信息就传不过来了。
LSTM(长短期记忆网络)就是来解决这个问题的。它引入了三个门控机制:
- 遗忘门:决定丢弃哪些旧信息。比如,一段EEG信号中的基线漂移,就该被遗忘。
- 输入门:决定哪些新信息要存入记忆。比如,一个突发的事件相关电位(ERP),就该被记住。
- 输出门:决定基于当前记忆输出什么。比如,判断当前时刻是否属于某个特定脑状态。
为什么会这样设计?因为LSTM通过门控机制,让梯度可以沿着时间步“无损”地反向传播。我刚开始学的时候也觉得门控机制很复杂,后来发现一个简单的理解方式:LSTM就像一个带“记事本”的人,遗忘门决定撕掉哪页,输入门决定写什么新内容,输出门决定读哪段给别人听。
实战建议: 处理EEG信号时,我通常用双向LSTM(BiLSTM)。因为脑电信号中,一个事件的影响往往在事件前后都有体现。比如,你看到一个人准备举手,他的运动皮层在动作前几百毫秒就开始有活动了。单向LSTM只能看到过去,双向LSTM能同时看到过去和未来。
4.4 三种网络的对比与选择
| 网络类型 | 核心优势 | 适用场景(神经信号) | 典型问题 |
|---|---|---|---|
| DNN | 万能拟合,实现简单 | 特征已经提取好,做最终分类 | 参数量大,易过拟合 |
| CNN | 局部特征提取,参数共享 | 空间模式识别(如脑区激活图) | 对时序依赖建模弱 |
| RNN/LSTM | 时序建模,记忆长程依赖 | 事件相关电位、脑状态切换 | 训练较慢,对长序列仍有挑战 |
实际项目中,我很少只用一种网络。比如做运动想象分类时,我会先用CNN提取空间特征(不同脑区的激活模式),再用LSTM建模时间动态(想象动作的时序变化),最后接一个DNN做分类。这种混合架构,往往比单一网络效果好得多。
4.5 本章知识体系总览
下面这张图,是我自己梳理的三大网络在神经信号处理中的定位。你可以把它当作一个快速参考。
这张图展示了我处理神经信号时的基本思路:原始信号进来后,根据任务需求选择不同的网络提取特征,最后在融合层组合这些特征。比如,做睡眠分期时,我会用CNN提取不同频段的空间模式,用LSTM建模睡眠阶段的时序转换,最后把两种特征拼接起来做分类。
一个小技巧: 刚开始做融合时,别急着上复杂结构。我习惯先用简单的特征拼接(concatenate)试试效果,如果效果不错,再考虑更高级的注意力机制或门控融合。很多时候,简单方法就够用了。
好了,这一章我们快速回顾了DNN、CNN、RNN/LSTM的核心原理。这些内容看起来基础,但我在实际项目中踩过的坑告诉我——基础不牢,地动山摇。下一章开始,我们会正式进入神经信号处理与深度学习的融合实战,到时候这些基础网络会以各种组合方式出现。
公众号:蓝海资料掘金营,微信deep3321