论文精读——KAN

news2024/12/23 5:27:10

目录

1.研究背景

2.关键技术

2.1 原始公式

2.2 KAN结构

2.3 缩放定律

3.技术扩展

4.模型效果

5.相关讨论

6.总结


文章标题:《KAN: Kolmogorov–Arnold Networks》

文章地址:

KAN: Kolmogorov-Arnold Networks (arxiv.org)icon-default.png?t=N7T8https://arxiv.org/abs/2404.19756代码地址:

KindXiaoming/pykan: Kolmogorov Arnold Networks (github.com)icon-default.png?t=N7T8https://github.com/KindXiaoming/pykan

1.研究背景

MLP作为深度学习模型中的基础模块,有很好的非线性函数逼近能力,但是作者认为MLP并不是最好的非线性回归器。例如在Transformer中MLP消耗了几乎所有的非嵌入参数,并且可解释性较弱。因此,作者提出用KAN来替代MLP

KAN有以下特点:

全连接结构

上的可学习激活函数

③权重参数被替换成可学习的样条函数

④在节点处进行简单的相加操作

作者从理论上分析了为什么KAN有更好的效果:

其一,样条函数对于低维空间是精准,但是由于它不能利用复杂结构导致在高维的效果较差(维度灾难)

其二,由于MLP能够进行特征学习避免了维度灾难,但它无法优化单变量函数使得在低维空间不如样条函数 KAN利用了上述的两个结构,互相弥补了缺点

2.关键技术

2.1 原始公式

Kolmogorov-Arnold(KA) Representation Theorem假设f是一个在有界域上的多元连续函数,那么f可以写成有限多个单变量连续函数相加

但是这个原始表达式只对应了一个拥有两层非线性激活函数,并且隐藏层只有2n+1个节点的网络

如果仅仅利用原表达式去做机器学习(拟合、回归等),由于一维函数可能非平滑,所以在实际操作中并非是可学习的

2.2 KAN结构

任务定义:找到函数f,拟合输入输出对\begin{Bmatrix} x_{i} ,y _{i} \end{Bmatrix},使得y_{i} \approx f(x_{i}),对应于原始公式只需要找到\Phi _{q}\phi _{q, p}即可

表示一维函数矩阵,定义q为输出维度,p为输入维度

定义KAN的形状表示为:

其中,ni表示第i层节点个数 定义第i个神经元在第l层表示为(l, i),x_{l,i}表示(l, i)神经元的激活值,第l层和第l+1层之间有n_ln_{l+1}个激活函数(因为激活函数在边上,并且为全连接),那么(l, i)和(l+1, i)之间的激活函数可以表示成

上述过程对应于下图:

因此第l+1层的第j个节点可表示成:

写成矩阵形式为:

其中,\Phi _{l}表示第l层的激活函数矩阵,那么对应一个有L层的KAN网络,有:

写成与原始公式相似的形式:

在实现上,激活函数采用多个一维的B-Spline函数的结合,并利用残差激活函数

参数量对比,L层,宽度N(k表示样条函数为k阶)

KAN:(上限挺好推的,但是下限不太懂为什么是+k而不是*k)

MLP:

2.3 缩放定律

神经缩放定律是测试损失(test Loss)随着模型参数的增加而减小的现象,即其中 ℓ 是测试 RMSE,N 是参数数量,α 是缩放指数。也就是说,参数量越大,误差越小(精度越高)

KAN能通过细分数据域网络来提高B-Spline函数逼近的精度,从而使缩放更加自由,能够有效控制参数量。而MLP对于不同的网格划分需要重新进行训练

例如,可以先训练一个参数较少的 KAN,然后通过使Spline网格粒度更细,使其扩展到参数较多的 KAN,这一方式降低了复杂度

3.技术扩展

为了提高KAN的可解释性,作者提出了一些简化模型的技术:

①稀疏化

MLP:L1正则化

KAN:定义L1范数,去除线性权重,再加上熵正则化

因此可以得到整体的训练损失为:

预测损失+L1正则化+熵正则化,通过λ控制正则化幅度

②可视化

将激活函数的透明度设置为与\tanh (\beta A_{l,i,j})成正比,其中 β = 3

重要的函数会凸显出来

③剪枝

对每个节点定义输入输出分数,输入输出分数都大于阈值的节点会被保留下来,其余会被修剪掉

④符号化

