ADD / XOR / ROL:帮助我更好理解神经网络的实验(第1篇)
虽然我一直对在对抗性安全场景中使用机器学习和人工智能持怀疑态度,但也很高兴AI/ML变得重要——这至少让我觉得数学硕士(和夭折的数学博士)学业没有白费。我是"自底向上"数学方法的拥护者:通过大量实例实验形成猜想,再后续验证。我习惯通过实验建立直觉,部分原因是纯形式化推理时存在严重短板,部分因为我的数学思维偏重"几何直觉"——例如依赖几何直观来理解问题。
多年来我一直想更直观地理解深度神经网络的运作机制。学界既有"我们无法理解神经网络"的观点,也有"我们相信机制可解释性,已发现识别狗的神经元"的论断,但两者都难以令我信服。
今年我终于抽时间拿起纸笔,开始思考数据经过ReLU单元构成的神经网络时会发生什么。为什么只用ReLU?我认为ReLU与其他激活函数效果相当,且易于理解并实际应用于机器学习。它们是最简单的实验对象,而我一向主张从简单案例入手。
本文分享我的实验发现,称之为"深度学习的纸飞机或折纸视角"。后来我发现有人以"多面体透镜"为名讨论过类似概念,但这在可解释性社区中仍属边缘观点(这很奇怪,因为我相信这是理解神经网络的正确路径)。
实验设置
为建立直觉,我们训练一个从R²到R的神经网络(本质是学习灰度图像)。这样做的好处包括:
- 直观理解网络学习过程
- 通过高分辨率图像和低分辨率样本模拟训练误差与泛化误差
- 暂时避开高维几何的复杂性
ReLU神经元的几何意义
二维ReLU神经元函数f(x, y) = max(ax + by + c, 0) 就像带折痕的纸张:
- 参数a控制折痕沿x方向的倾斜度
- 参数b控制折痕沿y方向的倾斜度
- 参数c决定折痕的平移位置
这些参数共同定义平面如何被折叠:将平面划分为两个半空间,一侧函数值为0,另一侧为线性(仿射)函数。
单层ReLU网络实验
构建包含10个ReLU神经元的单层网络,每个神经元有a/b/c三个参数。训练过程相当于移动各纸张的折痕,通过加权组合逼近目标函数。以学习圆形图像为例:
- 网络逐步调整折痕位置
- 在每个折痕围成的凸区域选择不同仿射函数
- 折痕处函数值保持连续
将首层神经元增至500个后,观察到有趣现象:
- Adam优化器产生明显"脉冲"现象,原因待探究
- 大量折痕会聚集成簇,但圆形本身具有旋转不变性,这种非随机分布需要解释
- 学习锐利边缘(如黑白交界)比预期困难,可能是正则化抑制了大权重产生的尖锐折痕
实际应用示例
使用500神经元网络学习涂满防晒霜的面部照片时,重建图像呈现出明显的折纸质感,这或许不足为奇。
后续研究方向
近期将探讨:
- 网络深度增加时的变化
- 分类数据与交叉熵损失函数的影响
- 从实验理解泛化、过拟合和过参数化现象
(实验动态演示详见原文视频)