想象你走进一家米其林餐厅的后厨,会发现调味料架上的瓶子并不多——盐、糖、醋、生抽、老抽、蚝油……加起来不到三十瓶。可就是这三十瓶,能变幻出几百道菜。秘密全在配方:每道菜只取其中三五种,按特定比例调配。这里的“调味料架”就是字典,“每种调味料的用量”就是系数,“只用三五种”就是稀疏性。而字典学习的任务,正是从一堆“成品菜”中反向提炼出那组基础调味料。 更妙的是,这套思路还能用来“读心”。假如一位AI大厨做出一道美味却说不清自己的配方(深度神经网络),我们能不能像味觉侦探一样,用字典学习把它的“内部味觉信号”分解成可理解的基本风味成分?这正是近年来机制解释性领域最火的方向之一。本文将从厨房出发,带你一步步理解字典学习的原理、算法与工程实践。
学会字典学习,你就拿到了一把拆解黑盒模型的钥匙——无论是在大模型可解释性、医学影像重建还是工业特征提取中,它都是AI从业者必须掌握的底层思维工具。
可视化演示
展示稀疏编码与字典原子分解、单义vs多义特征分解及稀疏自编码器架构,支持三模式交互切换。
本节配有交互动效(进入视口后自动加载,约 3KB)。
稀疏编码与字典原子分解 输入信号x通过字典D分解为稀疏编码z 字典原子D的列向量为基函数 z中仅少数非零项,L1惩罚促进稀疏 x≈D·z, ‖z‖₀≪dim 稀疏分解将信号表示为少量字典原子的线性组合。
基本概念
设想你走进一家米其林餐厅的后厨,会发现调味料架上的瓶子并不多——盐、糖、醋、生抽、老抽、蚝油……加起来不到三十瓶。但就是这三十瓶,能变幻出几百道菜。秘密在于配方:每道菜只取其中三五种,按特定比例调配。“调味料架”就是字典;“每种调味料的用量”就是系数;“只用三五种”就是稀疏性。把复杂信号拆成少数基本成分的线性组合,这就是字典学习的直觉。
字典学习要做的,是从大量“成品菜”(训练信号)中反向提炼出这组“基础调味料”(字典原子)。在数学上,给定信号 $\mathbf{x}$,我们希望找到一个字典矩阵 $\mathbf{D}$ 和系数向量 $\boldsymbol{\alpha}$,让 $\mathbf{x}\approx\mathbf{D}\boldsymbol{\alpha}$,同时 $\boldsymbol{\alpha}$ 中绝大多数分量为零。由于非零分量很少,这种表示被称为稀疏表示。换句话说:一道复杂的菜,只需要三五瓶调味料就能复现。
这跟主成分分析(PCA)很不一样。PCA像一套“固定组合套餐”:成分事先定好、彼此正交,而且每个信号都必须把所有成分都用上。字典学习则像“自助调味架”:原子可以过完备(即调味料数量比一道菜实际需要的多得多)、不必正交,真正使用时只挑几个。正是这份“自由”,让字典原子有机会对齐到有语义的结构——比如在图像里对应边缘、纹理,在神经网络激活里对应某个可解释的概念。
回到厨房:“配方”看不懂的菜,往往是调味料太多、比例太乱。字典学习追求的,正是那道配方整齐、用料克制、却能完美复现味道的菜——这份克制,也为我们后面“读懂神经网络”埋下了伏笔。
- 字典原子 $\mathbf{d}_i$信号的基本组成单元,相当于调味料架上的第 $i$ 瓶调味料。
- 稀疏系数 $\alpha_i$第 $i$ 种调味料的用量,可正可负,决定这道菜的配方比例。
- L0伪范数 $\|\boldsymbol{\alpha}\|_0$统计配方里实际用了几种调味料,即非零系数的个数。
- 稀疏度阈值 $k$一道菜最多允许使用的调味料种类数,通常远小于调味料架的总瓶数。
数学模型
大厨复现一道菜时,心里有两个目标:味道要接近(重构误差小),配方要简单(稀疏)。这两个目标经常打架——调味料放得越多,味道越容易调准,但配方也就越复杂。所以需要一架“天平”,把两个目标放在一起称量。
把这个问题写成数学公式。给定包含 $N$ 道菜的训练集 $\mathbf{X}$,我们要同时寻找字典 $\mathbf{D}$ 和系数矩阵 $\mathbf{A}$。最理想的做法是直接限制每道菜最多用 $k$ 种调味料(L0约束),可惜这个问题的求解是NP难的,计算上几乎不可行。于是研究者换了个温和的策略:把“数个数”换成“算总用量”,即用 L1范数来鼓励稀疏。L1 就像记账时把每瓶调味料的用量绝对值累加,虽然不能精确限制种类数,却能让大多数系数在优化中自动归零。
这架天平上,$\lambda$ 就是大厨的“克制度”。$\lambda$ 调大,大厨变得极度克制,配方极简但可能味道寡淡;$\lambda$ 调小,大厨放飞自我,味道精准但配方冗长。找到合适的 $\lambda$,就像找到一道菜最合适的火候。
- 训练信号矩阵 $\mathbf{X}$把 $N$ 道菜的完整记录摞成一叠,每一行是一道菜的测量数据。
- 重构残差 $\mathbf{X} - \mathbf{D}\mathbf{A}$复现的菜与目标菜的逐项差距,差值越大说明走味越严重。
- Frobenius范数平方 $\|\cdot\|_F^2$把所有差距平方后求和,相当于给整桌菜打一个“总差评”。
- 稀疏惩罚项 $\lambda\|\mathbf{A}\|_1$对所有系数的绝对值求和,温和地鼓励多余的系数归零。
核心算法
大厨是怎么提炼出那组基础调味料的?不是拍脑袋,而是不断试做、反思、调整:先按现有的调味料架试做几道菜,发现某道菜总差一点味道,就琢磨是不是该添一瓶新调料或调整某一瓶的配方;然后又试做,又调整。这样一轮轮迭代下来,调味料架越来越精炼。字典学习中最经典的 K-SVD 算法,用的正是这个思路。
K-SVD 把整个字典学习问题拆成两个子问题,交替求解。第一步叫稀疏编码:固定当前字典 $\mathbf{D}$ 不变,为每个信号找最优的稀疏系数(相当于“给定调料架,写最佳配方”)。第二步叫字典更新:固定所有系数 $\mathbf{A}$ 不变,逐一调整每个原子,让整体重构误差进一步下降(相当于“根据使用反馈,微调某瓶调味料的配比”)。两步交替重复,直到误差收敛。
在实际工程中,稀疏编码多用正交匹配追踪(OMP)或Lasso求解;字典更新则对每个原子做一次SVD分解。在线字典学习则更进一步:不用一次性把几千道菜全端出来,而是来一道菜就更新一次配方,适合处理海量数据。K-SVD的“交替”精神,就像大厨反复试菜——先按现有调料做,再调整调料,再做……直到菜的品质收敛,一桌好菜就稳了。
- 目标信号 $\mathbf{x}$当前要复现的那一道菜。
- L2范数平方 $\|\cdot\|_2^2$这道菜复现的“走味程度”,是逐点误差的平方和。
- 约束 $\|\boldsymbol{\alpha}\|_0 \le k$这道菜的配方最多只能写 $k$ 种调味料,不许超量。
关键特性
决定一盘菜出品上限的,往往不是调味料架有多大,而是“允许用几种调味料”(稀疏度 $k$)和“架子上该放多少瓶”(原子数 $m$)。这两个数,是配置字典学习系统最关键的旋钮。
稀疏度 $k$ 越小,配方越清晰、越容易归因,但可能复现不出细节;$k$ 越大,重构误差越小,可解释性却随之下降。原子数 $m$ 也有讲究:在图像处理中,经验上常取信号维度的2到4倍作为过完备字典的规模。$m$ 太小表达力不足,$m$ 太大则训练和推理成本上升,而且会出现大量“闲置瓶”——有些原子几乎没被任何信号用到,白白占着架子。
就像菜谱只写“盐少许”会让人无从下手,而写满三页纸的配方又让人脑仁疼——合适的稀疏度是“盐3克、糖5克、醋2克”,既有指导意义又不冗余。同理,调味料架上的瓶子不是越多越好,够用、好用、每瓶都有存在感,才是关键。
- 最优系数矩阵 $\mathbf{A}_k$在每道菜最多用 $k$ 种调味料的约束下,整桌菜各自的最优配方集合。
- 重构误差 $E(k)$配方容量为 $k$ 时,整个菜单的复现总误差。
- 边际递减规律$k$ 增大初期误差快速下降,之后趋缓,出现“拐点”——实用的 $k$ 就选在拐点附近。
优化策略
同样一套调味料、同样一份食材,火候不同,味道天差地别。字典学习的“火候”藏在参数、初始化和正则化的细节里。踩过坑的工程师都知道,换个初始化方式,收敛速度可能差出好几倍。
先说参数调优。$\lambda$ 控制整体稀疏惩罚的力度,$\lambda$ 越大,系数越稀疏;如果你用的是 OMP 这类硬约束方法,则直接指定每样本非零系数上限 $k$。原子数 n_components 决定调味料架的规模,需要结合数据复杂度实验确定。其次是初始化:随机初始化最简单,但用 PCA 或者 K-Means 的聚类质心作为初始字典,往往能让训练更快收敛到更好的解——相当于开店前先做一次市场调研,而不是凭感觉进货。最后是正则化技巧:每次更新后把字典原子归一化到单位范数,防止数值爆炸;也可以显式地对字典本身加 Frobenius 范数惩罚,让每瓶调味料的“浓度”不要失控。
大厨的“手感”其实没有玄学,就是这些旋钮的组合。调好 $\lambda_1$、$\lambda_2$ 和初始化方式,一锅菜从入门到稳定,往往就在几步之间。
- 主损失 $\|\mathbf{X}-\mathbf{D}\mathbf{A}\|_F^2$复现质量,衡量整体走味程度。
- L1稀疏惩罚 $\lambda_1\|\mathbf{A}\|_1$配方克制度,鼓励系数稀疏。
- 字典正则项 $\lambda_2\|\mathbf{D}\|_F^2$调味料瓶的“重量”约束,防止个别原子数值过大、主导一切。
工程实践
把大厨的玄学变成标准化的中央厨房,需要一条流水线。字典学习在工业界的落地,通常遵循四个环节:数据预处理、训练字典、稀疏编码、下游任务。
第一步是数据预处理。一维信号要滑窗切成片段,二维图像要切成图像块,然后逐块标准化、去均值,让每个样本落在相近的尺度上——就像做菜前先统一食材的切配标准。第二步是训练字典:在预处理后的训练块上拟合字典学习模型(如 MiniBatchDictionaryLearning),得到原子集合。第三步是稀疏编码:对新的样本执行 transform,得到它的稀疏系数向量——这就是提取出的特征。第四步是把特征喂给下游分类器或回归器。评估时,我们关注三类指标:重构误差、稀疏度和字典使用率。
中央厨房不关心哪位大厨手感好,它只认指标。MSE 降下来了、稀疏度在预期范围、字典使用率没有明显的闲置瓶,这条流水线就可以放心转起来了。
- 均方误差 MSE把总重构误差除以样本数,得到平均每道菜的走味程度。
- 稀疏度 $\rho$平均每道菜实际用了多少比例的调味料,$\rho$ 越小代表表示越稀疏。
- 字典使用率统计每瓶调味料在所有菜谱中出现的次数占比——使用率过低的原子是“闲置瓶”,可以考虑删掉。
可解释性应用
现在,把目光转向那位说不出配方的 AI 大厨——深度神经网络。它做出的“菜”(预测结果)很好吃,但对人类来说是个黑盒。字典学习在这里扮演的角色是味觉侦探:把它的“内部味觉信号”(激活值)分解成可理解的“基本风味原子”。
机制解释性(Mechanistic Interpretability)研究者正是这么做的:收集模型在某一层对大量输入产生的激活向量,把它们当作“信号”,用字典学习分解。学到的每个原子,可能恰好对应一个可解释的方向——比如“正在处理左括号”“出现了否定语气”“在回忆上文的某个实体”。近年来大火的 SAE(稀疏自编码器)把这一思路神经网络化:编码器负责把激活向量映射成稀疏系数,解码器的列就是字典原子。Anthropic 等机构用 SAE 在大语言模型内部发现了成千上万个人类可理解的特征,就像把 AI 大厨的“黑暗配方”逐条翻译成了食材清单。
AI 大厨终于交出了配方——虽然还不够完整,但我们已经能从“原子”的组合中读出它的心思。这盏字典学习的 X 光,正在让深度学习从“可运行”走向“可解释”。
- 激活向量 $\mathbf{z}$神经网络内部某层的“味觉信号”,通常是高维向量。
- 编码器 $\mathbf{f}(\mathbf{z})$把味觉信号翻译成“调味料用量列表”的神经网络函数。
- 解码器 $\mathbf{D}$字典的另一种叫法,把“用量列表”映射回味觉信号空间,$\mathbf{D}$ 的每一列就是一个原子。
- L1惩罚 $\lambda\|\mathbf{f}(\mathbf{z})\|_1$鼓励翻译出的配方尽量简洁,只保留最重要的几种“风味原子”。
挑战与展望
哪怕调味料架再全,也复现不了“妈妈的味道”。字典学习有其边界,这些边界正是当前研究最活跃的地方。
第一个挑战是计算瓶颈。要在大语言模型上做 SAE,需要处理的激活量以亿计,训练和推理开销极高,开源社区常常要动用数百张 GPU。第二个挑战是泛化边界。学到的字典对同分布数据很好用,换一个领域——比如从新闻文本跳到医疗文本——往往失灵,就像川菜大厨的调料架里没有花椒油,做不了正宗川菜。第三个挑战是“稀疏不等于语义”。一个原子未必对应一个干净的概念,它可能混了好几种含义,需要额外的归因和消融实验来验证。未来的方向包括:设计可微的稀疏编码层,把字典学习端到端地嵌入深度网络;研究“字典的字典”(层级字典),让原子本身也可解释;以及为稀疏自编码器开发更高效的大规模训练方案。
就像厨房的边界永远存在,字典学习的未来也不是推翻调味料架,而是让调味料架更懂食材。当字典学习与深度学习深度融合,我们离“既能做菜、又能说清为什么这么做的 AI 大厨”就越来越近。
- 重构误差 $\mathcal{E}_{\text{recon}}$在训练分布上复现基本信号产生的误差。
- 稀疏误差 $\mathcal{E}_{\text{sparse}}$为了追求稀疏而牺牲掉的拟合质量。
- 迁移误差 $\mathcal{E}_{\text{transfer}}$离开训练数据分布(换菜系)后的性能损失。
AI 应用场景
大型语言模型的机制解释与安全审计
阶段:可解释性与安全审计(推理阶段)
解决的问题:大语言模型是典型的黑盒:它能生成高质量回答,却无法告诉我们“它依据什么内部特征做出判断”。传统诊断方式只能观察输入输出,难以定位模型内部的偏见、幻觉或越狱等安全隐患。字典学习通过将模型的内部激活分解为稀疏的可解释原子,让研究者能像查看食材清单一样审查模型“在想什么”。
具体案例:Anthropic 的研究团队训练稀疏自编码器(SAE)分解 Claude 模型中间层的激活向量,发现了数百万个可解释特征,例如“指向 HTML 标签开头的特征”“与代码缩进相关的特征”等。利用这些特征,他们不仅能追踪模型何时“想起”某个概念,还能通过调节特定特征的方向来抑制模型产生有害内容。
医学影像的稀疏重建
阶段:数据采集与重建(图像域)
解决的问题:磁共振成像(MRI)扫描速度慢,患者需要长时间保持不动。传统方法要求完整采集 k 空间数据,扫描时间长、成本高。字典学习结合压缩感知,允许从少量欠采样数据中重建出高质量图像——就像只用少量调味料就复现出色香味俱全的菜。
具体案例:在心脏 MRI 中,研究者先在大量历史心脏图像块上学习字典,然后对于新患者的欠采样数据,用稀疏编码约束重建完整图像。临床研究表明,在 4 到 8 倍加速采样的条件下,字典学习方法重建的图像质量仍能满足诊断要求,扫描时间从数十分钟缩短到几分钟。
工业传感器信号的特征解码
阶段:特征工程与预测性维护(离线建模)
解决的问题:工业设备振动信号复杂多变,传统人工特征(如峰值、均方根)信息量有限,难以捕捉早期故障的细微征兆。字典学习能从原始振动信号中自动学出一组“基础振动模式”(原子),任何一段信号都能用少数原子组合表示,这些稀疏系数就是优秀的故障特征。
具体案例:在旋转机械故障诊断中,工程师对正常和故障状态下的振动信号分别训练字典,然后比较测试信号在不同字典下的重构误差:误差最小的那本字典,就对应设备当前的故障类型。这套方案在实际工厂数据上取得了 95% 以上的诊断准确率,且对噪声鲁棒。
Python 演示
import numpy as npfrom sklearn.decomposition import MiniBatchDictionaryLearning def generate_signals(n_signals=200, n_points=128): # 生成多种频率组合的合成信号,模拟"不同菜系的菜品" t = np.linspace(0, 2 * np.pi, n_points) signals = [] rng = np.random.default_rng(42) for _ in range(n_signals): f1 = int(rng.integers(1, 5)) f2 = int(rng.integers(5, 9)) a1 = float(rng.uniform(0.4, 1.0)) a2 = float(rng.uniform(0.2, 0.8)) noise = 0.05 * rng.standard_normal(n_points) signals.append(a1 * np.sin(f1 * t) + a2 * np.cos(f2 * t) + noise) return np.array(signals) def main(): X = generate_signals() n_components = 10 alpha = 0.15 # 1. 训练字典学习器 learner = MiniBatchDictionaryLearning( n_components=n_components, alpha=alpha, batch_size=32, max_iter=50, random_state=0, ) learner.fit(X) # 2. 稀疏编码:把每道菜翻译成"调味料用量列表" A = learner.transform(X) # 3. 用系数和字典重构信号 X_recon = A @ learner.components_ # 4. 评估:重构误差与稀疏度 mse = float(np.mean((X - X_recon) ** 2)) nonzero = float(np.mean(np.abs(A) > 1e-6)) sparsity = 1.0 - nonzero / n_components print("字典形状:", learner.components_.shape) print("平均每样本非零系数数:", round(nonzero * n_components, 2)) print("稀疏度:", round(sparsity, 3)) print("重构MSE:", round(mse, 5)) if __name__ == "__main__": main()
learner = MiniBatchDictionaryLearning(...)创建字典学习器,alpha是稀疏惩罚力度,相当于大厨的“克制度旋钮”。learner.fit(X)从一批信号(菜品)中学习出字典(调味料架)。A = learner.transform(X)稀疏编码:把每个信号翻译成“调味料用量列表”。X_recon = A @ learner.components_用稀疏系数和字典重构原信号,对应“按配方复现菜品”。nonzero = float(np.mean(np.abs(A) > 1e-6))统计平均每个样本用了几个非零原子,衡量稀疏程度。sparsity = 1.0 - nonzero / n_components把“用了几种调味料”换算成稀疏度指标。mse = float(np.mean((X - X_recon) ** 2))计算重构均方误差,即“整桌菜的走味程度”。
常见误区
误区很多初学者以为把 `n_components` 设得越大,字典表达力越强,效果一定越好。结果模型训练变慢、原子大量冗余,甚至在小数据集上过拟合。
正解调味料架摆满一百瓶不代表更会做菜。原子数要匹配数据复杂度,通常取信号维度的 2~4 倍,并用字典使用率检查冗余:使用率过低的原子就是“闲置瓶”,删掉反而更清爽。原子数过多还会让稀疏编码的计算量线性上升,得不偿失。
为何常见:人的直觉是“多等于强”,忽略了字典学习的本质是“以少驭多”。原子是工具,不是目的。
误区有人把“稀疏”当成终极目标,认为非零系数越少越高级。于是把 $k$ 设成 1,或者把 $\lambda$ 调到极大,结果重构信号面目全非。
正解菜只放盐会寡淡。稀疏度必须在重构质量和稀疏性之间平衡。经验做法是:从大到小扫描 $k$,画出“误差-稀疏度”曲线,选取拐点附近的 $k$——那里的误差已经很低,再增大 $k$ 收益也很小,而稀疏性的收益已经拿到了。
为何常见:把“稀疏”本身当成了目标,忘了字典学习的初心是“用尽可能少的原子,表达足够好的信号”。
误区两者都做表示学习,初学者很容易把字典学习当成 PCA 的一种变体,以为学到的基也是正交的、按方差排序的、所有成分都必须用上。
正解PCA 是密集表示:每个信号都要用所有主成分,只是权重不同;字典学习是稀疏表示:只挑少数原子,其他系数直接为零。PCA 的基必须正交,而字典的原子可以过完备、高度相关,甚至互相重叠。类比一下:PCA 是“固定三件套”西装,字典学习是“自由混搭”衣橱。
为何常见:两者都在做“用一组基表示数据”,形式上相似,但表示的类型(密集 vs 稀疏)和基的性质(正交 vs 过完备)有本质区别。
误区看到稀疏系数只有几个非零,就觉得已经理解了信号或模型行为,认为“稀疏=可解释”。
正解稀疏是必要不充分条件。一个原子是否可解释,取决于它是否与人类可理解的概念对齐。比如在 SAE 中,研究者还要做特征归因、消融实验来验证每个原子真的对应某个语义概念。类比:知道配方写了“盐3克、神秘粉2克”,但若不知道神秘粉是什么,依然不懂这道菜。
为何常见:简洁的配方容易让人产生“懂了”的错觉,但简洁只是可解释性的入场券,并非终点。
误区在某个数据集上训练好的字典,直接用到另一个领域的数据上,效果崩了还怪模型不行。
正解字典是从特定数据分布中学到的,换分布要重新训练或微调。川菜大厨的调料架里没有花椒油,做不了正宗川菜。跨领域使用时,至少要做适配:用目标领域的一小批数据对现有字典做增量更新,或者重新训练。
为何常见:忽略了数据分布漂移这一基本事实,把字典当成了放之四海而皆准的万能公式。
面试题
Q1. 字典学习的核心目标是什么?
- A.让所有系数非零以利用全部字典原子
- B.学习一组原子,使信号可稀疏表示← 正确答案
- C.将所有输入信号压缩为一个单一向量
- D.用一组正交基对信号做线性分解
答案:B。字典学习的关键在于“学习原子 + 稀疏表示”:原子的集合构成字典,每个信号用少数原子线性组合表示。A 恰好说反了,稀疏表示要求大部分系数为零;C 压缩成单一向量不是字典学习的做法;D 强调正交基,这更像是 PCA 的特征,而非字典学习。
Q2. 稀疏表示中的“稀疏”指的是什么?
- A.系数向量中大多数元素为零← 正确答案
- B.字典中原子的个数非常少
- C.输入信号的维度比较低
- D.字典矩阵采用稀疏存储格式
答案:A。稀疏指的是表示系数 $\boldsymbol{\alpha}$ 中绝大多数分量为零,只有少数原子被激活。这与字典大小、信号维度、存储格式无关。字典可以是过完备的大字典,信号可以是高维的,但只要激活的原子少,就称为稀疏表示。
Q3. 在字典学习的目标函数中,L1范数的主要作用是?
- A.保证字典原子彼此正交
- B.强制系数矩阵服从正态分布
- C.松弛L0问题并鼓励稀疏解← 正确答案
- D.加速SVD矩阵分解的计算
答案:C。L0 约束直接数非零个数,但求解是 NP 难的;L1 是 L0 的凸松弛,通过对系数绝对值求和来温和地鼓励系数归零。它不能保证正交(那是 PCA 的事),也无关正态分布或 SVD 加速。
Q4. K-SVD算法中交替优化的两个步骤是什么?
- A.稀疏编码与字典更新← 正确答案
- B.前向传播与反向传播
- C.特征选择与特征缩放
- D.聚类分析与质心更新
答案:A。K-SVD 的核心结构是交替优化:先固定字典做稀疏编码(OMP/Lasso),再固定系数用 SVD 更新字典原子。前向/反向传播是神经网络的训练方式;聚类分析是 K-Means 的步骤,与 K-SVD 的交替框架不同。
Q5. 与PCA相比,字典学习的核心差异是什么?
- A.字典学习要求基向量彼此正交
- B.字典学习允许过完备和非正交原子← 正确答案
- C.字典学习只能处理二维图像数据
- D.字典学习不需要任何正则化参数
答案:B。PCA 的基是正交的且必须全部使用(密集表示);字典学习允许过完备(原子数大于信号维度)、非正交的原子,且表示是稀疏的。字典学习不限于图像,一维信号、文本激活都能处理,且通常需要正则化参数控制稀疏度。
Q6. 字典学习用于机制解释性时,其主要思路是什么?
- A.用字典原子分解神经网络内部激活← 正确答案
- B.用字典学习替代反向传播算法
- C.用字典原子直接修改模型权重
- D.用字典学习生成新的训练样本
答案:A。机制解释性中的字典学习,是把神经网络内部层的激活向量当作信号,学一个字典把它们分解成稀疏的可解释原子,每个原子对应一个潜在概念。它不替代反向传播,不直接改权重,也不用于数据增强。
Q7. 当字典原子数 $m$ 远大于信号维度 $n$ 时,这个字典被称为?
- A.完备字典
- B.欠完备字典
- C.过完备字典← 正确答案
- D.正交字典
答案:C。$m>n$ 时字典是过完备的,表示不唯一,但配合稀疏约束反而能选出最简洁的原子组合;$m=n$ 且原子张成空间时是完备字典;$m<n$ 是欠完备字典;正交字典要求原子两两正交,过完备字典通常不满足。
Q8. 以下哪些属于字典学习的典型应用场景?
- A.图像去噪与超分辨率重建← 正确答案
- B.医学影像的欠采样重建← 正确答案
- C.编译原理的词法分析
- D.大语言模型的机制解释← 正确答案
答案:ABD。图像去噪利用“自然图像块可以被稀疏表示”的先验;医学 MRI 重建结合压缩感知从欠采样数据恢复图像;机制解释用稀疏自编码器分解激活。词法分析是编译器的基础功能,与字典学习无关。
Q9. 以下哪些方法可以用于求解稀疏编码问题?
- A.匹配追踪(MP)← 正确答案
- B.正交匹配追踪(OMP)← 正确答案
- C.使用L1正则的坐标下降法← 正确答案
- D.主成分分析的闭式解
答案:ABC。MP 和 OMP 是经典的贪心稀疏编码算法;L1 正则的坐标下降是 Lasso 的常用求解器,也能用于稀疏编码。PCA 的闭式解(SVD)求解的是稠密正交表示,不产生稀疏系数。
Q10. 关于SAE(稀疏自编码器)与字典学习的关系,下列说法正确的有?
- A.SAE可以看作字典学习的神经网络化版本← 正确答案
- B.SAE的编码器负责将激活向量映射为稀疏系数← 正确答案
- C.SAE训练完成后字典原子必然是可解释的
- D.SAE常被用于发现大模型中的可解释特征← 正确答案
答案:ABD。SAE 的编码器把激活映射成稀疏系数,解码器的列就是字典原子,因此是字典学习的神经网络版本;它在机制解释性中被广泛用于发现模型内部的可解释特征。但“训练完必然可解释”是错的——原子是否可解释需要额外的归因验证。