一步一步建立直观
先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。
01把一个猜测变成可检查的扰动
如果猜测某个输入特征在控制输出,应固定其余输入,只改变这一项。右图的单个单元提供最简单的干预:在激活区域内,输出对第一输入的变化率就是第一权重。这个数值解释了局部敏感度,却还没有证明它在真实数据中代表某种语义。
02同一权重在不同输入处作用不同
把输入移到关闭区域。权重没有改变,输出对小扰动却暂时不敏感,因为激活函数将这一段截平。由此可见,只阅读权重大小不足以解释网络行为;还需要输入位置、激活状态,以及后续层如何使用这个单元的输出。
03解释也必须经受反例检验
调节偏置与目标,寻找能让原先解释失效的输入。一个“看起来检测到某特征”的单元,可能依赖背景或与该特征相关的另一信号。本窗口展示干预的逻辑,不承担真实模型的语义发现;更完整的分析还应比较样本、消融与输出变化。
3.3.1 把好听的解释变成可以检验的假设¶
我们容易把隐藏神经元想象成边缘、笔画或概念检测器,但这种解释必须与实际参数和行为相符。先固定网络,找出什么输入能强烈激活某个单元,再查看看似相同的特征在不同背景下是否仍产生类似响应。一次漂亮的示例不足以建立稳定解释。
把输入稍微改变,观察输出怎样变,是更直接的实验。仿射层满足 :偏置在相减时消失,所以敏感性由权重和扰动方向共同决定。某方向的小变化可能被放大,另一些方向可能被忽略。
3.3.2 准确、稳定与可信不是同一个量¶
即使原图被正确分类,平移、旋转或加一点扰动后也可能变化;普通全连接层并不会自动知道这些变化应保持类别。高置信度也只是模型输出分布尖锐,并不保证它遇到的是熟悉数据,更不保证解释正确。
设计检查时可以分三步:保留独立测试样本观察泛化;做有控制的扰动检验稳定性;对置信度分组比较预测与实际频率。三步回答不同问题,不应让一个总体准确率代替所有分析。
本节的小线性算例让你能精确追踪一次扰动,但真实网络的解释还涉及非线性与数据分布。读课程中的可视化时,应同时问“这张图支持了什么结论”和“还排除了哪些替代解释”。数学公式与实验证据在这里承担不同角色。
与本图相连的定义与证明:3.5 · 严格激活区域中的权重梯度。本节的具体条件与形式化范围见下文。
数学表述 3.3.1¶
隐层激活不必对应人类想象的边缘或笔画。观察权重、输入扰动和分布外样本,才能检验解释是否与实际计算一致。
对仿射层,扰动满足 ;在欧氏算子范数下 。这是局部敏感性分析的起点。
例 3.3.1 把概念用于具体计算
,输入增加 ,激活前的数值增加 。偏置不影响这一差值。对于像素图,平移会改变很多输入坐标,普通全连接层并不天然平移不变。
练习 3.3.1¶
为什么只检查训练集准确率不够?
展开解答与检查
模型可能记忆训练样本;还需独立测试及扰动检查。
Lean 对照 3.3.1 命题、证明与适用边界
精确验证单输入仿射模型的扰动等式;范数界、校准与泛化的经验主张未形式化。
NeuralNetworks.affine_input_sensitivity
theorem affine_input_sensitivity (w b x δ : ℝ) :
(w*(x+δ)+b)-(w*x+b)=w*δ := by ring