读论文前 · 地基
配套用法:先读本手册建立框架、跟着把 ★ 推导自己默一遍,再看对应视频补直觉。
你的底子:高数 / 线代 / 概率都有,C/C++ 与数据结构熟 —— 所以数学直接用,AI 概念从零讲,并配编程类比。
范围:只打地基。对比学习、域泛化、两阶段训练留到暑假精读。
一句话:找一个函数 $f$,使得 $f(x)\approx y$。$x$ 是输入(一段 EEG 信号),$y$ 是想要的输出(类别或一个角度)。我们不手写 $f$,而是给它一堆可调参数 $\theta$,再用数据把 $\theta$"调"出来。
C 的视角:以前你手写函数逻辑;机器学习是写一个带一堆可调系数的函数模板,让数据帮你把系数填好。
两类任务(贯穿你的三篇):分类(输出离散类别 —— FBMSNet、NeuroFusion-Trans)与回归(输出连续数值 —— NeuroDyGait 预测关节角度)。记住这条分界线,第 2 章的损失就是按它分的。
为什么必须分开?模型可能死记硬背训练集(过拟合)——训练准、没见过的数据差。我们要的是泛化。过拟合 = 训练好测试差(模型太复杂/数据太少);欠拟合 = 训练就差(模型太弱)。
单个神经元两步:先线性加权 $z=w\cdot x+b$,再套非线性 $a=\sigma(z)$。一整层写成矩阵:
$$ z = Wx + b, \qquad a = \sigma(z) $$$W$ 每一行对应一个神经元,$\sigma$ 逐元素作用。把很多层堆起来就是多层感知机 MLP。
关键事实:纯线性层一层套一层,整体还是线性的——
$$ W_2(W_1x+b_1)+b_2=(W_2W_1)x+(W_2b_1+b_2)=W'x+b' $$堆多少层都等价于一层,表达力极弱。激活函数提供非线性,深层网络才能拟合复杂关系。
所以可解释为"属于第 $i$ 类的概率"。FBMSNet 最后一层就是它。
设 $S=\sum_j e^{z_j}$,$\hat{y}_k=e^{z_k}/S$。
$$ \begin{aligned} k=i:&\quad \frac{\partial \hat{y}_i}{\partial z_i}=\frac{e^{z_i}S-e^{z_i}e^{z_i}}{S^2}=\hat{y}_i-\hat{y}_i^2=\hat{y}_i(1-\hat{y}_i)\\[4pt] k\neq i:&\quad \frac{\partial \hat{y}_k}{\partial z_i}=\frac{0-e^{z_k}e^{z_i}}{S^2}=-\hat{y}_k\hat{y}_i \end{aligned} $$统一写成 $\ \dfrac{\partial \hat{y}_k}{\partial z_i}=\hat{y}_k(\delta_{ki}-\hat{y}_i)$,其中 $\delta_{ki}=1\,(k=i)$ 否则 $0$。
损失 $L$ 衡量预测 $\hat{y}$ 离真值 $y$ 有多远。训练 = 调 $\theta$ 让 $L$ 最小。
误差平方再平均,大误差被放大(惩罚更重)。NeuroDyGait 的重建/预测损失都是它(论文式 1、2)。
为什么是平方?假设 $y=\hat{y}+\varepsilon$、$\varepsilon\sim N(0,\sigma^2)$,对它做最大似然估计、取对数后,最大化似然 $\Leftrightarrow$ 最小化 $\sum(y-\hat{y})^2$。即"高斯噪声下最大似然 = 最小化 MSE"。
真值 $y$ 是 one-hot,$\hat{y}$ 是 Softmax 输出:
$$ L_{CE}=-\sum_k y_k \log \hat{y}_k $$因 $y$ 是 one-hot,只剩正确类那项 $L=-\log\hat{y}_{\text{correct}}$。模型给正确类的概率越高,损失越小;给得越低,损失急剧变大。来源:最小化交叉熵 $\Leftrightarrow$ 最大化正确类似然 $\Leftrightarrow$ 最小化预测分布与真实分布的 KL 散度。
这是深度学习里最优雅、最该会的推导,结果干净到不可思议。
$$ \begin{aligned} \frac{\partial L}{\partial z_i} &=-\sum_k y_k\cdot\frac{1}{\hat{y}_k}\cdot\frac{\partial \hat{y}_k}{\partial z_i}\\[3pt] &=-\sum_k y_k\cdot\frac{1}{\hat{y}_k}\cdot\hat{y}_k(\delta_{ki}-\hat{y}_i)\\[3pt] &=-\sum_k y_k(\delta_{ki}-\hat{y}_i)\\[3pt] &=-y_i+\hat{y}_i\sum_k y_k\\[3pt] &=\hat{y}_i-y_i \qquad(\text{因 one-hot 时 }\textstyle\sum_k y_k=1) \end{aligned} $$结论:$\dfrac{\partial L}{\partial z_i}=\hat{y}_i-y_i$ —— 预测减真值。这就是为什么 Softmax 和交叉熵被绑定使用:梯度最干净,训练最稳。
| 任务 | 损失 | 出现在 |
|---|---|---|
| 分类 | 交叉熵 CE | FBMSNet、NeuroFusion-Trans |
| 回归 | MSE | NeuroDyGait(重建 / 预测) |
Center loss(FBMSNet 用,论文式 2):让同类样本的特征向各自类中心靠拢。
$$ L_C=\frac{1}{2}\sum_i \lVert f_i-c_{y_i}\rVert^2 $$$f_i$ 是样本 $i$ 的特征,$c_{y_i}$ 是它所属类的中心。CE 负责"把不同类分开",center loss 负责"把同类聚紧",两者配合(总损失 $=L_{CE}+\lambda L_C$)特征更可分。中心 $c$ 的更新规则留到精读。
把所有参数记作 $\theta$,要解 $\displaystyle\min_\theta L(\theta)$。没有解析解,所以用迭代一点点逼近。
梯度 $\nabla L$ 指向"$L$ 增长最快的方向",所以往反方向走能让 $L$ 变小:
$$ \theta \leftarrow \theta - \eta\,\nabla L(\theta) $$$\eta$ 是学习率:太大震荡甚至发散,太小学得慢。几何上 = 沿最陡下降方向迈一小步,反复迈到谷底。
网络是很多函数的复合,求 $\partial L/\partial(\text{每个参数})$ 要用链式法则(你高数有)。反向传播就是高效地、从输出往输入逐层复用中间结果地算这些梯度。
列向量约定。网络:输入 → 隐藏层(ReLU) → 输出层(Softmax) → CE。
前向:
$$ z_1=W_1x+b_1,\quad a_1=\mathrm{ReLU}(z_1),\quad z_2=W_2a_1+b_2,\quad \hat{y}=\mathrm{softmax}(z_2),\quad L=\mathrm{CE}(\hat{y},y) $$反向($\delta$ 表示损失对某个 $z$ 的梯度):
$$ \begin{aligned} \delta_2&=\frac{\partial L}{\partial z_2}=\hat{y}-y &&(d_2,1)\\[3pt] \frac{\partial L}{\partial W_2}&=\delta_2\,a_1^{\top} &&(d_2,d_1)\\[3pt] \frac{\partial L}{\partial b_2}&=\delta_2 &&\\[3pt] \delta_1&=\big(W_2^{\top}\delta_2\big)\odot \mathrm{ReLU}'(z_1) &&(d_1,1)\\[3pt] \frac{\partial L}{\partial W_1}&=\delta_1\,x^{\top} &&(d_1,d_0)\\[3pt] \frac{\partial L}{\partial b_1}&=\delta_1 && \end{aligned} $$其中 $\mathrm{ReLU}'(z_1)$ 是逐元素的 $0/1$ 掩码。拿到所有梯度后代入 3.2 更新。训练循环的骨架就是:前向算损失 → 反向算梯度 → 更新参数 → 重复。
EEG 是 $(\text{通道}\times\text{时间})$ 的二维数据,时间点上千。全连接参数 = 输入维度 $\times$ 神经元数,爆炸,且没利用"局部 + 平移"结构。卷积用一个小核滑动,参数少、抓局部、平移不变。
核在输入上滑动,每个位置做"逐元素相乘再求和"。C 视角:就是滑动窗口 + 嵌套 for 循环的点积,核的系数可学习。
一维(沿时间)输出尺寸:
$$ \text{out}=\left\lfloor \frac{in+2p-k}{s}\right\rfloor + 1 $$$p$ 是两端补零数,$s$ 是步长。same padding + $s=1\Rightarrow \text{out}=in$(长度不变,FBMSNet 大量用)。例:$in=1000,k=15$,same,$s=1\Rightarrow1000$;若 $p=0,s=1\Rightarrow 1000-15+1=986$。二维就按高、宽各算一遍。
在小窗口取代表值降分辨率:Max pooling(取最大)、Average pooling(取平均)。注:FBMSNet 发现对 EEG 节律,算方差 / log-variance 比 max/avg 更有效,这是它的设计点。
对每批数据把某层输出标准化,再用可学习的 $\gamma,\beta$ 缩放平移:
$$ \hat{x}=\frac{x-\mu_{\text{batch}}}{\sqrt{\sigma^2_{\text{batch}}+\epsilon}},\qquad y=\gamma\hat{x}+\beta $$稳住每层输入分布,训练更快更稳、允许更大学习率。你三篇都在卷积后接它。
普通卷积:每个输出通道都"看遍"所有输入通道。
$$ \text{参数量}\approx k\cdot C_{in}\cdot C_{out} $$depthwise 卷积:每个输入通道用自己的一个核,通道间不混(输出通道数 $=C_{in}$)。
$$ \text{参数量}\approx k\cdot C_{in} $$separable = depthwise + pointwise(1×1):先 depthwise 抓空间,再 1×1 混通道。
$$ k\cdot C_{in}+C_{in}\cdot C_{out},\qquad \frac{\text{separable}}{\text{普通}}\approx \frac{1}{C_{out}}+\frac{1}{k}\ (\text{大幅省参}) $$对应 FBMSNet:它的"空间卷积"用核 $(C,1)$ 的 depthwise 横跨所有 EEG 通道,等价一组空间滤波器(类似经典 BCI 的 CSP),既省参又契合 EEG 物理意义。EEGNet、FBCNet 也都靠 depthwise。
原始 EEG (C×T)
→ 滤波器组:分成 9 个频带 (4–40Hz) 【信号处理,第 6 章】
→ 多尺度时间卷积 (MixConv,多种核大小) 【卷积,第 4 章】
→ 空间卷积 (depthwise, 核 (C,1)) 【depthwise,4.5】
→ BatchNorm + Swish 【4.4 / 1.4】
→ log-variance(按窗口算对数方差) 【4.3 备注】
→ 全连接 + Softmax → 分类 【1.4 / 2.2】
损失 = 交叉熵 + λ·center loss 【2.2 / 2.4】
能把这条链讲顺,就达到本章目标了。看不懂的块标记一下,留给暑假。
CNN 看"局部邻域",注意力让每个位置直接看全局、并按相关性加权:与我越相关的位置权重越大。一句话——注意力 = 按相关性做加权平均。
比喻:拿问题 Q 和每条资料的标签 K 比对,算出匹配度,再按匹配度把资料内容 V 加权取回。
逐步拆(设 $Q\in\mathbb{R}^{n\times d},K\in\mathbb{R}^{m\times d},V\in\mathbb{R}^{m\times d_v}$):
若 $q,k$ 各维独立、均值 0 方差 1,则 $q\cdot k=\sum_{l=1}^{d} q_l k_l$ 的方差 $\approx d$、标准差 $\approx\sqrt{d}$。$d$ 越大,点积越易出现很大值,softmax 被推到饱和区(输出近 one-hot),梯度趋近 0、训练困难。除以 $\sqrt{d}$ 把方差拉回 $\sim1$,让 softmax 处在梯度健康的区间。
到这里,后两篇 Transformer 的"零件"你都认识了,暑假再组装。
采样率:每秒采多少点(EEG 250Hz、重采样到 200Hz)。奈奎斯特:要无失真还原频率 $f$,采样率至少 $2f$。脑电关心 4–40Hz,几百 Hz 足够。
任何信号可分解成不同频率正弦波的叠加。傅里叶变换把信号从时域换到频域,看它由哪些频率组成。FFT 是其快速算法,把复杂度从 $O(N^2)$ 降到 $O(N\log N)$ —— NeuroFusion-Trans 用它给同步提速。
衡量两个信号在不同时间偏移 $\tau$ 下有多对齐:
$$ R_{xy}(\tau)=\sum_t x(t)\,y(t+\tau),\qquad \tau^{*}=\arg\max_{\tau} R_{xy}(\tau) $$NeuroFusion-Trans 用它找 EEG 与 EMG 的最佳对齐量 $\tau^{*}$,再平移做同步(论文式 4、5、7)。
这正是 NeuroFusion-Trans 要融合两者的动机:EEG 给意图、EMG 给执行,互补。
运动想象 MI:只在脑中想象动作而不真动(FBMSNet 解码它)。SMR 感觉运动节律:运动相关脑区的振荡。ERD / ERS:想象/执行时相关频段能量下降(ERD)或上升(ERS),是 MI 可被解码的生理基础。
BCIC-IV-2a:9 人、22 通道、4 类 MI(左/右手、双脚、舌头)。OpenBMI:54 人、2 类 MI(左/右手)。GED / FMD:步态-EEG 数据(NeuroDyGait 用)。
分类:
$$ \text{Accuracy}=\frac{\text{预测正确数}}{\text{总数}},\qquad F_1=\frac{2\cdot\text{precision}\cdot\text{recall}}{\text{precision}+\text{recall}} $$ $$ \text{precision}=\frac{TP}{TP+FP},\qquad \text{recall}=\frac{TP}{TP+FN} $$ $$ \kappa=\frac{p_o-p_e}{1-p_e}\quad(\text{扣掉"瞎猜也能蒙对"的部分,比准确率更严}) $$ $$ \mathrm{MCC}=\frac{TP\cdot TN-FP\cdot FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}\quad(\text{类别不平衡时更可靠,有多分类推广}) $$$p_o$ = 实际一致率(= 准确率),$p_e$ = 随机情况下的期望一致率。
回归(NeuroDyGait 用):
$$ r=\frac{\mathrm{cov}(y,\hat{y})}{\sigma_y\,\sigma_{\hat{y}}}\ (\text{趋势一致性}),\quad R^2=1-\frac{\sum_i(y_i-\hat{y}_i)^2}{\sum_i(y_i-\bar{y})^2}\ (\text{解释方差}),\quad \mathrm{RMSE}=\sqrt{\frac{1}{n}\sum_i(y_i-\hat{y}_i)^2} $$可视化 t-SNE:把高维特征降到 2 维画散点,看不同类别是否分得开。三篇都用它展示特征可分性。
配视频用:每章先读本手册(把 ★ 推导自己跟写一遍),再看对应视频补直觉——第 1–3 章配 3Blue1Brown 神经网络系列 + 李宏毅机器学习前几讲;第 4 章配 d2l 卷积章节;第 5 章配李宏毅 Transformer + Illustrated Transformer;第 6–7 章当背景资料读。能默出附录里的 ★ 推导,暑假精读 FBMSNet 就完全无障碍。