KAN: Kolmogorov–Arnold Networks
公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)
目录
0. 摘要
1. 简介
2. KAN
2.1 KA 表示定理
2.2 KAN 架构
2.3 KAN 的逼近能力和缩放定律
2.4 对于准确性:网格扩展
2.5 解释性:简化 KAN 并使其可交互
2.5.1 简化技术
2.5.2 玩具示例:人类如何与 KAN 交互
3. KAN 是精确的
4. KAN 是可解释的
4.1 监督学习
4.2 无监督学习
4.3 应用到数学:结理论(Knot Theory)
4.4 应用到物理:安德森定位
6. 讨论
附录
A. KAN 函数
B. 可学习激活网络(LAN)
B.1 架构
B.2 LAN 解释性结果
B.3 图像拟合(LAN)
C. 对超参数的依赖
KAN 直播
1. KAN 擅长什么?
2. 符号主义 v.s. 连接主义
3. KAN 和 MLP 的差别
4. KAN 自然吗?
5. KAN 能否使用傅里叶、切比雪夫等正交的多项式?
6. KAN 能否用于图像?
0. 摘要
受 Kolmogorov-Arnold 表示定理启发,我们提出 Kolmogorov-Arnold 网络(KAN)作为多层感知器(MLP)的有前途的替代品。虽然 MLP 在节点(“神经元”)上有固定的激活函数,但 KAN 在边(“权重”)上有可学习的激活函数。KAN 没有线性权重——每个权重参数都被参数化为样条函数(spline)的单变量函数所取代。我们表明,这一看似简单的改变使 KAN 在准确性和可解释性方面胜过 MLP。在准确性方面,比起更大的 MLP,较小的 KAN 在数据拟合和 PDE 求解方面可以实现可比较或更好的准确性。在理论上和实证上,KAN 具有比 MLP 更快的神经扩展定律。在可解释性方面,KAN 可以直观地可视化,并且可以轻松地与人类用户进行交互。通过数学和物理领域的两个示例,KAN 被证明是有用的 “合作者”,帮助科学家(重新)发现数学和物理定律。总而言之,KAN 是MLP 的有前途的替代品,为今天依赖于 MLP 的深度学习模型进一步改进的机会打开了大门。
项目页面:https://github.com/KindXiaoming/pykan
1. 简介
与 MLP 类似,KAN 具有全连接的结构。然而,MLP 在节点(“神经元”)上放置固定的激活函数,而 KAN 在边(“权重”)上放置可学习的激活函数,如图 0.1 所示。因此,KAN 根本没有线性权重矩阵:相反,每个权重参数都被替换为可学习的一维函数,参数化为样条函数。KAN 的节点仅简单地对传入信号进行求和,而不应用任何非线性。有人可能担心 KAN 的成本过高,因为每个 MLP 的权重参数都变成了 KAN 的样条函数。幸运的是,KAN 通常允许比 MLP 更小的计算图。例如,我们展示了对于 PDE 求解,一个 2 层宽度为 10 的 KAN 比一个 4 层宽度为 100 的 MLP 要准确 100倍(10^-7 vs 10^-5 均方误差),并且参数效率要高100倍(102 vs 10^4 参数)。
注:可以简单地理解为
MLP | 激活函数:固定 | 权重矩阵:可学习 |
KAN | 内层函数:可学习激活(样条函数,spline) | 外层函数:与内层相似的 KAN 层 |
毫不奇怪,利用 Kolmogorov-Arnold(KA)表示定理构建神经网络的可能性已经被研究过。然而,大多数工作仍然固守于原始的深度为 2、宽度为(2n+1)的表示,并且没有机会利用更现代的技术(例如反向传播)来训练网络。我们的贡献在于将原始的 KA 表示概括到任意宽度和深度,使其在当今的深度学习世界中焕发新生,并利用大量的实证实验来突显其作为 AI + Science 基础模型的潜在作用,因为其准确性和可解释性。
尽管它们具有优雅的数学解释,但 KAN 只不过是样条函数和 MLP 的组合,利用了它们各自的优势并避免了各自的弱点。样条函数对低维函数精确,易于局部调整,并且能够在不同分辨率之间切换。然而,由于无法利用组合结构,样条函数存在严重的维度诅咒(curse of dimensionality,COD)问题。另一方面,MLP 由于其特征学习而不太受维度诅咒的影响,但在低维度上比样条函数的精度低,因为无法优化一元函数。为了准确地学习一个函数,模型不仅应该学习组合结构(外部自由度),还应该很好地近似一元函数(内部自由度)。KAN 是这样的模型,因为它们在外部类似于 MLP,在内部类似于样条函数。因此,KAN 不仅可以学习特征(由于它们与 MLP 的外部相似性),还可以将这些学习到的特征优化到很高的精度(由于它们与样条函数的内部相似性)。例如,给定一个高维函数
样条函数在大 N 时会因维度诅咒而失败;MLP 潜在地可以学习广义可加结构,但对于使用 ReLU激活的指数和正弦函数的近似非常低效。相比之下,KAN 可以很好地学习组合结构和一元函数,因此在很大程度上优于 MLP(见图3.1)。
2. KAN
2.1 KA 表示定理
Vladimir Arnold 和 Andrey Kolmogorov 证明了,如果 f 是在有界域上的多变量连续函数,则 f 可以被写成单变量连续函数和加法二元运算的有限组合。更具体地说,对于一个光滑的 f:[0, 1]^n → R,
从某种意义上说,他们表明了唯一真正的多变量函数是加法的,因为每个其他函数都可以用单变量函数和求和来表示。有人可能天真地认为这对机器学习来说是个好消息:学习高维函数归结为学习多项式数量的一维函数。然而,这些一维函数可能是不光滑甚至是分形的(fractal),因此在实践中可能无法学习。由于这种病态行为,KA 定理基本上被判了死刑,在机器学习中被认为在理论上是正确的,但在实践中无用。
然而,我们对 KA 定理在机器学习中的用处更为乐观。首先,我们不必固守于原始的公式 (2.1),它只有两层非线性和隐藏层中的少量项(2n+1):我们将将网络推广到任意宽度和深度。其次,科学和日常生活中的大多数函数通常是光滑的,并且具有稀疏的组合结构,可能有利于平滑的 KA 表示。这里的哲学与物理学家的思维方式接近,他们通常更关心典型情况而不是最坏情况。毕竟,我们的物理世界和机器学习任务必须具有结构,才能使物理学和机器学习有用或普遍可行。
2.2 KAN 架构
假设我们有一个监督学习任务,包括输入输出对 {xi, yi},我们希望找到一个 f,使得对于所有数据点,yi ≈ f(xi)。公式 (2.1) 意味着如果我们能找到合适的一维函数 ϕ_(q,p) 和 Φ_q,我们就完成了。这启发我们设计一个神经网络,明确地参数化公式 (2.1)。由于所有要学习的函数都是一维函数,我们可以将每个一维函数参数化为 B-spline 曲线,其学习系数是局部 B-spline 基函数的可学习系数(见图 2.2 右侧)。现在我们有了 KAN 的一个原型,其计算图由公式 (2.1) 精确定义,并在图 0.1 (b) 中呈现(其中输入维度 n = 2),以两层神经网络的形式出现,激活函数放置在边而不是节点上(节点上执行简单求和),中间层的宽度为 2n + 1。
正如前面提到的,这样的网络被认为在实践中用光滑样条函数近似任何函数都太简单了!因此,我们将我们的 KAN 推广为更宽更深的网络。如何使KAN更深并不立即清楚,因为 KA 表示对应于两层 KAN。据我们所知,尚没有对应于更深层 KAN 的 “广义” 版本的定理。突破发生在我们注意到 MLP 和 KAN 之间的类比时。在 MLP 中,一旦我们定义了一层(由线性变换和非线性组成),我们可以堆叠更多层以使网络更深。要构建深层 KAN,我们首先应该回答:“什么是 KAN 层?” 原来,一个具有 n_in 维输入和 n_out 维输出的 KAN 层可以定义为一个一维函数矩阵
其中函数 ϕ_(q,p) 具有可训练参数,如下所述。在 KA 定理中,内部函数形成具有 n_in = n 和 n_out = 2n+1 的 KAN 层,外部函数形成具有 n_in = 2n+1 和 n_out = 1 的 KAN 层。因此,公式 (2.1) 中的 KA 表示简单地是两个 KAN 层的组合。现在清楚了更深的 KA 表示意味着什么:只需堆叠更多的 KAN 层!
让我们引入一些符号。本段将会有点技术性,但读者可以参考图 2.2(左)来获得具体示例和直观理解。KAN 的形状由一个整数数组表示
其中 n_i 是计算图第 i 层中的节点数。我们用 (l, i) 表示第 l 层中的第 i 个神经元,并用 x_(l,i) 表示(l, i)-神经元的激活值。在第 l 层和第 l+1 层之间,有 n_l·n(l+1) 个激活函数:连接 (l, i) 和 (l + 1, j) 的激活函数表示为
函数 ϕ_(l,j,i) 的前激活(输入)简单地是 x_(l,i);ϕ_(l,j,i) 的后激活(输出)表示为 ˜x_(l,j,i) ≡ ϕ_(l,j,i) (xl,i)。第 (l + 1, j) 个神经元的激活值简单地是所有传入后激活的求和:
用矩阵形式表示,这读作
其中 Φl 是对应于第 l 层 KAN 层的函数矩阵。一个通用的 KAN 网络是 L 层的组合:给定一个输入向量 x_0 ∈ R_(n0),KAN 的输出是
我们也可以重写上面的方程,使其更类似于公式(2.1),假设输出维度 n_L = 1,并定义 f(x) ≡ KAN(x):
这显然相当繁琐。相比之下,我们对 KAN 层及其可视化的抽象更为简洁和直观。原始的 KA 表示公式 (2.1) 对应于形状为 [n, 2n + 1, 1] 的 2 层 KAN。请注意,所有操作都是可微分的,因此我们可以使用反向传播训练 KAN。为了比较,一个 MLP 可以写成仿射变换 W 和非线性 σ 的交错:
很明显,MLP 将线性变换和非线性分开处理,而 KAN 将它们统统合在 Φ 中。在图 0.1 (c) 和 (d)中,我们将三层 MLP 和三层 KAN 可视化,以澄清它们的区别。
实现细节。虽然 KAN 层公式 (2.5) 看起来非常简单,但要使其能够良好地优化并不是一件简单的事。关键技巧包括:
1)残差激活函数。我们包括一个基函数 b(x)(类似于残差连接)(基函数用于保证光滑),使得激活函数 ϕ(x) 是基函数 b(x) 和样条函数的和:
在大多数情况下,我们设置
样条函数 spline(x) 被参数化为 B-spline 的线性组合,使得
其中 ci 是可训练的。原则上,w 是多余的,因为它可以被吸收到 b(x) 和 spline(x) 中。然而,我们仍然包含这个 w 因子以更好地控制激活函数的整体幅度。
2)初始化尺度。每个激活函数的初始化为 spline(x) ≈ 0。这是通过从小的 σ 的正态分布中绘制 B-spline 系数 c_i ∼ N(0, σ^2) 来完成的,通常我们设置 σ = 0.1。w 根据 Xavier 初始化进行初始化,该初始化已用于初始化 MLP 中的线性层。
3)样条网格的更新。我们根据其输入激活实时更新每个网格,以解决样条在有界区域上定义,但激活值在训练过程中可能会脱离固定区域的问题。(作者的方法:每训练 20 步,根据采样的激活分布更新激活/样条所在的网格/区间。其他方法有待研究)。其他可能性包括:
- (a) 使用梯度下降使网格可学习,例如,[16];
- (b) 使用归一化使输入范围固定。我们起初尝试了(b),但其性能不如我们目前的方法。
参数数目。为简单起见,让我们假设一个网络:
- 深度为 L
- 每个层都具有相等宽度 n0 = n1 = · · · = nL = N,
- 在 G 个间隔上(对应 G + 1 个网格点),每个样条的阶数为 k(通常 k = 3)。(不同的 G 对应于不同的分辨率。G 越小网格越粗糙,G 越大,网格越精细。见 2.4 节)
那么总共有
个参数。相比之下,深度为 L 和宽度为 N 的 MLP 只需要 O(N^2·L) 个参数,这似乎比 KAN 更有效率。幸运的是,KAN 通常需要比 MLP 更小的 N,这不仅节省了参数,还实现了更好的泛化(例如见图 3.1 和 3.3)并有助于可解释性。我们注意到,对于一维问题,我们可以取 N = L = 1,而我们实现中的 KAN 网络实际上就是样条逼近。对于更高维度的问题,我们使用以下定理来描述 KAN 的泛化行为。
2.3 KAN 的逼近能力和缩放定律
回想一下公式(2.1),2 层宽度为(2n + 1)的表示可能是不平滑的。然而,更深层次的表示可能带来更平滑的激活。例如,4 变量函数
可以通过一个 [4, 2, 1, 1] 的 KAN(即 3 层)平滑表示,但可能不适合具有平滑激活的 2 层 KAN。为了便于逼近分析,我们仍然假设激活是平滑的,但允许表示任意宽度和深度,如公式(2.7)。为了强调我们的 KAN 对有限网格点集的依赖性,我们在下面使用 Φ^G_l 和 Φ^G_(l,i,j) 来替换在公式(2.5)和(2.6)中使用的 Φ_l 和 Φ_(l,i,j) 符号。
定理 2.1(逼近理论,KAT)。设 x = (x1, x2, · · · , xn)。假设函数 f(x) 具有表示
如公式(2.7)所示,其中每个 Φ_(l,i,j) 都是(k + 1)次连续可微的。那么存在一个与 f 及其表示有关的常数 C,使得在网格大小 G 方面有以下逼近界限:存在 k 阶 B-spline 函数 Φ^G_(l,i,j),对于任何 0 ≤ m ≤ k,我们有下面的界限
这里我们采用 C^m-范数的记号,用于衡量 m 阶导数的幅度:
证明。通过经典的一维 B-spline 理论 [19] 和连续函数 Φ_(l,i,j) 在有界域上一致有界的事实,我们知道存在有限网格 B-spline 函数 Φ^G_(l,i,j),使得对于任何 0 ≤ m ≤ k,
其中 C 是与 G 无关的常数。我们固定这些 B-spline 逼近。因此,我们有的余项 Rl,定义为
满足
其中 C 是与 G 无关的常数。最后注意到
我们知道(2.15)成立。
我们知道,渐近地,只要定理 2.1 中的假设成立,带有有限网格大小的 KAN 可以以与维度无关的残差率(residue rate)很好地逼近函数,从而克服了维度灾难!这是很自然的,因为我们只使用样条来逼近 1D 函数。特别地,对于 m = 0,我们恢复了 L∞ 范数的精度,进而在有限域上提供了 RMSE 的上界,从而得到了一个标度指数 k + 1。当然,常数 C 取决于表示方式;因此它将取决于维度。我们将把常数对维度的依赖性讨论留作未来工作。
我们要提醒的是,尽管 KA 定理(公式(2.1))对应于形状为 [d, 2d+1, 1] 的 KAN 表示,但其函数不一定是平滑的。另一方面,如果我们能够确定一个平滑的表示方式(可能需要额外的层或者让 KAN 比理论建议的更宽),那么定理 2.1 表明我们可以克服维度灾难。这不足为奇,因为我们可以固有地学习函数的结构,并使我们的有限样本 KAN 近似具有可解释性。
神经网络的缩放定律:与其他理论的比较。神经网络的缩放定律是测试损失随着模型参数增加而减小的现象,即 ℓ ∝ N^(-α),其中 ℓ 是测试时 RMSE,N 是参数数量,α 是标度指数。较大的 α 通过简单地扩展模型来实现更大的改进。已经提出了不同的理论来预测 α。
- Sharma & Kaplan [17] 表明 α 来自于对内在维度 d 的输入流形的数据拟合。如果模型函数类别是阶数为 k 的分段多项式(对于 ReLU,k = 1),那么标准的逼近理论表明 α = (k + 1)/d。这个界限受到维度灾难的影响,因此人们通过利用组合结构,寻求独立于 d 的其他界限,。
- 特别地,Michaud 等人 [18] 考虑了只涉及一元(例如平方、正弦、指数)和二元(+ 和 ×)操作的计算图,发现了 α = (k + 1)/d* = (k + 1)/2,其中 d* = 2 是最大的阶数。
- Poggio 等人 [14] 利用了组合稀疏性的思想,并证明了对于函数类 W_m(其导数连续到第 m 阶),需要 N = O(ϵ^(-2/m)) 个参数才能达到误差 ϵ,这等价于 α = m/2。
- 我们的方法假设存在平滑的 KA 表示,将高维函数分解为多个 1D 函数,从而给出 α = k+1(其中 k 是样条的分段多项式阶数)。我们选择 k = 3 的三次样条,因此 α = 4,这是与其他工作相比最大且最好的缩放指数。我们将在第 3.1 节中展示,这个界限 α = 4 实际上可以通过 KAN 在实验中实现,而之前的工作 [18] 报告说,即使在饱和较慢的边界(例如 α = 1)和快速稳定状态下,MLP 也存在问题。当然,我们可以增加 k 以匹配函数的平滑度,但是太高的 k 可能会导致过于振荡,从而导致优化问题。
比较 KAT 和 UAT。全连接神经网络的强大之处在于通用逼近定理(universal approximation theorem,UAT),它指出对于给定函数和误差容限 ϵ > 0,具有 k > N(ϵ) 个神经元的两层网络可以在误差 ϵ 内逼近函数。然而,UAT 对于 N(ϵ) 随 ϵ 的变化没有提供界限。实际上,它受到维度灾难的影响,并且在某些情况下已经被证明随着维度 d 增长而呈指数增长。KAT 和 UAT 之间的差异是 KAN 利用了函数的固有低维表示,而 MLP 不是。事实上,我们将展示 KAN 与符号函数非常一致,而 MLP 不是。
2.4 对于准确性:网格扩展
原则上,由于网格可以任意细化,样条可以被制作得与目标函数近似得非常准确。这个好特性被 KAN 继承了。相比之下,MLP 没有 “细化” 的概念。诚然,增加 MLP 的宽度和深度可能会提高性能(“神经缩放定律”)。然而,这些神经缩放定律是缓慢的(在最后一节讨论)。它们也很昂贵,因为需要独立训练不同大小的模型。相比之下,对于 KAN,可以首先训练具有较少参数的 KAN,然后通过简单地使其样条网格更精细,来扩展到具有更多参数的 KAN,而无需重新训练更大的模型。
接下来我们描述如何执行网格扩展(如图 2.2 右所示),基本上是将一个旧的粗粒度样条拟合成一个新的细粒度样条。假设我们想要在有界区间 [a, b] 中用阶数为 k 的 B-spline 逼近一个 1D 函数 f。粗粒度网格具有 G1 个间隔,在网格点处为
它被扩展为
有 G_1 + k 个 B-spline 基函数,其中第 i 个 B-spline B_i(x) 仅在
上非零。然后,粗网格上的 f 可以表示为这些 B-spline 基函数的线性组合
给定更精细的网格,有 G_2 个间隔,相应地,精细网格上的 f 是
参数 c'_j 可以从参数 c_i 初始化,通过最小化 f_fine(x) 与 f_coarse(x) 之间的距离(在某些 x 的分布上)来实现:
这些可以通过最小二乘算法来实现。我们对每个 KAN 中的所有样条进行网格扩展。
玩具示例:类似楼梯状的损失曲线。我们使用一个玩具示例
来演示网格扩展的效果。在图 2.3(左上角)中,我们展示了一个 [2, 5, 1] KAN 的训练和测试 RMSE。网格点的数量从 3 开始,每 200 个 LBFGS 步骤增加到一个更高的值,最终达到 1000 个网格点。很明显,每次精细化发生时,训练损失下降的速度比以前快(除了具有 1000 个点的最细网格,其中,由于糟糕的损失景观(landscapes),优化可能停止工作)。然而,测试损失首先下降然后上升,显示出 U 形,这是由于偏差-方差的权衡(欠拟合与过拟合)。我们推测,当参数的数量匹配数据点的数量时,最佳测试损失是在插值阈值处达到的。由于我们的训练样本有 1000 个,而 [2, 5, 1] KAN 的总参数为 15G(G 是网格间隔的数量),我们期望插值阈值为 G = 1000/15 ≈ 67,这与我们实验观察到的值 G ∼ 50 大致吻合。
小型 KAN 的泛化效果更好。这是我们能达到的最佳测试性能吗?请注意,合成任务可以由 [2, 1, 1] KAN 精确表示,因此我们训练了一个 [2, 1, 1] KAN 并在图 2.3 的右上方呈现了训练动态。有趣的是,它甚至可以比 [2, 5, 1] KAN 实现更低的测试损失,具有更清晰的楼梯结构,并且由于参数更少,插值阈值被延迟到更大的网格大小。这突显了选择 KAN 结构的微妙之处。如果我们不了解问题结构,如何确定最小的 KAN 形状呢?在第2.5节中,我们将提出一种通过正则化和剪枝自动发现这种最小 KAN 结构的方法。
缩放定律:与理论比较。我们还关注测试损失随网格参数数量增加而减少的情况。在图 2.3(左下角)中,一个 [2,1,1] KAN 大致按照测试 RMSE ∝ G^(-3) 的比例缩放。然而,根据定理 2.1,我们预期测试 RMSE ∝ G^(-4)。我们发现,样本之间的误差不均匀。这可能归因于边界效应。实际上,有一些样本的误差显着大于其他样本,导致整体缩放减慢。如果我们绘制平方损失的中位数(而不是均值)的平方根,我们会得到更接近 G^(-4) 的缩放。尽管存在这种次优性(可能是由于优化引起的),KAN 仍然比 MLP 具有更好的缩放定律,用于数据拟合和 PDE 求解。此外,训练时间与网格点数 G 有利于缩放,如图 2.3 右下所示。(当 G = 1000 时,训练变得显着缓慢,这与使用具有线搜索功能的 LBFGS 优化器有关。我们推测,对于 G = 1000,损失景观变得糟糕,因此在最大迭代次数内尝试寻找最佳步长而不提前停止的线搜索功能会出现问题。)
外部与内部自由度。KAN 突出显示的一个新概念是外部与内部自由度(参数)之间的区别。节点如何连接的计算图表示外部自由度(“dofs”),而激活函数内部的网格点表示内部自由度。KAN 受益于它们同时具有外部自由度和内部自由度。外部自由度(MLP 也有,但样条没有)负责学习多个变量的组合结构。内部自由度(样条也有,但 MLP 没有)负责学习单变量函数。
2.5 解释性:简化 KAN 并使其可交互
上一小节的一个悬而未决之处是我们不知道如何选择最能匹配数据集结构的 KAN 形状。例如,如果我们知道数据集是通过符号公式 f(x, y) = exp(sin(πx)+y^2) 生成的,那么我们知道 [2, 1, 1] KAN 能够表达这个函数。然而,在实践中,我们事先不知道这些信息,因此最好有方法能够自动确定这个形状。这个想法是从足够大的 KAN 开始,然后使用稀疏正则化进行训练,然后进行剪枝。我们将展示这些被剪枝的 KAN 比未剪枝的更具解释性。为了使 KAN 最大程度地具有解释性,我们在第 2.5.1 节提出了一些简化技术,并在第 2.5.2 节中提供了用户如何与 KAN 交互以使其更具解释性的示例。
2.5.1 简化技术
1)稀疏化。对于 MLP,线性权重的 L1 正则化被用来倾向于稀疏性。KAN 可以采用这个高级想法,但需要两个修改:
- KAN 中没有线性“权重”。线性权重被可学习的激活函数替代,因此我们应该定义这些激活函数的 L1 范数。
- 我们发现 L1 对于 KAN 的稀疏化是不足够的;相反,额外的熵正则化是必要的(详见附录 C 以获取更多细节)。
我们定义一个激活函数 ϕ 的 L1 范数为其在其 N_p 个输入上的平均幅度,即,
然后对于具有 n_in 个输入和 n_out 个输出的 KAN 层 Φ,我们将 Φ 的 L1 范数定义为所有激活函数的 L1 范数之和,即,
此外,我们定义 Φ 的熵为
总的训练目标 L_total 是预测损失 L_pred 加上所有 KAN 层的 L1 和熵正则化:
其中 μ1、μ2 是通常设置为 μ1=μ2=1 的相对大小,λ 控制整体正则化的大小。
2)可视化。当我们可视化一个 KAN 时,为了感知幅度,我们将激活函数 ϕ_(l,i,j) 的透明度(transparency)设置为与 tanh(βA_(l,i,j)) 成比例,其中 β=3。因此,幅度较小的函数会变得模糊,以便我们可以专注于重要的部分。
3)剪枝。在使用稀疏化惩罚进行训练之后,我们可能还想将网络剪枝到一个较小的子网络。我们在节点级别上对 KAN 进行稀疏化(而不是边级别)。对于每个节点(比如第 l 层中的第 i 个神经元),我们将其传入和传出分数定义为
并且如果传入和传出分数都大于默认的阈值超参数 θ=10^(−2) 则认为节点是重要的。所有不重要的神经元将被剪枝。
4)符号化。在一些情况下,我们怀疑一些激活函数实际上是符号化的(例如,cos 或 log),我们提供一个接口将它们设置为指定的符号形式,fix_symbolic(l,i,j,f)
可以将 (l,i,j) 激活设置为 f。然而,我们不能简单地将激活函数设置为精确的符号公式,因为它的输入和输出可能具有偏移和缩放。因此,我们从样本中获取前激活 x 和后激活 y,并拟合仿射参数 (a,b,c,d) 使得 y≈c·f(a·x+b)+d。拟合是通过迭代网格搜索 a,b 和线性回归完成的。
除了这些技术外,我们还提供了额外的工具,允许用户对 KAN 进行更精细的控制,列在附录 A 中。
2.5.2 玩具示例:人类如何与 KAN 交互
以上我们提出了一些用于简化 KAN 的技术。我们可以将这些简化选择视为用户可以点击的按钮。与这些按钮进行交互的用户可以决定下一个点击哪个按钮是最有希望的,以使 KAN 更具解释性。我们使用下面的示例展示用户如何与 KAN 进行交互以获取最大程度的解释性结果。
让我们再次考虑回归任务。
给定数据点 (xi,yi,fi), i=1,2,…,N_p,一个假设的用户 Alice 感兴趣的是找出符号公式。下面描述了 Alice 与 KAN 交互的步骤(如图 2.4 所示):
步骤 1:使用稀疏化进行训练。从一个完全连接的 [2, 5, 1] KAN 开始,使用稀疏化正则化进行训练可以使其非常稀疏。隐藏层中的 5 个神经元中有 4 个似乎无用,因此我们想要剪枝掉它们。
步骤 2:剪枝。自动剪枝被看作是丢弃除最后一个之外的所有隐藏神经元,留下一个 [2, 1, 1] KAN。激活函数似乎是已知的符号函数。
步骤 3:设置符号函数。假设用户可以从查看 KAN 图形中正确猜出这些符号公式,他们可以设置
如果用户没有领域知识或不知道这些激活函数可能是哪些符号函数,我们提供了一个函数 suggest_symbolic
来建议符号候选。
步骤 4:进一步训练。在网络中将所有激活函数符号化之后,剩下的唯一参数是仿射参数。我们继续训练这些仿射参数,当看到损失下降到机器精度时,我们知道我们已经找到了正确的符号表达式。
步骤 5:输出符号公式。使用 Sympy 计算输出节点的符号公式。用户获得
这是真实的答案(我们只显示了π的两位小数)。
备注:为什么不使用符号回归(SR)?对于这个示例使用符号回归是合理的。但是,符号回归方法通常很脆弱且难以调试。它们最终要么成功要么失败,而不会输出可解释的中间结果。相比之下,KAN 在函数空间中进行连续搜索(使用梯度下降),因此它们的结果更连续,因此更稳健。此外,与符号回归相比,由于 KAN 的透明性,用户对 KAN 有更多控制。我们可视化 KAN 的方式就像向用户展示 KAN 的 “大脑”,用户可以对 KAN 进行“手术”(调试)。这种控制水平通常在符号回归中不可用。我们将在第 4.4 节中展示这一点的示例。更一般地说,当目标函数不是符号时,符号回归会失败,但是 KAN 仍然可以提供有意义的东西。例如,除非提前提供,否则符号回归无法学习特殊函数(例如贝塞尔函数),但是 KAN 可以使用样条数值近似它(见图 4.1(d))。
3. KAN 是精确的
在这一部分,我们展示了 KAN 在各种任务(回归和 PDE 求解)中比 MLP 更有效地表示函数。在比较两个模型家族时,公平的做法是比较它们的准确性(损失)和复杂性(参数数量)。我们将展示 KAN 显示出比 MLP 更有利的帕累托前沿。此外,在第 3.5 节中,我们还展示了 KAN 可以在连续学习中自然工作,而无需发生灾难性遗忘。
4. KAN 是可解释的
在这一部分,我们展示了 KAN 是可解释和交互式的,这要归功于我们在第 2.5 节中开发的技术。我们希望测试 KAN 的使用不仅在合成任务(第 4.1 和 4.2 节)上,而且在现实生活中的科学研究中。我们证明了 KAN 可以(重新)发现结论理论(knot theory)中高度复杂的关系(第 4.3 节)和凝聚态物理中的相变边界(第4.4节)。由于 KAN 的准确性(上一节)和可解释性(本节),KAN 有可能成为 AI+Science 的基础模型。
4.1 监督学习
通过加减、平方、指数/对数等基础运算的组合,来获得其他函数。
4.2 无监督学习
4.3 应用到数学:结理论(Knot Theory)
KAN 的无监督模式可以重新发现几个已知的数学关系。好消息是,KAN 发现的结果可能是可靠的;坏消息是,我们尚未发现任何新的内容。值得注意的是,我们选择了一个浅层的 KAN 来进行简单的可视化,但如果存在更深的 KAN,它们可能能够发现更多的关系。我们希望在未来的工作中研究如何使用更深的 KAN 发现更复杂的关系。
4.4 应用到物理:安德森定位
6. 讨论
在这一部分中,我们从数学基础、算法和应用的角度讨论了 KAN 的局限性和未来方向。
数学方面:虽然我们已经提出了 KAN 的初步数学分析(定理 2.1),但我们对它们的数学理解仍然非常有限。KA 表示定理在数学上已经被彻底研究,但该定理对应于形状为 [n,2n + 1,1] 的KAN,这是 KAN 的一个非常受限的子类。我们对更深层的 KAN 的经验成功是否意味着数学上的一些根本性质?一个吸引人的广义 KA 定理可能会定义 “更深层” 的 KA 表示,超越深度为 2 的组合,并且可能将激活函数的平滑性与深度联系起来。假设存在一些函数,在原始的(深度为 2 的) KA 表示中无法平滑表示,但在深度为 3 或更深层次上可能可以平滑表示。我们能否使用 “KA 深度” 这一概念来刻画函数类别?
算法方面:我们讨论以下内容:
1)准确性。在架构设计和训练中存在多种选择,尚未完全研究,因此替代方案可能进一步提高准确性。例如,可以将样条激活函数替换为径向基函数或其他局部核函数。可以使用自适应网格策略。
2)效率。KAN 运行缓慢的一个主要原因是不同的激活函数无法利用批量计算(将大量数据通过相同的函数)。实际上,可以通过将激活函数分组成多个组(“多头”)来在激活函数全部相同(MLP)和全部不同(KAN)之间进行插值,在组内成员共享相同的激活函数。
3)KAN 和 MLP 的混合。与 MLP 相比,KAN 有两个主要区别:
- (i)激活函数在边上而不是在节点上,
- (ii)激活函数是可学习的而不是固定的。
哪种变化更重要来解释 KAN 的优势?我们在附录 B 中提供了我们的初步结果,我们在该模型中研究了具有(ii)的模型,即激活函数是可学习的(像 KAN),但不是(i),即激活函数在节点上(像 MLP)。此外,还可以构建另一个具有固定激活(像 MLP)但在边上(像 KAN)的模型。
4)适应性。由于样条基函数的内在局部性,我们可以在 KAN 的设计和训练中引入适应性,以提高准确性和效率:参见类似于 [93,94] 中的多重网格方法或类似于 [95] 中的多尺度方法的多级训练的思想。
应用方面:我们提供了一些初步证据表明,KAN 在 Science 相关任务中比 MLP 更有效,例如,拟合物理方程和 PDE 求解。我们期望 KAN 在解决 Navier-Stokes 方程、密度泛函理论或任何其他可以被表述为回归或 PDE 求解的任务上也可能很有前景。我们还希望将 KAN 应用于与机器学习相关的任务,这将需要将 KAN 整合到当前的架构中,例如,Transformer- 人们可以提出“kansformers”,用 KAN 替换 Transformer 中的 MLP。
KAN 作为 AI + Science 的 “语言模型”。之所以大型语言模型如此具有变革性,是因为它们对任何能够使用自然语言的人都很有用。科学的语言是函数。KAN 由可解释的函数组成,因此当人类用户凝视 KAN 时,就像使用函数语言与其进行交流一样。本段旨在推广 AI-科学家-协作范式,而不是我们特定的工具 KAN。就像人们使用不同的语言进行交流一样,我们预期在未来 KAN 将只是AI + Science 中的一种语言,尽管 KAN 将是使 AI 和人类沟通的最初的语言之一。然而,借助 KAN 的支持,AI-科学家-协作范式从未如此简单和方便,这促使我们重新思考我们希望如何接近 AI + Science 的范式:我们想要 AI 科学家,还是我们想要能够帮助科学家的 AI?(完全自动化的)AI 科学家的固有困难在于很难使人类偏好量化,这将人类偏好编码成 AI 目标。事实上,不同领域的科学家对于哪些函数是简单或可解释的可能持不同看法。因此,科学家更希望拥有一种可以说科学语言(函数)并可以方便地与个别科学家的归纳偏见交互以适应特定科学领域的 AI。
最终的收获:我应该使用 KAN 还是 MLP? 目前,KAN 最大的瓶颈在于训练速度缓慢。与相同数量的参数相比,KAN 通常比 MLP 慢10倍。我们应该诚实地说,虽然我们没有努力优化 KAN 的效率,但我们认为 KAN 的训练速度慢更多地是未来需要改进的工程问题,而不是根本性限制。如果想要快速训练模型,应该使用 MLP。然而,在其他情况下,KAN 应该与 MLP 相媲美或更好,这使得尝试 KAN 变得有价值。图 6.1 中的决策树可以帮助确定何时使用 KAN。简而言之,如果您关心解释性和/或准确性,并且缓慢的训练不是主要问题,我们建议尝试 KAN。
附录
A. KAN 函数
表 7 包括用户可能会发现有用的常见功能。
B. 可学习激活网络(LAN)
B.1 架构
除了 KAN 外,我们还提出了另一种类型的可学习激活网络(learnable activation networks,LAN),它们几乎是 MLP,但激活函数是可学习的,并且以样条参数化。KAN 与标准 MLP 相比有两个主要变化:
- 激活函数变为可学习,而不是固定的;
- 激活函数放置在边上而不是节点上。
为了解耦这两个因素,我们还提出了仅具有可学习激活但仍在节点上的可学习激活网络(LAN),如图 B.1 所示。
对于一个宽度为 N、深度为 L 和网格点数为 G 的 LAN,参数数量为 N^2·L + N·L·G,其中 N^2·L 是权重矩阵的参数数量,N·L·G 是样条激活的参数数量,与 MLP 相比,这导致了一点点额外的开销,因为通常 G ≪ N,所以 N·L·G ≪ N^2·L。LAN 与 MLP 类似,因此它们可以从预训练的 MLP 初始化,并通过允许可学习激活函数进行微调。一个例子是使用 LAN 来改进 SIREN,见 B.3 节。
LAN 和 KAN 的比较。LAN 的优点:
- LAN 在概念上比 KAN 简单。它们更接近标准的 MLP(唯一的变化是激活函数变为可学习)。
- LAN 的扩展性比 KAN 更好。LAN / KAN 的可学习激活函数位于节点 / 边上。因此,LAN / KAN 中的激活参数随着 N / N^2 而变化,其中 N 是模型宽度。
LAN 的缺点:
- LAN 似乎不太可解释(权重矩阵难以解释,就像在 MLP 中一样);
- LAN 似乎比 KAN 更不准确,但仍然比 MLP 更准确。与 KAN 一样,如果 LAN 的激活函数由样条参数化,它们也可以进行网格扩展。
B.2 LAN 解释性结果
我们在图 B.2 中提出了 LAN 的初步可解释性结果。对于图 4.1 中 KAN 完全可解释的相同示例,由于存在权重矩阵,LAN 似乎不太可解释。首先,权重矩阵不如可学习激活函数容易解释。其次,权重矩阵引入了太多的自由度,使得可学习激活函数过于不受约束。我们对 LAN 的初步结果似乎暗示着,摆脱线性权重矩阵(通过在边缘上使用可学习激活,如 KAN)对于解释性是必要的。
B.3 图像拟合(LAN)
隐式神经表示将图像视为 2D 函数 f(x, y),其中像素值 f 是像素 x 和 y 的两个坐标的函数。为了压缩图像,这样的隐式神经表示(f 是神经网络)可以在保持几乎原始图像质量的同时实现参数的令人印象深刻的压缩。SIREN [96] 建议使用具有周期激活函数的 MLP 来拟合函数 f。自然而然地考虑其他激活函数,在 LAN 中允许这样做。然而,由于我们将 LAN 激活初始化为平滑,但 SIREN 需要高频特征,因此 LAN 不会立即起作用。请注意,LAN 中的每个激活函数都是基函数和样条函数的和,即 ϕ(x) = b(x) + spline(x),我们将 b(x) 设置为正弦函数,与 SIREN 中的设置相同,但让 spline(x) 可训练。对于 MLP 和 LAN,形状为 [2,128,128,128,128,128,1]。我们使用 Adam 优化器对它们进行训练,批量大小为 4096,学习率为 10^(-3) 进行 5000 步,学习率为 10^(-4) 进行 5000 步。如图 B.3 所示,由于 LAN 的灵活性可以微调激活函数,LAN(橙色)可以实现比 MLP (蓝色)更高的 PSNR。我们表明,也可以从 MLP 初始化 LAN,进一步微调 LAN(绿色)以获得更高的 PSNR。我们在实验中选择了 G = 5,因此额外参数增加大约为 G/N = 5/128 ≈ 4%。
C. 对超参数的依赖
我们在图 C.1 中展示了超参数对 f(x, y) = exp(sin(πx) + y^2) 案例的影响。为了获得可解释的图形,我们希望活动激活函数的数量尽可能小(理想情况下为 3)。
- 我们需要熵惩罚来减少活动激活函数的数量。没有熵惩罚,会有许多重复函数。
- 结果可能取决于随机种子。使用一些不幸的种子,修剪网络可能会比需要的大。
- 总体惩罚强度λ有效地控制着稀疏性。
- 网格数量 G 对可解释性也有微妙的影响。当 G 太小时,因为每个激活函数都不太表达,网络倾向于使用集成策略,使解释更加困难。
- 分段多项式阶数 k 对可解释性只有微妙的影响。然而,在这个玩具示例中,它的行为有点像随机种子,不显示任何可见的模式。
KAN 直播
直播录像进群获取(仅限学习使用)
正文部分括号内加粗内容来自于直播。
1. KAN 擅长什么?
KAN 和 MLP 的边界尚不清晰,除了从函数逼近的角度,还要从优化、泛化、可解释性等方面考虑两者之间的关系。
2. 符号主义 v.s. 连接主义
现代深度学习:黑盒子,不可解释。
KAN 处于符号主义与连接主义中间的位置,可能成为沟通两者的桥梁
- KAN 的初始全连接结构类似于 MLP
- KAN 可被修剪和符号化,体现了其与符号主义的联系
SINDY 大概处于 KAN 和符号主义之间的位置。
3. KAN 和 MLP 的差别
KAN 带来全新的概念:外部自由度和内部自由度。从粒子角度来讲,内部自由度是粒子自旋,外部自由度是粒子与外界的交互。
从哲学角度讲,KAN 和 MLP 的差别就是还原论与整体论的差别。
- MLP 是整体论下的产物:不需要知道内部发生什么,也无需精巧设计每个部分。虽然只使用固定的激活函数,但只要结构足够复杂,就能实现功能。
- KAN 的每个部分都很重要,需要精巧的设计(激活函数可学习 ),而不同部分的连接却很简单。还原论的思想是:一个复杂的世界可被拆解成基本的东西,这些基本的东西可能内部是十分复杂的,但是外部的相互作用是简单的。
4. KAN 自然吗?
在自然界中,KAN 也存在。例如:大脑中的神经元更像 MLP,而视网膜上的神经元更像 KAN。
5. KAN 能否使用傅里叶、切比雪夫等正交的多项式?
使用这些方法的优点在于,它们更加高效,不像 KAN 需要很多的 B-spline。
缺点在于不能或难以进行 Continual Learning。
- KAN 使用的样条函数是局部的(在一个区间内)
- 若使用的激活函数是全局的(例如傅里叶的基函数),很可能造成灾难性遗忘
因此,需要根据需求选择 Continual Learning 或高效。
6. KAN 能否用于图像?
KAN 更适用于符号空间(Symbolic Space)。对于图像(例如 Graph KAN),需要先把图像嵌入到潜在空间(有 symbolic 的概念),然后再使用 KAN 进行处理。
可参考 https://github.com/KindXiaoming/pykan/issues/9