【论文笔记】KAN: Kolmogorov-Arnold Networks 全新神经网络架构KAN,MLP的潜在替代者

KAN: Kolmogorov-Arnold Networks

image-20240506010853167

code:https://github.com/KindXiaoming/pykan

Background

​ 多层感知机(MLP)是机器学习中拟合非线性函数的默认模型,在众多深度学习模型中被广泛的应用。但MLP存在很多明显的缺点:

  1. **参数量大:**Transformer中,MLP几乎消耗了所有非嵌入参数。
  2. **缺乏可解释性:**在没有后期分析工具的情况下,相较于注意力层通常难以解释。

Novelty

​ 受到Kolmogorov-Arnold 表示定理启发,提出了一种有希望的MLP替代方案,称为Kolmogorov-Arnold Networks(KANs)。

​ MLP将固定的激活函数放在节点(“神经元”)上,而KAN将可学习的激活函数放在边缘(“权重”)上。

image-20240506011519381

​ 对于PDE求解,2x10 的KAN比4x100 MLP精确100倍(10−7 vs 10−5 MSE),参数效率高100倍( 1 0 2 10^2 102 vs 1 0 4 10^4 104参数)。

Method

Kolmogorov-Arnold表示定理

基本形式:

image-20240506015839202

​ 这个公式仅仅包含两层非线性和少量的隐藏层项(2n+1)。这意味着原始的表示方法虽然理论上是完备的,但在处理实际问题时可能因表达能力受限而不够有效。

​ 本文将把网络泛化到任意宽度和深度,可以增加模型的复杂度和学习能力,使得网络能够更好地逼近和表达各种复杂的函数。

KAN结构

image-20240506160236584

把网络泛化到任意宽度和深度:

image-20240506162506239

激活函数:

image-20240506163333689 image-20240506163405974

c i c_i ci是可训练的。原则上w是多余的,因为它可以被包括到b(x)和spline(x)中。然而,KAN中仍使用了w,以更好地控制激活函数的总体大小。

初始化:

​ 每个激活函数初始化为 s p l i n e ( x ) ≈ 0 spline(x)≈0 spline(x)0。w根据Xavier初始化进行初始化。

网格扩展

​ 增加MLP的宽度和深度可以提高性能,但不同大小的MLP训练是独立的,训练这些模型的成本很高。

​ KAN可以先用一个参数较少的模型进行训练,然后通过使其样条网格更精细,将其扩展到具有更多参数的KAN,而不需要从头开始重新训练更大的模型。通过以下公式利用最小二乘法来获得细网格的参数:

image-20240506182029612

简化KAN

​ 从一个足够大的KAN开始,用稀疏性正则化训练它,然后进行修剪。

稀疏化

​ 在训练MLP时通常使用L1范数来鼓励模型的权重向量中有更多的零,从而达到稀疏化的效果。但L1不足以使KAN稀疏化,需要一个额外的熵正则化。

​ 定义每一个激活函数的L1范数为:

image-20240506232127164

​ KAN的每一层的L1范数为所有激活函数的L1范数之和:

image-20240506232234530

​ 定义KAN的每一层的熵为:

image-20240506232532546

​ 总的训练损失为预测损失与所有KAN层的L1和熵正则化之和:

image-20240506232710358
剪枝

​ 对于每个节点来对KAN进行剪枝,定义每个结点的传入和传出分数为:

image-20240506233641471

如果传入和传出的分数都小于0.01,则认为该神经元时不重要的,将其修剪。

符号化

​ 一些激活函数实际上是符号函数(如cos、log等),作者提供了一个接口来将他们设置为制定的符号函数f的形式。但激活函数的输出和输出可能有偏移和缩放,因此从样本中获取预激活值x和后激活值y,并拟合仿射函数 y ≈ c f ( a x + b ) + d y≈cf(ax+b)+d ycf(ax+b)+d

截屏2024-05-07 01.14.32

人类用户可以通过观察KAN可视化的激活函数,猜出这些符号公式,并将这些激活函数直接设置为该公式,再去拟合仿射函数。通过这样注入人类的归纳偏差或领域知识使得拟合的结果更加精准。

Experiment

神经标度律(scaling law):KAN比MLP有着更快的标度变化速度。在求解偏微分方程任务中,KANs也展现出更快的收敛速度、达到更低的损失,并有着更陡峭的标度率表现。

image-20240507005939835

**函数拟合:**KAN比MLP更准确,具有更好的Pareto边界

