赞
踩
24年5.19,我司七月的LLM论文100课里的一学员在课程q群内提到,“最近总是看到KAN,KAN这个概念重要吗?需要了解学习吗?”,我当时回复道:KAN值得学习和了解,咱们课程上 也要讲一下
在讲之前,我也在本博客内好好梳理下,毕竟牵扯到KAN的概念很多,对于初学者而言,需要具备的背景知识则更多,所以本文的出发点是:
如此,本文也就出来了:可视为对此篇论文《KAN: Kolmogorov-Arnold Networks》的足够全面、详尽、细致的解读,且为了通透彻底、通俗易懂,一方面,我个人在原论文的基础上列举了大量的示例,二方面 做了原论文中没有的大量的补充说明、解读(比如花了大量的篇幅和示例解释论文中的公式2.15)
同时,本文也算是见证我司新的使命的诞生
最后,如果某个公式你没有看的特别明白,没事,我可能已经感应到了,本文会不断完善,直到5月底,5月底之后,如还有不明白的,欢迎随时留言,我会根据留言情况再做针对性的说明解释
多层感知器(MLPs)[1, 2, 3],也被称为全连接前馈神经网络(在节点“神经元”上具有固定的激活函数),是当今深度学习模型的基础构建模块。作为机器学习中用于逼近非线性函数的默认模型,其由通用逼近定理来实现
然而,尽管MLPs被广泛使用,但它们存在显著缺点。例如,在transformers [4]中,MLPs几乎消耗了所有非嵌入参数,并且通常比较难以解释(相对于注意力层),除非使用后续分析工具 [5]
因此,作者团队提出了一个替代方案,称为Kolmogorov-Arnold Networks(KANs),与MLPs受到通用逼近定理的启发不同,KANs受到Kolmogorov-Arnold表示定理的启发 [6, 7]
那什么又是所谓的Kolmogorov-Arnold表示定理呢?
Vladimir Arnold(算是前苏联神通)和其导师Andrey Kolmogorov(前苏联科学院院士)证明,,如果是有界域上的多元连续函数(if f is a multivariate continuous function
on a bounded domain),则可以写成有限个连续函数的复合单变量和加法的二元运算(then f can be written as a finite composition of continuous functions of a single variable and the binary operation of addition)
说白了,任意一个连续函数都可以表示为有限个单变量函数的嵌套组合(如下公式所示,其中、都是单变量函数)
好比我带队的我司审稿项目组在通过paper-review数据集微调一系列开源模型时,大家是各自并行微调各个开源模型(即各调各的,不用多个人同时微调同一个模型),最终汇总所有人的结果
更具体地,对于一个光滑,如下所示(定义为公式2.1)
为方便更好的理解,特补充一个KAN论文中没有的背景知识,即所谓的样条函数
样条函数(spline function)是一种用于逼近或插值数据的平滑函数,它由分段多项式拼接而成,并且这些多项式在连接处具有一定的连续性(相当于通过分段多项式的组合,以在不牺牲光滑性的前提下精确地逼近或插值数据)
其分为
线性样条 | 二次样条 | 三次样条 | B样条(B-spline) |
每个子区间上使用一阶多项式,即直线段 它们在节点处具有零阶连续性,即函数值连续,但导数不连续 | 在每个子区间上使用二阶多项式 在节点处通常要求函数值和一阶导数连续 | 在每个子区间上使用三阶多项式 在节点处要求函数值、一阶导数和二阶导数都连续 | 使用一组基函数来表示样条。这些基函数具有局部支撑性,即每个基函数只在少数几个子区间上非零 |
对于B-spline,函数在其定义域内、在结点(Knot)都具有相同的连续性,其多项式表达可由Cox-de Boor递推公式表达
可以应用于
进一步,如果我们面对一个由输入-输出对组成的监督学习任务,则
对于KAN而言,它通过B样条函数来参数化:、这些单变量函数,并通过组合这些函数来构建整个网络
so,现在我们有了 KAN 的原型,其计算图完全由方程式(2.1)指定,并在下图(b)中进行了说明
总之,在KAN之前,便有不少研究利用Kolmogorov-Arnold表示定理构建神经网络。然而,大多数工作仍停留在原始深度为2、宽度为2n+ 1的表示上「深度为2、宽度为2n+ 1,即2-Layer KAN with shape [n, 2n + 1, 1]」,并没有机会利用反向传播训练网络
KAN的贡献在于将原始Kolmogorov-Arnold表示扩展为任意宽度和深度,那具体如何扩展呢,请看下节
在MLPs中,一旦我们定义了一个层(由线性变换和非线性组成),便可以堆叠更多层使网络更深
类似的,要构建深层KANs,首先要回答:“什么是KAN层?” 原来,具有输入维度和输出维度的KAN层可以被定义为一维函数矩阵(定义为公式2.2)
其中函数具有可训练参数
对于下图左侧而言,KAN的形状由整数数组表示:,再次引用上文的这个图以做说明
类似的,MLP也可以扩展到比较深、宽,比如写成仿射变换 W和非线性 σ的交错
很明显,MLPs将线性变换和非线性分开处理,分别表示为 W和 σ,而KANs将它们全部合
并在 Φ中。 如下图(c)和(d)所示,便是一个一个三层MLP和一个三层KAN
总结一下
事实上,KANs只不过是splines和MLP的组合,结合了各自的优势,比如
由于KANs
例如,给定一个高维函数
对于大 N,splines会因为COD而失败;MLPs潜在地可以学习广义可加结构,但对于用ReLU激活函数来近似指数和正弦函数非常低效。 相比之下,KANs可以很好地学习组合结构和单变量函数,因此在性能上远远优于MLPs
尽管上文的公式2.5看起来好像挺简单,但要让其work的更好还需要做一系列优化
so,到底最终应该使用KANs还是MLPs?如作者团队所说
回想一下,在方程2.1中,层数为2且宽度为(2n+ 1)的表示基本是不平滑的,而更深层的表示可能带来更smoother activations的优势,例如,4变量函数
可以通过一个的KAN来平滑表示(层数是3层),但2层KAN便可能没法具备平滑激活性
为了便于逼近分析
从而有以下定理
定理 2.1 逼近理论——KAT(相当于KAN在有限网格大小下逼近目标函数的误差界)
假设一个函数具有表示
- 如同方程2.7,其中每一个都是次连续可微的
- 那么存在一个取决于 和其表示的常数,使得有以下关于网格大小 的逼近界限:
存在k-th order B-spline函数,对于任意 ,有界限(such that we have the following approximation bound in terms of the grid size G: there exist k-th order B-spline functions ΦGl,i,jsuch that for any 0 ≤ m ≤ k, we have the bound,以下公式定义为2.15)
这里作者采用来衡量直到 m阶导数的大小
上面这里确实有点绕,我个人一开始看到的时候也是细想了好一会,为方便大家一目了然,我再好好解释下
总之,这个公式2.15描述了随着样条网格细化,KANs模型近似真实函数 的精度如何提高,即通过增加网格点的数量(G越大、网格越大越细),可以系统地减少近似误差,从而提高模型的预测准确性(意味着需要尽可能选择合适的网格尺寸 和spline阶数 ,以达到所需的近似精度)
还是为了方便更好的理解公式2.15,我再举个例子
假设现在有一个任务是绘制一个复杂的地形图。在这个任务中,地形图是由多个不同的高度点组成的,我们希望用一种方法可以尽可能准确地预测任何位置的高度。这里的地形图就像函数 ,而我们想要用KANs来近似这个函数
再比如你正在用一张低分辨率的照片来重建一个实景,低分辨率的照片可能只能捕捉到较大的特征,细节部分会模糊不清。随着照片分辨率的提高(相当于增加),你可以看到更多细节,从而更精确地重建实景
这就是公式 2.15 在数学上描述的现象:通过提高分辨率(增加样条网格尺寸),你的近似(地形图或KAN模型的输出)将更接近真实(实际地形或目标函数)
// 待更
原则上,样条可以被制作得足够精确,以逼近目标函数,因为网格可以被制作得足够细粒化。 这一优点被KANs所继承
接下来我们描述如何进行网格扩展(如之前下图的右侧所示,算是第二次引用上文的这个图以做说明),基本上是将一个新的细粒度样条拟合到一个旧的粗粒度样条上
假设我们想要在有界区间 [a, b]中用阶为 k的B样条逼近一个一维函数 f
作者使用一个简单示例来演示网格扩展的效果
有个问题是,如果知道数据集是通过公式生成的,那么如何知道一个 [2, 1, 1]KAN能够表达这个函数呢?因此,最好有方法可以自动确定这种形状
解决办法是从一个足够大的KAN开始,然后通过稀疏正则化和修剪来训练它(这些修剪后的KAN比未修剪的更具可解释性)
上一小节是理论,接下来举个例子,比如让我们再次考虑回归任务
给定数据点, 我们需要找到与其匹配的KANs
// 待更
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。