Skip to content

SigKAN: Signature-Weighted Kolmogorov-Arnold Networks for Time Series

License

Notifications You must be signed in to change notification settings

remigenet/SigKAN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SigKAN: Signature-Weighted Kolmogorov-Arnold Networks for Time Series

SIGKAN representation

This folder includes the original code implemented for the paper of the same name.

A pypi package is available at pypi

The SigKAN is a novel layer that combines the power of path signature and Kolmogorov-Arnold Networks.

The idea behing is to use a learnable path signature that is transformed in weights to the KAN layer.

The Signature is passed through a GRKAN (Gated Residual KAN unit) that is a modified GRN where some Dense layers are replaced by KAN layers.

New in version 0.2.0:

The signature is now computed using keras_sig instead of iisignature_tensorflow_2 that is a keras implementation of the signature based on signatory and signax. Keras_sig being in pure keras3 the package is compatible and tested with all keras backend (tensorflow2, jax and torch). However, we recommend strongly to use jax as backend as it is the most efficient for this task.

The computation of the signature also profits from an optimization for GPU computation inside keras_sig.

The KAN part implementation has been inspired from efficient_kan and works similarly to it, thus not exactly like the original implementation.

The SigKAN is a keras layers and can be used as any other keras layer, for example:

import tensorflow as tf
from sigkan import SigKAN
model = Sequential([
    Input(shape=X_train.shape[1:]),
    SigKAN(100, 2, dropout = 0.), # 100 units, signature of order 2, takes an input shape (batch, sequence, features) and returns a tensor of shape (batch, sequence, 100)
    Flatten(),
    Dense(100, 'relu'),
    Dense(units=n_ahead, activation='linear')
])

A more complete example is provided in a notebook in the example folder.

The code is provided as is and is not specially maintained.

Please cite our work if you use this repo:

@article{inzirillo2024sigkan,
  title={SigKAN: Signature-Weighted Kolmogorov-Arnold Networks for Time Series},
  author={Inzirillo, Hugo and Genet, Remi},
  journal={arXiv preprint arXiv:2406.17890},
  year={2024}
}

Shield: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

About

SigKAN: Signature-Weighted Kolmogorov-Arnold Networks for Time Series

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages