3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

機械学習Advent Calendar 2024

Day 14

Kolmogorov-Arnold Networks(KAN)について

Posted at

はじめに

 今年4月、Kolmogorov-Arnold Networks(KAN)という新しい機械学習手法が発表されました。この記事では、KANがどんなものか、これまでの深層学習とどう違うかを説明したいと思います。

一般的な深層学習

 現在深層学習と呼ばれている手法は多層パーセプトロン(MLP)という手法が用いられています。$L$層の隠れ層と入力層($l = 0$)を含むある層($l = \lbrace 0, 1, 2, ..., l \rbrace$)に$J_l$個のニューロンを持つMLPにおいて,第$l$層$j_l$番目のニューロンの状態$h_{l, j_l}$から第$l + 1$層$j_{j + 1}$番目のニューロンの状態$h_{l + 1, j_{l + 1}}$への計算は重み$w_{j_l, j_{l + 1}}$と層全体のバイアス$b_l$、各層$l$について固定された活性化関数$\phi_l$を用いて以下のように表されます。

h_{l + 1, j_{l + 1}} = \phi \left( \sum_{j_l = 1}^{J_l} w_{j_l, j_{l + 1}} h_{l, j_l} + b_l \right)

簡単に言うと、MLPは線形関数($y = ax + b$)をたくさん配置し複雑な関数をフィッティングしようという考え方です。線形関数だけでは複雑な関数をフィッティングできませんが、活性化関数を非線形にすることで複雑な関数もフィッテングすることができます。

KANの概要

 KANはKolmogorov-Arnold表現定理という理論が基になっています。これは「特定の条件を満たす多変量関数は、1変量関数だけで表現することができる」というものです。まず、$J_0$個の入力$\boldsymbol{x} = (x_1, x2, ..., x_{J_0})$を取る滑らかな多変数連続関数$f$があるとします。この関数$f$の基礎的な構造は次式のようになります。

f(\boldsymbol{x}) = \sum_{q = 1}^{2 J_0 + 1} \Phi_q \left(\sum_{p = 1}^{J_0} \phi_{q, p} (x_p) \right)

つまり、内部関数$\phi_{q, p}$と外部関数$\Phi_q$の合成関数で$f$が表現できるということで$p$および$q$は元の入力変数の数$J_0$に依存して上限が決定されます。
 KANは上記の理論をベースにMLPを発展させた手法と言えます。

image.png

KANのアーキテクチャは上図1のようになっています。先程の数式では内部関数と外部関数は元の入力変数の数$J_0$に依存すると言いましたが、MLPがパーセプトロンを多層化させたように、Kolmogorov-Arnold表現定理のネットワークを多層化させたことがKANの大きな特徴です。
 MLPとの違いを説明すると、MLPは非線形の活性化関数を用いて線形関数の重みを学習しますが、KANでは活性化関数そのもの学習します。なお、活性化関数の学習にはB-splineを用います。

KANでSymbolic regressionしてみた

 Symbolic regressionは関数同定、すなわちデータから数式を推定することです。今回はKANのライブラリであるpykanのExampleに習ってscikit-learnのmake_moonsを用いました。

image.png

結果は以下の通りです。

-0.9652x_2 + 0.4782 \sin(3.0488x_1 + 1.5835) + 0.7081 \quad sample = 1000, noise = 0.0
-0.8437x_2 + 0.3822 \sin(3.1058x_1 + 1.6229) + 0.7081 \quad sample = 1000, noise = 0.1
-0.8437x_2 − 0.6781x_1 + 0.5915 \quad sample = 1000, noise = 0.2
-0.9627x_2 - 0.5081 \sin(3.0488x_1 + 7.8304) + 0.7081 \quad sample = 100, noise = 0.0

ノイズとデータ数を変えていくつか計算してみました。特にノイズが大きくなると数式がガラッと変わってしまいます。データ整理の大切さはKANに対しても変わらないのでしょう。
 ひとまず、KANを用いて関数同定ができることを確認しました。今後は自然現象のデータを用いて関数同定を行ってみたいと思います。

  1. 新美潤一郎:Kolmogorov–Arnold Networkのマーケティング解析への応用可能性の検討、10.51094/jxiv.893、2024.

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?