如果猜测某些激活函数实际上是符号函数(例如 cos 或 log),则提供一个接口将其设置为指定的符号形式,后续只需要拟合参数即可

在剪枝完后,用户可以根据形状选择符号函数的公式,然后进一步训练,如果训练损失下降了,就表明选择了正确的符号表达式

4.模型效果

①拟合精度方面的比较

KAN有更好的放缩曲线,特别是高维,而MLP很快就饱和了,表明了KAN的扩展能力很强,并且KAN像MLP一样网络越深效果越好

②解决更复杂的偏微分方程

KAN 使用较小的网络更少的参数实现了更好的误差缩放定律

作者还将KAN用在数学和物理领域的一些实际应用上,均表明KAN能用更少的参数量得到更好的效果

5.相关讨论

KAN还有一些可以改进的地方:

①在精度层面,还可以进一步研究模型结构训练细节来提高效果

②对于KAN来说,最大的问题是训练太慢,因为无法利用batch计算,可以尝试对激活函数分组,同一组内使用相同的激活函数

③可以引入自适应性来提高KAN的精度和效率

④将KAN用在实际任务中,机器学习/理论科学

⑤由于KAN具有可解释性,可以尝试与AI4Science结合

6.总结

KAN基于Kolmogorov-Arnold Representation Theorem,并对两层网络进行扩展。通过将可学习激活函数设置在边上,而节点处进行简单的相加操作构建了KAN模型。由于KAN使用较少的参数量就能媲美MLP,并且还能通过简化技术使其具有良好的可解释性,因此KAN有望替代MLP作为神经网络中的基础模块。相比MLP而言,KAN有更好的缩放性能,但在相同的参数量下,KAN的训练速度过慢成为了最大的问题。

笔者的思考:

①作者强调了浅层的KAN就能达到甚至超过深层MLP的性能,是否意味着深层的KAN不太能实现(训练太慢,小模型适用)

②KAN不太适用于现在的深度学习框架,从硬件计算层面不太有优势

③从网络架构来看,其实KAN和MLP差不多(虽然原理不同),区别在于MLP是进行线性组合再进行激活,而KAN是先进行激活再线性组合,并且KAN中不同边上的激活函数并不相同,也正是这点带来了额外的计算复杂度,是否意味着KAN只是MLP更一般的形式

④笔者认为本文最大的特点是可解释性,适合用在较小的问题上,在AI4Science领域可能会有较大提高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1836238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文看懂!iThenticate查重报告全解读

在科研界,原创性和知识产权保护的重要性不言而喻。iThenticate作为全球领先的文献比对和不端检测工具,为广大科研工作者提供了一道坚实的防线保障。据统计,全球有超过16000家学术机构、出版社、高校与企业使用iThenticate查重系统&#xff0c…

C++初学者指南第一步---6.枚举和枚举类

