使用Grand Tour可视化神经网络
Grand Tour实战演示。 此可视化展示了一个神经网络在MNIST数据集上训练时,其最终10维层的行为。通过这项技术,可以观察到有趣的训练行为。例如,网络在学习分类数字 1 和 7 时,分别在训练周期 14 和 21 之后,呈现出一种近乎不连续的方式。
作者
李明伟 (某机构) 赵正则 (某机构) 卡洛斯·沙伊德格 (某机构)
发布日期:2020年3月16日 DOI:10.23915/distill.00025
Grand Tour 是一种经典的高维点云可视化技术,它将高维数据集投影到二维平面。随着时间的推移,Grand Tour 会平滑地动画其投影,使得数据集的每一种可能视图(最终)都能呈现给观众。
与 t-SNE 和 UMAP 等现代非线性投影方法不同,Grand Tour 从根本上来说是一种线性方法。在本文中,展示了如何利用 Grand Tour 的线性特性,来实现一些对于可视化神经网络行为特别有用的能力。具体来说,呈现了三个有趣的用例:可视化网络权重变化时的训练过程、可视化数据流经网络时的层间行为,以及可视化对抗样本是如何生成的以及它们是如何欺骗神经网络的。
引言
深度神经网络在监督学习竞赛中常常能达到同类最佳的性能。不幸的是,其决策过程以难以解释而闻名,训练过程也常常难以调试。在本文中,提出了一种可视化神经网络响应的方法,该方法利用了深度神经网络的属性和Grand Tour的特性。
值得注意的是,提出的方法使我们能够更直接地推理数据变化与最终可视化结果变化之间的关系。正如将要展示的,这种数据-视觉对应关系是所提出方法的核心,特别是与 UMAP 和 t-SNE 等其他非线性投影方法相比。
为了理解神经网络,经常尝试观察它对输入样本(真实的和合成的)的作用。这类可视化有助于阐明神经网络对单个样本的激活模式,但它们对于理解不同样本之间、网络训练过程中的不同状态之间,或者样本数据如何流经单个网络的不同层之间的关系,提供的见解可能较少。因此,目标是为感兴趣的对象周围的环境提供可视化:当前训练周期与下一个训练周期之间有什么区别?随着图像被送入网络,网络的分类是如何收敛(或发散)的?
线性方法具有吸引力,因为它们特别容易推理。Grand Tour的工作原理是生成数据集的随机、平滑变化的旋转,然后将数据投影到二维屏幕上:这两个过程都是线性的。尽管深度神经网络显然不是线性过程,但它们通常将其非线性限制在一小组操作中,使我们仍然能够推理其行为。所提出的方法通过提供更多的一致性来更好地保留上下文:应该能够知道,如果数据以特定方式不同,可视化将如何变化。
工作示例
为了说明将要介绍的技术,我们使用三个常见的图像分类数据集训练了深度神经网络模型:MNIST、fashion-MNIST 和 CIFAR-10。虽然我们的架构比当前的深度神经网络更简单、更小,但它仍然能代表现代网络,并且足够复杂,足以展示我们提出的技术和典型方法的缺点。
下图展示了本文中将使用的神经网络的简单功能图。该神经网络由一系列线性层(卷积层和全连接层)、最大池化层、ReLU层组成,最后是一个Softmax层。
即使神经网络能够实现令人难以置信的分类能力,但在底层,它们实际上只是相对简单函数的流水线。对于图像,输入是灰度图像的标量值二维数组或彩色图像的RGB三元组。当需要时,总可以将二维数组展平为一个等价的 (w⋅h⋅c) 维向量。类似地,任何复合函数之后的中间值,或一层之后的神经元激活,也可以被视为 R^n 中的向量,其中 n 是该层神经元的数量。例如,softmax 可以被视为一个10维向量,其值为正实数且总和为1。这种神经网络中数据的向量视角不仅允许以数学上紧凑的形式表示复杂数据,而且还提示了如何以更好的方式对其进行可视化。
大多数简单函数分为两类:它们要么是输入的线性变换(如全连接层或卷积层),要么是相对简单的、按分量工作的非线性函数(如 sigmoid 激活或 ReLU 激活)。某些操作,特别是最大池化和 softmax,不属于这两类。稍后将回到这一点。
上图帮助我们一次查看单个图像;然而,它没有提供足够的上下文来理解层与层之间、不同样本之间或不同类别标签之间的关系。为此,研究人员经常转向更复杂的可视化。
使用可视化理解深度神经网络
首先考虑可视化深度神经网络训练过程的问题。在训练神经网络时,我们优化函数中的参数以最小化一个标量损失函数,通常通过某种形式的梯度下降。我们希望损失不断减少,因此监控整个训练和测试损失在训练轮次(或“周期”)中的历史记录,以确保损失随时间减少。下图显示了 MNIST 分类器的训练损失线图。
虽然其总体趋势符合预期,损失稳步下降,但我们在第14和21个周期左右看到了一些奇怪的现象:曲线在再次下降之前几乎变平。发生了什么?是什么原因造成的?
如果按真实标签/类别将输入样本分开,并像上图那样绘制每个类别的损失,我们会看到两次下降是由类别 1 和 7 引起的;模型在训练过程中的不同时间学习不同的类别。尽管网络很早就学会了识别数字 0、2、3、4、5、6、8 和 9,但直到第14个周期才开始成功识别数字 1,直到第21个周期才开始识别数字 7。如果我们事先知道要寻找特定类别的错误率,那么这张图效果很好。但是,如果我们真的不知道要寻找什么呢?
在这种情况下,可以考虑同时查看所有样本的神经元激活(例如在最后的 softmax 层)的可视化,以寻找诸如类别特定行为之类的模式以及其他模式。如果该层只有两个神经元,一个简单的二维散点图就可以。然而,示例数据集的 softmax 层中的点是10维的(在更大规模的分类问题中,这个数字可能大得多)。我们需要要么一次显示两个维度(随着可能图表数量呈二次方增长,这无法很好地扩展),要么使用降维将数据映射到二维空间,并在单个图表中显示它们。
最先进的降维是非线性的
诸如 t-SNE 和 UMAP 等现代降维技术能够实现令人印象深刻的汇总能力,提供二维图像,其中相似的点往往非常有效地聚集在一起。然而,这些方法并不特别擅长在精细尺度上理解神经元激活的行为。考虑前面提到的关于 MNIST 分类器对数字 1 和 7 具有不同学习率的有趣特征:网络直到第14个周期才学会识别数字 1,直到第21个周期才学会识别数字 7。我们计算了所描述现象发生时期的 t-SNE、动态 t-SNE 和 UMAP 投影。现在考虑在训练期间识别这种特定类别行为的任务。提醒一下,在这种情况下,奇怪的行为发生在数字 1 和 7 上,分别在第14和21个周期左右。虽然这种行为并非特别微妙——数字从错误分类变为正确分类——但在下面的任何图中都很难注意到。只有在仔细检查时才能注意到(例如)在 UMAP 图中,在第13个周期聚集在底部的数字 1 在第14个周期变成了一个新的触手状特征。
非线性嵌入无法阐明这种现象的一个原因是,对于数据的特定变化,它们违背了数据-视觉对应原则。更具体地说,该原则指出,特定的可视化任务应被建模为改变数据的函数;可视化将此变化从数据传递到视觉,我们可以研究可视化变化易于感知的程度。理想情况下,我们希望数据和视觉的变化在幅度上匹配:视觉上几乎不可察觉的变化应归因于尽可能小的数据变化,而视觉上的显著变化应反映数据上的重大变化。在这里,仅在数据的一个子集(例如,从第13到14个周期的所有数字 1 点)发生了重大变化,但可视化中的所有点都发生了剧烈移动。对于 UMAP 和 t-SNE,每个单点的位置都非平凡地依赖于此类嵌入算法中的整个数据分布。这种特性对于可视化来说并不理想,因为它不满足数据-视觉对应关系,使得难以从可视化中的变化推断数据中的潜在变化。
具有非凸目标的非线性嵌入也往往对初始条件敏感。例如,在 MNIST 中,尽管神经网络在第30个周期开始稳定,但 t-SNE 和 UMAP 在第30、31和32个周期之间(实际上,一直到99个周期)仍然生成截然不同的投影。时间正则化技术(如动态 t-SNE)缓解了这些一致性问题,但仍然存在其他可解释性问题。
现在,考虑另一个任务:识别神经网络容易混淆的类别。对于这个例子,我们将使用 Fashion-MNIST 数据集和分类器,并考虑凉鞋、运动鞋和踝靴之间的混淆。如果我们事先知道这三个类别很可能混淆分类器,那么我们可以直接设计一个合适的线性投影,如下图所示(我们使用 Grand Tour 和稍后将描述的直接操纵技术找到了这个特定的投影)。这种情况下的模式非常显著,形成了一个三角形。相比之下,t-SNE 错误地将类别集群分开了(可能是因为超参数选择不当)。UMAP 成功地分离了这三个类别,但即使在这种情况下,也无法区分第5和第10个周期中分类器的三向混淆(在线性方法中,通过三角形中心附近点的存在来体现)与后期周期中的多组双向混淆(通过“空”中心来证明)。
当有机会时,我们应该更倾向于那些数据变化能产生可预测、视觉上显著结果变化的方法,而线性降维通常具有这种属性。在这里,我们重新审视上述线性投影,在一个用户可以轻松浏览不同训练周期的界面中。此外,我们引入了另一种仅有线性方法才能实现的有用能力:直接操纵。从 n 维到 2 维的每个线性投影都可以由 n 个二维向量表示,这些向量具有直观的解释:它们是 n 维空间中的 n 个规范基向量将被投影到的向量。在投影最终分类层的上下文中,这特别容易解释:它们是以 100% 的置信度被分类到任何一个特定类别的输入的目标位置。如果为用户提供通过拖拽用户界面句柄来更改这些向量的能力,那么用户可以直观地设置新的线性投影。
这种设置提供了额外的良好特性,可以解释前面插图中的显著模式。例如,因为投影是线性的,并且分类层中向量的系数之和为 1,所以在两个类别之间具有一半置信度的分类输出被投影到位于两个类别句柄中间位置的向量。
从这个线性投影中,我们可以轻松地识别出数字 1 在第 14 个周期和数字 7 在第 21 个周期的学习情况。
这种特殊属性在下面的 Fashion-MNIST 示例中得到了清晰的说明。该模型混淆了凉鞋、运动鞋和踝靴,因为数据点在 softmax 层中形成了一个三角形形状。
这个线性投影清晰地显示了模型对凉鞋、运动鞋和踝靴的混淆。类似地,这个投影显示了关于套头衫、外套和衬衫的真实三向混淆。(衬衫也与T恤/上衣混淆。)这两个投影都是通过直接操纵找到的。
落在类别之间的样本表明模型难以区分这两类,例如凉鞋与运动鞋,以及运动鞋与踝靴。但请注意,凉鞋与踝靴之间这种情况发生得不多:没有多少样本落在这两类之间。此外,大多数数据点被投影到靠近三角形边缘的位置。这告诉我们,大多数混淆发生在三个类别中的两个之间,它们实际上是双向混淆。
在同一个数据集中,我们还可以看到套头衫、外套和衬衫填充了一个三角形平面。这与凉鞋-运动鞋-踝靴的情况不同,因为样本不仅落在三角形的边界上,还落在其内部:这是一个真正的三向混淆。
类似地,在 CIFAR-10 数据集中,我们可以看到狗和猫、飞机和船之间的混淆。CIFAR-10 中的混合模式不如 Fashion-MNIST 中清晰,因为有更多的样本被错误分类。
这个线性投影清晰地显示了模型对猫和狗的混淆。类似地,这个投影显示了关于飞机和船的混淆。这两个投影都是通过直接操纵找到的。
Grand Tour
在上一节中,我们利用了知道要可视化哪些类别的优势。这意味着为手头的特定任务设计线性投影很容易。但是,如果我们事先不知道要选择哪个投影,因为我们不太清楚要寻找什么呢?主成分分析是典型的线性降维方法,它选择投影数据以尽可能保留最大的方差。然而,softmax 层中的数据分布通常在许多轴向上具有相似的方差,因为每个轴都围绕类向量集中了相似数量的样本。因此,尽管 PCA 投影在训练周期中是可解释且一致的,但 softmax 激活的前两个主成分并不比第三个好多少。那么我们应该选择哪一个呢?我们建议不使用 PCA,而是使用一种称为 Grand Tour 的技术,通过平滑地动画随机投影来可视化这些数据。
从一个随机速度开始,它在高维空间中平滑地围绕原点旋转数据点,然后将其投影到 2D 进行显示。以下是 Grand Tour 在一些(低维)对象上的作用示例:
- 在正方形上,Grand Tour 以恒定角速度旋转它。
- 在立方体上,Grand Tour 在 3D 中旋转它,其 2D 投影让我们看到立方体的每一个面。
- 在 4D 立方体(超立方体)上,旋转发生在 4D 中,2D 视图显示了每一种可能的投影。
Softmax 层的 Grand Tour
首先看 softmax 层的 Grand Tour。Softmax 层相对容易理解,因为它的轴具有很强的语义。如前所述,第 i 个轴对应于网络预测给定输入属于第 i 个类的置信度。
Softmax 层的 Grand Tour 让我们能够定性评估模型的性能。在本文的特定案例中,由于我们对三个数据集使用了可比较的架构,这也允许我们衡量每个数据集分类的相对难度。我们可以看到,对于 MNIST 数据集,数据点的分类最自信,数字靠近 softmax 空间十个角点之一。对于 Fashion-MNIST 或 CIFAR-10,分离不那么清晰,更多的点出现在内部。
训练动态的 Grand Tour
线性投影方法自然地给出了一个独立于输入点的公式,允许我们在数据变化时保持投影固定。回顾我们的工作示例,我们对每个神经网络进行了 99 个周期的训练,并记录了训练和测试样本子集上神经元激活的完整历史。然后,我们可以使用 Grand Tour 来可视化这些网络的实际训练过程。
开始时,当神经网络被随机初始化时,所有样本都位于 softmax 空间的中心附近,每个类别的权重相等。通过训练,样本移动到 softmax 空间中的类向量。Grand Tour 还让我们能够比较训练和测试数据的可视化,从而定性评估过拟合。在 MNIST 数据集中,测试图像在训练过程中的轨迹与训练集一致。数据点直接向其真实类别的角点移动,所有类别在大约 50 个周期后稳定下来。另一方面,在 CIFAR-10 中,训练集和测试集之间存在不一致。测试集中的图像持续振荡,而大多数来自训练集的图像收敛到相应的类别角点。在第 99 个周期,我们可以清楚地看到这两个集合在分布上的差异。这表明模型过拟合了训练集,因此不能很好地泛化到测试集。
通过这种 CIFAR-10 视图,测试集(右)中点的颜色比训练集(左)更加混合,显示了训练过程中的过拟合。将 CIFAR-10 与 MNIST 或 fashion-MNIST 进行比较,后者的训练集和测试集之间差异较小。
层动态的 Grand Tour
鉴于所提出的 Grand Tour 和轴直接操纵技术,理论上我们可以单独可视化和操纵神经网络的任何中间层。然而,这不是一个非常令人满意的方法,原因有二:
- 就像我们在训练数据变化时保持投影固定一样,我们希望当数据在神经网络的各层之间移动时,“保持投影固定”。然而,这并不简单。例如,神经网络中的不同层具有不同的维度。如何将一层的旋转与另一层的旋转连接起来?
- Softmax 层中的类“轴句柄”很方便,但这仅当层的维度相对较小时才实用。例如,对于数百个维度,会有太多的轴句柄无法自然交互。此外,隐藏层没有像 softmax 层那样清晰的语义,因此操纵它们不会那么直观。
为了解决第一个问题,我们需要更仔细地关注层转换其给定数据的方式。为了了解线性变换如何以一种特别低效的方式被可视化,考虑以下(非常简单的)权重(由矩阵 A 表示),它接收一个2维隐藏层 k 并产生另一个2维层 k+1 的激活。该权重只是将 2D 中的两个激活取反。想象一下,我们希望可视化数据在各层之间移动时网络的行为。一种插值此动作的源 x0 和目标 x1 = A(x0) = -x0 的方法是通过简单的线性插值。实际上,这种策略将线性投影系数从一层复用到下一层。这是一个很自然的想法,因为它们具有相同的维度。但是,请注意以下内容:A 给出的变换是数据的简单旋转。层 k+1 的每一个线性变换都可以简单地编码为层 k 的线性变换,只要该变换对条目的负值进行操作。此外,由于 Grand Tour 本身内置了旋转,对于每一个给出层 k 的某个图像的配置,通过考虑 A 的作用,存在一个不同的配置,可以为层 k+1 产生相同的图像。实际上,天真的插值违背了数据-视觉对应原则:数据的一个简单变化(2D 中的取反/180度旋转)导致了可视化的剧烈变化(所有点穿过原点)。
这一观察指向了一个更通用的策略:在设计可视化时,我们应该尽可能明确我们试图在可视化中捕捉输入的哪些部分(或过程的哪些部分)。我们应该寻求明确阐述哪些是纯粹的表示性伪影(应该丢弃),哪些是应该从表示中提取的真实特征。在这里,我们声称神经网络线性变换中的旋转因子远不如其他因子(如缩放和非线性)重要。正如将要展示的,Grand Tour 在这种情况下特别有吸引力,因为它可以设计成对数据旋转保持不变。因此,神经网络线性变换中的旋转分量将被明确地隐藏起来。
具体来说,我们通过利用线性代数的中心定理来实现这一点。奇异值分解定理表明,任何线性变换都可以分解为一系列非常简单的操作:一个旋转、一个缩放和另一个旋转。将矩阵 A 应用于向量 x 等价于应用这些简单操作:xA = x U Σ V^T。但请记住,Grand Tour 的工作原理是旋转数据集,然后将其投影到 2D。结合起来,这两个事实意味着,就 Grand Tour 而言,可视化向量 x 与可视化 xU 相同,可视化向量 xUΣV^T 与可视化 xUΣ 相同。这意味着 Grand Tour 所见的任何线性变换都等价于 xU 和 xUΣ 之间的转换——一个简单的(按坐标)缩放。这明确地说明,任何线性操作(其矩阵在标准基中表示)都是在两侧使用适当选择的标准正交基的缩放操作。因此,Grand Tour 提供了一种自然、优雅且计算高效的方法来对齐由全连接(线性)层分隔的激活的可视化。
(在以下部分,为了减少在基于 Web 的演示中传输的数据量,将数据点数量减少到 500,周期减少到 50。)有了现成的线性代数结构,现在我们能够将行为和模式从 softmax 追溯到更早的层。例如,在 fashion-MNIST 中,我们在 softmax 层观察到鞋子(凉鞋、运动鞋和踝靴作为一个组)与其他所有类别的分离。追溯到更早的层,我们可以看到这种分离早在第5层就发生了:
通过层对齐,从这个视图很容易看到鞋子的早期分离。
对抗动态的 Grand Tour
作为最后一个应用场景,展示了 Grand Tour 如何阐明对抗样本在被神经网络处理时的行为。为了说明,我们使用 MNIST 数据集,并对 89 个数字 8 的样本添加对抗性扰动,以欺骗网络,使其认为它们是 0。之前,我们要么动画训练动态,要么动画层动态。现在固定一个训练良好的神经网络,并可视化对抗样本的训练过程,因为它们本身通常是通过优化过程生成的。这里,使用了快速梯度符号法。同样,因为 Grand Tour 是一种线性方法,对抗样本随时间的位置变化可以忠实地归因于神经网络感知图像方式的变化,而不是可视化的潜在伪影。让我们研究一下对抗样本是如何演化以欺骗网络的:
从这个 softmax 视图,我们可以看到对抗样本是如何从 8 演变成 0 的。然而,在相应的 pre-softmax 中,这些对抗样本停在两个类别的决策边界附近。将数据显示为图像,可以看到每一步生成的实际图像,或者显示为按标签着色的点。
通过这种对抗性训练,网络最终以高置信度声称给定的输入都是 0。如果我们停留在 softmax 层并在图中滑动对抗训练步骤,可以看到对抗样本从类别 8 的高分移动到类别 0 的高分。尽管所有对抗样本最终都被分类为目标类别(数字 0),但其中一些绕道到了靠近空间质心的地方(大约在第 25 个周期),然后向目标移动。比较两组图像的实际图像,我们看到那些“绕道”的图像往往噪声更大。
然而,更有趣的是中间层发生的事情。例如,在 pre-softmax 中,我们看到这些伪造的 0 与真实的 0 行为不同:它们更靠近两个类别的决策边界,并自己形成一个平面。
讨论
Grand Tour 的局限性
早期,我们将几种最先进的降维技术与 Grand Tour 进行了比较,表明非线性方法在理解神经网络行为方面不具备 Grand Tour 那样多的理想特性。然而,最先进的非线性方法有其自身的优势。每当几何形状是关注点时,比如理解 softmax 层中的多向混淆,线性方法更易于解释,因为它们在投影中保留了数据的某些几何结构。当拓扑是主要关注点时,例如我们希望聚类数据或需要为对几何不那么敏感的下游模型进行降维,我们可能会选择 UMAP 或 t-SNE 等非线性方法,因为它们在投影数据方面具有更多自由度,并且通常能更好地利用可用的较少维度。
动画和直接操纵的力量
在比较线性投影与非线性降维时,我们使用了小倍数图表来对比训练周期和降维方法。而 Grand Tour 则使用单个动画视图。在比较小倍数和动画时,文献中除了特定设置(如动态图绘制)或担心小倍数和动画图之间的内容不可比之外,对于哪个更好并没有普遍共识。无论这些担忧如何,在我们的场景中,动画的使用源于直接操纵以及 Grand Tour 运作所需的连续旋转存在。
非序列模型
在我们的工作中,我们使用的模型是纯“序列”的,即层可以按数字顺序排列,并且第 n+1 层的激活仅仅是第 n 层激活的函数。然而,在最近的深度神经网络架构中,通常具有非序列部分,例如高速路分支或用于不同任务的专用分支。使用我们的技术,可以可视化每个此类分支上的神经元激活,但需要额外的研究来直接整合多个分支。
扩展到更大的模型
现代架构也很宽泛。特别是当涉及卷积层时,如果我们将这些层视为作用于展平的多通道图像的大型稀疏矩阵,可能会遇到可扩展性问题。为了简单起见,在本文中,我们通过写出其显式矩阵表示来蛮力计算此类卷积层的对齐。然而,多通道二维卷积的奇异值分解可以高效计算,然后可以直接用于对齐,如前所述。
技术细节
本节介绍了实现轴句柄和数据点直接操纵,以及实现层转换投影一致性技术所需的技术细节。
符号
在本节中,符号约定是数据点表示为行向量。整个数据集布局为一个矩阵,其中每行是一个数据点,每列代表一个不同的特征/维度。因此,当对数据应用线性变换时,行向量(以及整个数据矩阵)左乘变换矩阵。这有一个额外的好处,当链式应用矩阵乘法时,公式从左到右阅读并与交换图对齐。
直接操纵
前面呈现的直接操纵为用户提供了对数据点可能投影的显式控制。提供了两种模式:直接操纵类轴(“轴模式”),或通过其质心直接操纵一组数据点(“数据点模式”)。根据维度和轴语义,可能会偏好一种模式而不是另一种。将会看到,轴模式是数据点模式的特例,因为可以将轴句柄视为数据集中一个特定的“虚构”点。由于其简单性,将首先介绍轴模式。
轴模式
直接操纵的隐含语义是,当用户拖拽一个UI元素(在这种情况下是轴句柄)时,他们向系统发出信号,希望相应的数据点被投影到UI元素被拖放到的位置,而不是它被拖拽离开的位置。在我们的案例中,整体投影是一个旋转(最初由 Grand Tour 确定),而任意的用户操纵可能不一定产生一个也是旋转的新投影。因此,目标是找到一个新的旋转,既满足用户请求,又接近 Grand Tour 投影的先前状态,以便结果状态满足用户请求。
简而言之,当用户将第 i 个轴句柄拖拽 (dx, dy) 时,我们将它们加到 Grand Tour 矩阵的第 i 行的前两个条目上,然后对新矩阵的行执行 Gram-Schmidt 正交归一化。在详细探讨其工作原理之前,先形式化 Grand Tour 在规范基向量 e_i 上的过程。如下图所示,e_i 经过一个正交的 Grand Tour 矩阵 GT,产生其自身的旋转版本 e_i~。然后,π2 是一个只保留 e_i~ 的前两个条目并给出要在图中显示的句柄的2D坐标 (x_i, y_i) 的函数。
当用户在屏幕画布上拖拽一个轴句柄时,他们在 xy 平面上引发了一个增量变化 Δ = (dx, dy)。句柄的坐标变为:(x_i^(new), y_i^(new)) := (x_i + dx, y_i + dy)。注意,x_i 和 y_i 是轴句柄在 Grand Tour 旋转后在高维空间中的前两个坐标,因此 (x_i, y_i) 上的增量变化在 e_i~ 上引发了一个增量变化 Δ~ := (dx, dy, 0, 0, ...):e_i~ → e_i~ + Δ~。
为了找到尊重此变化的邻近 Grand Tour 旋转,首先注意 e_i~ 正是正交 Grand Tour 矩阵 GT 的第 i 行。自然地,我们希望新矩阵是原始 GT,其第 i 行被 e_i~ + Δ~ 替换,即,应分别将 dx 和 dy 加到 GT 的第 (i,1) 个条目和第 (i,2) 个条目上。然而,对于任意的 (dx, dy),GT~ 不是正交的。为了找到一个近似于 GT~ 的正交矩阵,我们对 GT~ 的行应用 Gram-Schmidt 正交归一化,在 Gram-Schmidt 过程中首先考虑第 i 行:GT^(new) := GramSchmidt(GT~)。请注意,第 i 行在 Gram-Schmidt 期间被归一化为单位向量,因此句柄的结果位置是 e_i~^(new) = normalize(e_i~ + Δ~),这可能与 e_i~ + Δ~ 不完全相同。然而,对于任何 Δ~,差异的范数上限为 ||Δ~||。
数据点模式
现在解释如何直接操纵数据点。从技术上讲,此方法一次只考虑一个点。对于一组点,我们计算它们的质心,并用此方法直接操纵这一个点。更仔细地思考轴模式的过程,可以知道如何拖拽任意单个点。回想一下,在轴模式中,我们将用户的操纵 Δ~ := (dx, dy, 0, 0, ...) 加到第 i 个轴句柄的位置 e_i~ 上。这在 Grand Tour 矩阵 GT 的第 i 行引发了一个增量变化。接着,作为 Gram-Schmidt 的第一步,我们归一化了这一行:GT_i^(new) := normalize(GT~_i) = normalize(e_i~ + Δ~)。这两个步骤使轴句柄从 e_i~ 移动到 e_i~^(new) := normalize(e_i~ + Δ~)。
观察这种移动的几何形状,对 e_i~ 进行“加增量然后归一化”等价于从 e_i~ 向 e_i~^(new) 的旋转,如下图所示。这种几何解释可以直接推广到任何任意数据点。
该图显示了 3D 情况,但在更高维空间中基本相同,因为 e_i~ 和 e_i~+Δ~ 两个向量只张成一个2维子空间。现在我们对直接操纵有了一个很好的几何直觉:拖拽一个点会在高维空间中引发一个简单的旋转。这种直觉正是我们实现对任意数据点进行直接操纵的方式,具体说明如下。
将此观察从轴句柄推广到任意数据点,我们希望找到将选定数据点子集的质心 c~ 移动到 c~^(new) := (c~ + Δ~) * ||c~|| / ||c~ + Δ~|| 的旋转。首先,旋转角度可以通过它们的余弦相似度找到。接下来,为了找到旋转的矩阵形式,我们需要一个方便的基。设 Q 是一个(标准正交)基变换矩阵,其前两行构成2维子空间 span(c~, c~^(new))。例如,我们可以让它的第一行是 normalize(c~),第二行是其在 span(c~, c~^(new)) 中的正交补 normalize(c~_⊥^(new)),其余行完成整个空间。利用 Q,我们可以找到将平面 span(c~, c~^(new)) 旋转角度 θ 的矩阵。新的 Grand Tour 矩阵是原始 GT 与 ρ 的矩阵乘积:GT^(new) := GT ⋅ ρ。
现在我们应该能看到轴模式和数据点模式之间的联系。在数据点模式中,可以通过 Gram-Schmidt 找到 Q。在轴模式中,第 i 行优先的 Gram-Schmidt 将旋转和基变换合并为一步。
层转换
ReLU 层
当第 l 层是 ReLU 函数时,输出激活是 X^l = ReLU(X^{l-1})。由于 ReLU 不改变维度,并且函数是逐坐标进行的,我们可以通过简单的线性插值来动画过渡:对于时间参数 t∈[0,1],X^{(l-1)→l}(t) := (1-t) X^{l-1} + t X^l。
线性层
线性层之间的过渡看起来可能很复杂,但正如将要展示的,这是由于在过渡两侧选择了不匹配的基所致。如果 X^l = X^{l-1} M,其中 M∈R^{m×n} 是线性变换的矩阵,那么它有奇异值分解:M = U Σ V^T。对于任意的 U 和 V^T,X^{l-1} 上的变换是旋转 (U)、缩放 (Σ) 和另一次旋转 (V^T) 的组合,这可能看起来很复杂。然而,考虑将层 X^l 的 Grand Tour 视图与层 X^{l+1} 的视图相关联的问题。Grand Tour 有一个代表数据集当前旋转的单一参数。由于我们的目标是保持过渡一致,我们注意到 U 和 V^T 基本上没有意义——它们只是对视图的旋转,可以通过更改任一层的 Grand Tour 旋转参数来精确“抵消”。因此,我们不展示 M,而是寻求过渡只动画 Σ 的效果。Σ 是按坐标的缩放,因此我们可以在适当的基变换后,像 ReLU 一样对其进行动画。给定 X^l = X^{l-1} U Σ V^T,我们有 (X^l V) = (X^{l-1} U) Σ。对于时间参数 t∈[0,1],X^{(l-1)→l}(t) := (1-t)(X^{l-1}U) + t(X^l V) = (1-t)(X^{l-1}U) + t(X^{l-1} U Σ)。
卷积层
卷积层可以表示为特殊的线性层。通过改变表示,可以像上一节那样动画卷积层。对于2D卷积,这种表示改变涉及展平输入和输出,并将核模式重复成一个稀疏矩阵 M∈R^{m×n},其中 m 和 n 分别是输入和输出的维度。这种表示改变仅适用于小维度(例如,最多1000),因为我们需要为线性层求解 SVD。然而,多通道2D卷积的奇异值分解可以高效计算,然后可以直接用于对齐。
最大池化层
动画最大池化层并不简单,因为最大池化既不是线性的也不是按坐标的。我们将其替换为平均池化,并按平均值与最大值的比率进行缩放。我们计算平均池化的矩阵形式,并使用其 SVD 来对齐该层之前和之后的视图。在功能上,我们的操作与最大池化具有等效结果,但这会引入意想不到的伪影。
结论
尽管 t-SNE 和 UMAP 功能强大,但它们常常无法提供所需的对应关系,而这些对应关系,令人惊讶的是,可能来自像 Grand Tour 这样相对简单的方法。我们提出的 Grand Tour 方法在用户可以直接操纵或期望直接操纵时特别有用。相信有可能设计出兼顾两者优点的方法,使用非线性降维来创建激活层的中间、相对低维的表示,并使用 Grand Tour 和直接操纵来计算最终投影。
致谢
用于 js/lib/webgl_utils/ 下的 WebGL 实用代码改编自 Angel 的计算机图形学书籍补充材料。
讨论与评审
评审1 - 匿名 评审2 - 匿名 评审3 - 匿名
参考文献
(原始参考文献列表略)FINISHED