杀死MLP? KAN网络解读

KAN火爆出圈

自KAN发布以来,在国内外引发了热烈的讨论,国内“TOP3人工智能公众号“量子位、新智元、机器之心对KAN给出了极其高度的评价,而其在Github上的satr数量也飞速暴涨,可以说是当下的绝对热点。但国内外的各种平台上,其负面评价也层出不穷。那么KAN究竟是何方神圣?

不得不提的Kolmogorov–Arnold Representation

要说KAN就不得不提到Kolmogorov–Arnold Representation(为方便表示后面记作KAR)。KAR定理指出,任意一个多元连续函数都可以表示成两层嵌套的一元函数的加和形式。根据下图公式,两层嵌套中内层为多个一元函数的加和,外层可以理解为一个泛函。需要注意的是,除去一元函数外,其余运算均为”+“,因此,但从网络设计的结构来看,左下角的网络结构呼之欲出,正方形方块(内部是曲线的)代表的就是一元函数,然后将每一个函数作用后的结果直接相加。但此时面临的问题是,如何获得这些一元函数的表达式呢?因为一元函数本身可能不连续,也难以用可以反传的可微形式表达。

如何解决一元函数的表示问题?—— B-spline曲线

以下内容参考自

02 保姆级理解 B-Spline

B-spline曲线是一种常见的连续曲线拟合表示的形式,其通过分段连续多项式生成的方式来拟合一条一元函数曲线。简单来说,其通过指定控制点和节点向量,通过递推表达的方式,从低阶(一阶)基函数来拟合出高阶分段多项式,如右下角图所示,随着阶数的提高,能拟合的曲线复杂度提升。详细定义可以参考原文。

这里给出了一个计算示例,当指定基函数和控制点数目的时候,就可以通过递推迭代的方式来计算出B-spline曲线的结果。简单来说,只要给定迭代时的控制点or系数,就可以最终控制拟合的一元函数曲线,而这个系数恰好是可学习的,为KAN的实现打下了基础。

KAN结构

在了解了一元函数的B-spline曲线表达的基础上,我们来了解KAN的基本结构。根据KAR的定义,网络结构是一个两层嵌套的形式,而每一个一元函数(与MLP中的激活函数对应)是通过B-spline曲线来实现的。

以上图的结构为例,给出了KAN向量表达式的推导。

在实现细节上,这里的KAN结构中引入了b(x),其作用类似与残差结构中的f(x),目的是为了保证当网络变深变宽时仍然可以较好的训练,而spline(x)函数则是用于拟合一元函数的,c为可学习参数, B(x)为指定的基函数。需要注意的是,B-spline曲线的控制点的可以指定的,原文的实验证明了当Grid扩展(控制点增多)时,RMSE会降低,训练时间大体上是增加的。

KAN的可解释性

原文提到的可解释性主要是指与人的交互性,根据上图,训练过程中,第一步是带正则项的初步训练,此时选择的KAN宽度较大;第二步是剪枝,删除不必要的节点,降低网络的复杂度;第三步则是人工交互,选择待拟合的公式或曲线中可能存在的函数,例如指数函数、三角函数等,知道网络的拟合方向;最后微调结果并输出最终的拟合公式or结果。笔者实操下来,这一步对人工交互的依赖比较大,选择不同的函数对结果影响较大。

KAN的相关实验结果

原文中主要针对了公式拟合和偏微分方程求解进行了对比实验,实验结果证明了KAN在精度上优于MLP,但相对应的训练时间有所提升。特别的,KAN相比于MLP,会有更好调整余地,增加or减少分支时,可以直接在原结构上进行操作,而刚增加时对原网络性能影响(降低)不大。

其实作者也对比了MLP和KAN的异同,笔者个人认为,KAN当前在偏微分方程求解、公式拟合等科学性问题上具有较高的精度,也提供了比较好的交互体验,但直接谈完全取代MLP还为时过早。

KAN代码

GitHub - KindXiaoming/pykan: Kolmogorov Arnold Networks

安装非常的容易:

python -m venv pykan-env
source pykan-env/bin/activate  # On Windows use `pykan-env\\Scripts\\activate`
pip install pykan

作者也给出了简要的使用说明:

pykan/hellokan.ipynb at master · KindXiaoming/pykan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值