Kan
其本质是多层的Kolmogorov网络
一般而言,Kan隐藏层节点数量为2n+1,但是原始的两层结构并没有限制其激活函数是否光滑。有时,这些激活函数可能需要用到非常非光滑甚至有分形行为的“病态”函数来表达。这就失去了现实意义。这在实际应用中意义不大。因此,加深网络的直观理由是希望那些原本无法被光滑表示的函数能够被光滑地表示。
exp(sin(x12+x22)+sin(x32+x42)),对于这种函数,一般需要构建三层神经网络,第一层学习平方运算,第二层学习sin函数运算,第三层学习指数运算。
对于函数空间问题
- 当前的理论假设所有函数都是光滑的
- 乘法运算:可以通过公式xy=(x+y)2−(x2+y2)实现
- 除法运算:yx=eln(x)−ln(y)
- 特殊函数:贝塞尔函数.....
- 阶段转换函数:绝对值函数?双曲正切函数?
- 越复杂的函数需要过多层的KAN网络,每一层表示一类运算
B样条(B-spline)插值
B样条(B-spline)基函数是一组分段多项式函数,用于构造平滑的曲线或函数逼近。
- 节点向量(Knots):一系列非递减的实数t0,t1,⋯,tn+k,其中n是基函数的数量,k是样条的阶次。
- 阶次k:决定了样条的平滑程度的多项式的次数
递归定义
Bi,1(x)={10ti≤x<ti+1other
Bi,k(x)=ti+k−1−tix−tiBi,k−1(x)+ti+k−ti+1ti+k−xBi+1,k−1(x)
导数
∂x∂ϕ(x)=i=1∑nci∂x∂Bi,k(x)
导数的递归公式
∂x∂Bi,k(x)=(k−1)(ti+k−1−tiBi,k−1(x)−ti+k−ti+1Bi+1,k−1(x))
节点向量获取方法
-
均匀节点向量:简单易行,适用于数据分布均匀的情况。
-
数据驱动节点向量:根据数据分布设置节点,更好地适应数据特性。
-
自适应节点向量:将节点位置作为可训练参数,提高模型灵活性。
-
平衡模型复杂度和性能:节点数量和可训练参数的增加可能导致过拟合,需要适当正则化。
-
确保数值稳定性:在优化节点位置时,要防止数值不稳定和训练过程的震荡。
-
合理初始化和预处理:良好的初始节点位置和数据预处理有助于模型的训练和性能提升。