**偏微分方程求解:**在求解泊松方程时,KAN比MLP更准确,敛速度更快,损失更低,并且具有更陡峭的神经标度率表现。

image-20240507010553330

**持续学习:**借助样条设计的局部性天然优势,KAN可以在新数据上实现持续学习,规避了机器学习中存在的灾难性遗忘问题。

**可解释性:**KAN能通过符号公式揭示合成数据集的组成结构和变量依赖性。

截屏2024-05-07 01.10.31

人类用户可以与 KANs 交互,使其更具可解释性。在 KAN 中注入人类的归纳偏差或领域知识非常容易。

Limitation

​ KAN最大的瓶颈在于训练速度慢。在参数数量相同的情况下,KAN通常比MLP慢10倍,这需要在未来加以改善。

image-20240507002857233

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言队列的含义与队列数据操作代码详解!

引言:于本篇博客当中,我们将讲到数据结构——队列的有关知识。而对于这次的队列,我们将会在单链表的基础上实现。 更多有关C语言和数据结构知识详解可前往个人主页:计信猫 一,队列的含义 队列是一种特殊的线性表&#…

YOLOv8 Tensorrt Python/C++部署详解

按照大佬的方法进行部署,但是中间出现了很多问题,这里进行一下总结。 YOLOv8 Tensorrt Python/C部署教程_yolo 安装tensorrt-CSDN博客https://blog.csdn.net/weixin_45747759/article/details/130341118 Monday-Leo/Yolov5_Tensorrt_Win10: A simple i…

上线了《學點笔录》,更方便翻阅笔录

大家好,我是学点,整理了一下自己笔记、摘要、记录《學點笔录》并且上线了为更方便翻阅 https://code.yellowcan.cn 欢迎来我的學點笔录网站!笔录会关于与编程有关,比如bug记录、bug解决过程、编程笔记等等,帮助回忆阅…

【前端热门框架【vue框架】】——对组件进行更加简洁合理的处理和解释(一)

👨‍💻个人主页:程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

八、VUE内置指令

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 四、VUE事件处理 五、VUE计算属性 六、Vue监视属性 七、VUE过滤器 七、VUE内置指令 九、VUE组件 v-text 向其所在的节点中渲染文本内容。 (纯文本渲染)与插值语法的区别:v-text会替换掉节点中的内容,{{x…

HashMap前世今生

概述 HashMap是我们常用的一种数据结构,他是一个key-value结构。我们来深入了解一下。 1.8之前用的数组加链表 1.8之后用的数组加链表加红黑树,当链表数量大于8时,将链表转为红黑树。当红黑书节点小于6又会转为链表。 浅析HashMap的put()方…

C语言 循环控制流程的跳转语句

本文 我们来说 控制流程的跳转语句 C语言 提供三种 控制流程的跳转语句 1. break 语句 我们之前讲 switch 时 大家已经看到过这个 break 了 作用是跳出当前 switch 在循环中 它的作用也差不多 这里 我们举个生活中的例子 例如 我们在操场上跑步 计划跑十圈 但是 还没跑完 我…

压缩和归档库-LZ4介绍

1.简介 LZ4是一种快速的压缩算法,提供压缩和解压缩的速度,而牺牲了压缩率。它被设计用于快速的数据压缩和解压缩,特别是用于数据存储和传输。LZ4通常用于需要高速数据处理的场景,如数据库、日志文件处理和实时数据传输。 LZ4的特…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文:Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought(CoT) prompting 的方法通过结合 few-show prompt 的思路,让 LLM 能够挑战更具…

上位机图像处理和嵌入式模块部署(树莓派4b和c++新版本的问题)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 自己读书的时候是03年,学习c也是差不多04年开始,到现在基本上20年了。这20年过程当中,其实c的语言版本一直是在…

phpstudy(MySQL启动又立马停止)问题的解决办法

方法一:查看本地安装的MySQL有没有启动 1.鼠标右击开始按钮选择计算机管理 2.点击服务和应用程序 3.找到服务双击 4.找到MySQL服务 5.双击查看是否启动,如启动则停止他,然后确定,重新打开phpstudy,启动Mysql. 方法二&#xff…

【半夜学习MySQL】数据库概念详解探索数据库到底是如何存储的?

🏠关于专栏:半夜学习MySQL专栏用于记录MySQL数据相关内容。 🎯每天努力一点点,技术变化看得见 文章目录 什么是数据库主流数据库与数据库分类数据库的基本使用数据库的启动及关闭查看配置文件与数据库存储位置连接数据库服务器服务…