KAN网络

2024-05-12 12:12
文章标签 网络 kan

本文主要是介绍KAN网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

背景知识

什么是神经网络?

神经网络发展史

MP神经元模型

感知机模型

KAN

引言

MLP架构vsKAN架构

从数学定理方面来看:

从算法层面上看:

从实际应用过程看:

KAN的架构细节

KAN的准确性

KAN的可解释性

监督学习

无监督学习

数学领域

物理领域

自动和手动模式的比较

何时该选用 KAN?


背景知识

什么是神经网络?

神经网络是一种模仿生物神经网络结构和功能的非线性数学模型

神经网络发展史

MP神经元模型

当前神经元会收到x1到xn传来的信号,这些输入信号会通过w1到wn的权重,与当前神经元进行连接,从而传递信息。

感知机模型

KAN

引言

弗拉基米尔·阿诺德和安德烈·科尔莫戈罗夫证明了,如果f是有界域上的多变量连续函数,则f可以写成单变量连续函数和加法二元运算的有限组合。

即“任何一个多变量连续函数都可以表示为一些单变量函数的组合”

KAN 的名字也由此而来。

  正是受到这一定理的启发,研究人员用神经网络将 Kolmogorov-Arnold 表示参数化。

  为了纪念两位伟大的已故数学家 Andrey Kolmogorov 和 Vladimir Arnold,我们称其为科尔莫格罗夫-阿诺德网络(KANs)。

MLP架构vsKAN架构

         跟 MLP 最大、也是最为直观的不同就是,MLP 激活函数是在神经元上,而 KAN 把可学习的激活函数放在权重上。

从数学定理方面来看:

        MLP 的灵感来自于通用近似定理,即对于任意一个连续函数,都可以用一个足够深的神经网络来近似。

  而 KAN 则是来自于 Kolmogorov-Arnold 表示定理 (KART),每个多元连续函数都可以表示为单变量连续函数的两层嵌套叠加。

从算法层面上看:

        MLPs 在神经元上具有(通常是固定的)激活函数

        而 KANs 在权重上具有(可学习的)激活函数。这些一维激活函数被参数化为样条曲线。

从实际应用过程看:

        KAN 可以直观地可视化,提供 MLP 无法提供的可解释性和交互性。

KAN的架构细节

左侧的图显示了 KAN 的分层架构。每层包括一组节点,每个节点都通过一组特定的函数处理输入数据,输出到下一层。每个节点上的小图标表示的是激活函数的形式,这里用B-样条函数作为激活函数。

右侧的图展示了一个激活函数 ϕ(x),它被参数化为一个B-样条函数。图中还展示了如何通过改变B-样条的节点(也称为控制点)数量来调整函数的粒度。

这张图的核心在于展示KAN如何通过使用B-样条作为激活函数,结合网络的多层结构和激活函数的动态调整(网格扩展技术),来处理复杂的高维数据。这种设计使得网络不仅能适应不同的数据分辨率,还能通过调整激活函数的精度来优化性能。

KAN的准确性

神经缩放规律:KAN 的缩放速度比 MLP 快得多。除了数学上以 Kolmogorov-Arnold 表示定理为基础,KAN 缩放指数也可以通过经验来实现。

函数拟合:KAN 比 MLP 更准确。

偏微分方程求解:比如求解泊松方程,KAN 比 MLP 更准确。

规避灾难性遗忘:KAN 不会像 MLP 那样容易灾难性遗忘,它天然就可以规避这个缺陷。

KAN的可解释性

监督学习

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

无监督学习

在无监督学习中,目标是识别数据中变量之问的依赖关系,而不是预测输出,KANS通过修改其结构,能够识别哪些输入变量是相互依赖的。左图(seed=0)和右图(seed =2024)显示了相同的数据集但不同的初始化种子如何导致KAN 学到不同的依赖关系结构。 KAN 通过其灵活的网络结构捉供了一种强大的工具来探索这些关系,从而增强了模型的解释性和应用的广泛性

数学领域

用KAN来解决结点理论问题: 图a显示使用 17 个变量的网络结构实现了81.6%的测试准确率。仅使用3个最重要的变量精简后的模型达到了78.2%的测试准确率。图(c)通过饼图展示了三个变量对预测结果的贡献比例。

物理领域

本文用KAN来探索和解释物理模型中的动力学边界,尤其是在量子系统的安德森局域化现象中的应用

自动和手动模式的比较

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

何时该选用 KAN?

关于这个问题,主要看想要的是什么?如果效率优先,也就是最右边这条支路,选MLP,因为目前,KANS训练速度较慢是其主要瓶颈,通常比 MLPS慢10倍。但如果想要小模型,KAN更好。如果可解释性优先,选中间,那么KAN牛遍。如果准确性优先,最左边,KAN 也更牛通,尽管 KAN 显示了不错的前景,但毕竟刚开始,还很不足。

这篇关于KAN网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982594

相关文章

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、