C初学者指南第一步—6.枚举和枚举类 文章目录 C初学者指南第一步---6.枚举和枚举类1.作用域的枚举(enum class类型)(C11)2.无作用域的枚举(enum类型)3.枚举类的基础类型4.自定义枚举类映射5.和基础类型的互相转换 1.作用域的枚举(enum class类…

【论文阅读】-- 时间空间化:用于深度分类器训练的可扩展且可靠的时间旅行可视化

Temporality Spatialization: A Scalable and Faithful Time-Travelling Visualization for Deep Classifier Training 摘要1 引言2 动机3 问题定义4 方法论4.1 时空复合体4.2 复数约简 5 实验6 相关工作7 结论参考文献 摘要 时间旅行可视化回答了深度分类器的预测是如何在训练…

头歌资源库(11)分解2019

一、 问题描述 二、算法思想 首先,确定第一个整数的范围,由于不能包含数字2和4,所以第一个整数的取值范围为[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 6, 7, 8, 9]。 然后,在确定第一个整…

DAY 45 企业级虚拟化技术KVM

企业级虚拟化技术KVM 1.kvm是什么 kernel virtualization machine 内核虚拟机 qemu的二次开发 软件全拼 qemu-kvm kvm virtulbox ovm vmware vsphere套件(vmawre-esxi) microsoft hyper-V 2.什么是虚拟化 资源利用 资源隔离 虚拟化管理&…

立创开源学习篇(一)

1.机壳地 外面包围的一圈是机壳地,和金属外壳相连与电路板的GND不相连:(大疆很多产品有此设计) 屏蔽和接地:通过在电路板周围打孔,并连接到机壳地,可以形成有效的电磁屏蔽层(形成金…

LabVIEW开发为什么沟通需求非常重要

在LabVIEW开发项目中,需求沟通是项目成功的基石。以下是需求沟通的重要性及其原因: 明确项目目标: 定义清晰的目标:通过与用户的沟通,可以明确项目的目标和范围,确保开发团队理解用户的实际需求&#xff0c…

Windows系统部署本地SQL_Server指引

Windows系统部署本地SQL_Server指引 此指引文档环境为Windows10系统,部署SQL_Server 2019为例,同系列系统软件安装步骤类似。 一、部署前准备; 下载好相关镜像文件;设备系统启动后,将不必要的软件停用,避…

4M-21:霸气侧漏高效的20+多模态AI模型

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

Python的print,input与注释的使用

1.print的使用 2.input的使用 3.如何注释 1.print的使用 1.1建立俩个变量a,b,直接把变量放在print的括号里面就会打印其的值。 1.2print可以同时打印多个,打印ab的值与字符串‘11’。 1.3先用chr()函数去获取对应97…

CIC-DDoS2019-Detection

CIC-DDoS2019 对CIC-DDoS2019数据集进行检测,本文提供了如下内容: 数据清洗与合并机器学习模型深度学习模型PCA,t-SNE分析数据,结果可视化 代码地址:[daetz-coder](https://github.com/daetz-coder/CIC-DDoS2019-Detection) 1、数据集加载…

基于Flask+Mysql+EasyUI的简单用户管理系统

1、系统实现功能 添加用户查看用户修改用户删除用户 完整代码下载地址在最后,若显示链接不存在,可能是资源还没有审核,可私聊我发完整代码。 2、功能实现 2.1 添加用户 构建添加用户的Flask接口add_user() app.route("/add/user&quo…

计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析

计算机网络(谢希仁第六版)课后习题与答案 物理层 博客只对老师给的重点进行整理,完整的课后习题答案见Gitee下载:《计算机网络教程(第6版)(微课版)》习题答案 2-5 请画出数据流1 0 1…

JavaFX 分页

分页控件用于浏览多个页面。 我们典型地使用对网页的分页控制,例如博客。 在博客页面的底部,我们可以看到一个矩形区域,作为一个数字列表来指示页面索引,以及一个下一个/上一个按钮来链接到下一个/上一个页面。 创建分页控件 分…

OpenCV中的圆形标靶检测——findCirclesGrid()(二)

本章我们开始讲解基于层次聚类的标靶检测算法。当我们调用如下API,且flags中包含cv::CALIB_CB_CLUSTERING标志位时,将会执行基于层次聚类的斑点检测算法。算法支持对称标靶和非对称标靶两类,相应的需要将下述flags设为包含CALIB_CB_SYMMETRIC_GRID或CALIB_CB_ASYMMETRIC_GRI…

安卓Context上下文

目录 前言一、Context简介二、Application Context2.1 Application Context的创建过程2.2 Application Context的获取过程 三、Activity的Context创建过程四、Service的Context创建过程 前言 Context也就是上下文对象,是Android较为常用的类,但是对于Co…

MySQL事务、数据库的存储引擎

1. 事务的概念 定义:事务就是一组数据库操作序列(包含一个或多个SQL操作命令),事务会把所有操作看作是一个不可分割的整体向数据库系统提交或撤销操作,所有操作要么都执行,要么都不执行。 1.1事务的 ACID …

重学java 74.Lombok的使用

少点心气,多点干劲 —— 24.6.18 一、lombok的安装使用 1.作用: 简化javabean开发 2.使用: a.下插件 ->如果是idea2022不用下载了,自带 b.导lombok的jar包 安装教程: http://t.csdnimg.cn/wq9MM c.修改设置 二、lombok的介绍 Lombok通过增加一…

短路是怎么形成的

1. 短路分为电源短路和用电器短路。 电源短路:电流不经过任何用电器,直接由正极经过导线流向负极,由于电源内阻很小,导致短路电流很大,特别容易烧坏电源。 用电器短路:也叫部分电路短路,即一根…

Java对象头的组成

介绍对象头之前先说一下Java对象内部的组成结构&#xff1a; 1&#xff0c;成员变量&#xff08;Data1...DataN&#xff09; 2, 对象头 Java对象头的组成&#xff08;根据对象头分析对象状态借此优化代码&#xff09; <dependency> <groupId>org.openjdk.jol&l…