用大模型理解爆火的KAN网络

五一假期的时候,KAN突然成为了热门话题。虽然最初我并没有计划弄懂它,但在老板的要求下,我还是探索了一下。

一、KAN是什么?

Kolmogorov-Arnold 定理是数学领域的一个里程碑,它揭示了多元函数能够通过一组更简单的函数来近似表示的原理。 在神经网络的研究领域,来自 MIT 的杰出研究者 Ziming Liu 将这一定理巧妙地融入,提出了创新的 KANs(Kolmogorov-Arnold Networks)概念。(GitHub地址:https://github.com/KindXiaoming/pykan)。

有兴趣挑战理解这个数学定理的朋友可以看一下这个讲解视频 https://www.youtube.com/watch?v=CkCijaXqAOM 博主徒手画 splines 曲线,并逐步阐释定理,非常引人入胜。

下面是我的理解哦!

如果你知道MLP的话,那可能也会对KAN刮目相看。

图片

上面这个图就说明了为什么KAN很厉害,因为它和MLP是对偶的。

在深度学习中,MLP(多层感知器)是一种基础的神经网络结构,它由多个层组成,每层包含多个节点,节点之间通过边相连。**激活函数位于节点上,**来引入非线性,从而使网络能够学习复杂的函数映射。

KAN沿用了MLP的网络结构,它也由多个层组成,每层包含多个节点,节点之间通过边相连。激活函数位于边上。

这个对偶性让我想起了电里面的**电-磁对偶性。**在经典电磁学中,电场和磁场可以通过麦克斯韦方程组相互关联。在某些情况下,电场和磁场的角色可以互换,而物理定律保持不变。这种对偶性通常会解释定律的深层次结构和统一性。当然物理和AI两个领域不一样,有可能不能做这样的对比。

【一一AGI大模型学习 所有资源获取处一一】

①人工智能/大模型学习路线

②AI产品经理入门指南

③大模型方向必读书籍PDF版

④超详细海量大模型实战项目

⑤LLM大模型系统学习教程

⑥640套-AI大模型报告合集

⑦从0-1入门大模型教程视频

⑧AGI大模型技术公开课名额

二、KAN能做什么?

1. KAN能够拟合数学公式。MLP也可以,但是KAN能用更少的参数拟合,准确性也更好。

下图是KAN和MLP拟合同一个表达式的对比。以左边的图为例,可以看出,KANs在参数数量较少的情况下,其准确度和MLPs相比有更快的增长趋势。

图片

2. 强大的可解释性

这是一个很令人激动的地方。在KAN里面,你可以看到线条的形状并且自主选择和锁定激活函数的公式。

首先,我们需要理解激活函数的作用。激活函数是神经网络中的关键组件,它们引入了非线性,使得网络能够学习和模拟复杂的函数映射。

KAN定义了一系列可以选择的激活函数,总共有24种。这些激活函数包括但不限于平方、立方、正弦(sine)、余弦(cosine)、指数(exponential)等函数。

接下来用一个例子来说明它强大的可解释性。

假设现在有如下表达式生成的数据。(在训练的时候并不知道这个表达式)

我们定义一个[2,5,1]的网络。2、5、1表示的是节点。前面说过,activation function是定义在边上的,也就是说节点与节点之间会有activation function。

神奇的是这些activation function是可以学习的——它们会越来越像他们原本的样子。

下面是不同阶段网络结构图。

Figure 1 是初始化,所有激活函数都长一个样子。

Figure2 是网络训练20步之后的结果。可以看到激活函数已经出现正弦函数和平方的线条了。

Figure3 是进行剪枝,去掉不重要的节点和激活函数。

Figure4 是最后的样子,右边三个激活函数基本上符合咱们数据的生成函数。

图片

调参也是一门技术活。同样的例子在官网给出的结果更加准确,因为调参的时候做的更精细。下图是官网的结果,exactly由一个平方函数、一个正弦函数和一个指数函数结合。

图片

KAN还有一些其他的功能,例如能解微分方程、在学习的过程中有记忆力等等。这个先不谈,后面用到了再说吧。

三、 大模型帮你理解KAN网络

如果看前面提到的论文和视频没看懂的话,没有关系,咱不是还有大模型嘛。

注:大模型的部分解释不准确,但是在大体上可以帮助大家理解。

来吧,开整!

请用生动的语言给一个20岁的大朋友解释splines以及Kolmogorov-Arnold

好的,想象一下你是一位艺术家,手里拿着一支画笔,准备在画布上绘制一幅美丽的风景画。但是,你不是简单地画直线,而是要画出一条流畅、优雅的曲线,来描绘远处的山峦或者蜿蜒的河流。在数学和计算机图形学中,我们有一套特殊的工具来帮助我们绘制这样的曲线,这就是所谓的“splines”。

Splines是一种数学曲线,它们非常平滑,没有尖锐的角或突然的转折。你可以把它们想象成一种非常听话的画笔,无论你怎么移动,它都能画出一条完美的曲线。在计算机图形设计中,splines被用来创建复杂的形状和动画路径,使它们看起来非常自然和流畅。

现在,让我们来谈谈Kolmogorov-Arnold。这听起来可能有点复杂,但它实际上是一个关于如何测量和比较不同曲线复杂性的数学概念。想象一下,你面前有两条曲线,一条是简单的圆弧,另一条是复杂的螺旋形。虽然它们的长度可能相同,但它们的复杂性和形状却大不相同。

Kolmogorov-Arnold复杂性(也称为K-复杂性)是衡量一个对象(比如曲线)可以用多简单的规则或算法来描述的度量。就像你可能会问:“我需要多少步骤来画出这条曲线?”或者“这条曲线可以用多简单的数学公式来表示?”K-复杂性越低,意味着曲线可以用更简单的规则来描述。

所以,splines就像是你手中的画笔,帮助你在数学和计算机图形的世界里绘制出平滑而优雅的曲线。而Kolmogorov-Arnold就像是你用来评价这些曲线复杂性的标尺,它帮助你理解这些曲线背后的数学规律和结构。通过这些工具,我们不仅能够创造出美丽的视觉效果,还能够更深入地理解数学和自然界中的形状和模式。

如果还没有理解,放出小学生解释版本吧~

请用生动的语言给一个10岁的小朋友解释splines以及Kolmogorov-Arnold

好的,亲爱的小朋友,让我们一起来想象一些好玩的东西想象一下,你有一个长长的橡皮筋,你可以用它来连接两个点,对吧?现在,如果你想要让这个橡皮筋更有趣一些,你可能会让它弯曲,或者扭来扭去的。在数学里,我们有一个特别的名字来称呼这种弯曲的橡皮筋,叫做“splines”。

想象一下,你把橡皮筋的两端固定在两个点上,然后你想要橡皮筋尽可能平滑地弯曲,就像你在画画时用铅笔画一条优美的曲线一样。这就是splines做的事情,它们是数学家用来模拟平滑曲线的一种工具。

现在,让我们来谈谈Kolmogorov-Arnold。这个名字听起来可能有点复杂,但它其实是一个关于如何测量和比较不同曲线弯曲程度的概念。你可以把它想象成一种特殊的尺子,用来测量你的橡皮筋弯曲得有多厉害。

Kolmogorov-Arnold告诉我们,即使两条曲线看起来弯曲得差不多,它们的弯曲程度也可能完全不同。这就像两个朋友,他们可能看起来一样高,但实际上他们的身高可能相差几厘米。Kolmogorov-Arnold就是帮助我们了解这些微小差别的工具。

所以,splines就像是橡皮筋,用来创造平滑的曲线,而Kolmogorov-Arnold就像是一把尺子,用来测量这些曲线的弯曲程度。数学家们用这些工具来解决很多复杂的问题,就像你用橡皮筋和尺子来创造和测量你的艺术作品一样!

太好了,终于理解了吧!

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解
  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望
阶段3:AI大模型应用架构实践
  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景
学习计划:
  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

KAN(Knowledge-Aware Neural Network)神经网络是一种结合了领域知识和深度学习技术的模型,它旨在提高模型的泛化能力和解释性。在KAN中,领域知识被编码为结构化的知识图谱,然后与传统的神经网络模型结合起来,通常是在模型的输入、隐藏层或输出阶段。 KAN网络的基础包括以下几个关键组件: 1. **知识嵌入**:将知识图谱中的实体和关系转化为可训练的向量表示,这些向量反映了实体之间的关系模式。 2. **融合模块**:设计用于融合领域知识和原始输入特征的模块,如注意力机制或专门的融合层,使模型能够动态地利用知识。 3. **知识注入**:将知识图谱信息集成到神经网络的计算流程中,这可能通过与输入数据相加、作为条件输入,或者作为额外的损失函数等方法实现。 4. **训练策略**:通常使用端到端的学习方法,同时优化模型的预测性能和对知识图谱的遵守程度,以保持知识的完整性。 下面是KAN神经网络的一个简单示例代码(Python,使用PyTorch框架): ```python import torch from torch_geometric.nn import KnowledgeGraphEmbedding class KANModel(torch.nn.Module): def __init__(self, num_nodes, embedding_dim, knowledge_graph): super(KANModel, self).__init__() self.kg_embedding = KnowledgeGraphEmbedding(knowledge_graph, embedding_dim) self.main_network = torch.nn.Linear(embedding_dim + num_nodes, out_features) # 假设out_features是你想要的输出维度 def forward(self, x, edge_index, knowledge_indices): # x: 输入节点特征 # edge_index: 边的关系矩阵 # knowledge_indices: 知识图谱中的实体对应于输入节点的索引 node_embeddings = self.kg_embedding(knowledge_indices) # 获取知识图谱的嵌入 combined_features = torch.cat([x, node_embeddings], dim=1) # 混合输入特征和知识嵌入 output = self.main_network(combined_features) # 通过主网络计算输出 return output # 使用示例 model = KANModel(num_nodes, embedding_dim, knowledge_graph) inputs = (node_features, edge_index, knowledge_indices) output = model(inputs) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值