新しいタイプのニューラルネットワーク Kolmogorov-Arnold Networks(KANs)、解釈可能性がより高い
(spectrum.ieee.org)- Kolmogorov-Arnold Networks(KANs) は従来のニューラルネットワークとは異なる構造により、小規模でもより解釈しやすく正確な結果を示し、科学者が物理データから新しい仮説を見つけるためのツールになり得る
- 従来の MLP がシナプスの重みとニューロンの活性化関数に依存する一方、KANではシナプスが入力-出力関数を学習し、ニューロンはシナプス出力の合計だけを計算する
- 物理法則データと位相結び目の実験で、KANは規模を大きくするほど性能がより速く向上し、偏微分方程式の求解ではパラメータが100倍多いMLPより 100倍正確 だった
- 研究チームはKAN内部の関数形と接続の重要度を可視化し、弱い接続を枝刈りすることで、場合によってはデータセットを作った 物理関数 を1行の直感的な関数として再構成した
- KANはパラメータあたりの学習時間が長くGPU活用が難しいが、必要なパラメータが少ないため、物理問題のような小規模な用途では実用性が残っている
KANが提案する新しいニューラルネットワーク構造
- 現代AIの中心にある人工ニューラルネットワークはチャットボットや画像生成器を支えているが、多数のニューロンのため内部動作を解釈しにくい ブラックボックス になり得る
- 新しい構造である Kolmogorov-Arnold Networks(KANs) は従来型ニューラルネットワークより解釈可能性が高く、実験ではより小さくてもより正確な結果を示した
- KANの開発者らは、この構造が物理データを簡潔に表現できるため、科学者が自然法則に関する新しい仮説を発見する助けになる可能性があると見ている
- Johns Hopkins UniversityのBrice Ménardは、過去10年以上、ニューラルネットワーク設計はおおむね試行錯誤的な調整に依存してきたとし、KANのように第一原理から設計された新しいアーキテクチャの登場を前向きに評価している
従来のMLPとKANの違い
- 従来型ニューラルネットワークでは、シナプスが2つのニューロン間の接続強度を表す 重み 1つを学習する
- ニューロンは前の層のニューロンからの入力を重み付き和にした後、その和に単純な 活性化関数 を適用する
- すべてのニューロンが次の層のすべてのニューロンと接続される形は multi-layer perceptron(MLP) と呼ばれる
- KANでは役割が入れ替わる
- シナプスは単純な接続強度の代わりに、入力を出力へマッピングする 活性化関数 を学習する
- この関数は複数の関数を組み合わせた スプライン(spline) である場合があり、各接続ごとに異なり得る
- ニューロンはより単純になり、前段のシナプス出力を合計するだけになる
- KANという名前は、関数を組み合わせる方法を研究した2人の数学者KolmogorovとArnoldに由来する
- この構造の目的は、より少ない学習パラメータでデータを表現する際に、より大きな柔軟性を提供することにある
科学課題で示した性能
- 研究チームはKANを比較的単純な 科学課題 で実験した
- 一部の実験では、相対論的速度で動く2つの物体が互いにすれ違う速度のような、単純な物理法則を使用した
- 方程式で入力-出力データポイントを生成した
- 各物理関数について、一部のデータでネットワークを学習させ、残りのデータでテストした
- KANはサイズを大きくするほど、MLPより性能が速く改善した
- 偏微分方程式の求解では、あるKANがパラメータを 100倍多く持つMLP より100倍正確だった
- 別の実験では、位相結び目のさまざまな性質に基づいて、結び目の signature と呼ばれる性質を予測するよう学習させた
- MLPは約300,000個のパラメータでテスト精度78%を達成した
- KANは約200個のパラメータでテスト精度81.6%を達成した
解釈可能性と関数の再構成
- 研究チームはKANを視覚的に展開し、活性化関数 の形状と各接続の重要度を見ることができた
- 弱い接続は手動または自動で枝刈りできた
- 一部の活性化関数は、sine関数やexponential関数のようなより単純な関数に置き換えられた
- その結果、KAN全体を構成要素である活性化関数まで含めた直感的な 1行の関数 として要約できた
- 場合によっては、データセットを作った物理関数を完全に再構成した
- MITおよびNSF AI Institute for Artificial Intelligence and Fundamental InteractionsのZiming Liuは、解釈が難しいデータセットをKANに入れると仮説を作ることができ、KANの図を見ながら必要に応じて構造を調整できると見ている
CNN・トランスフォーマーとの組み合わせ
- KANのプレプリントはすでに数十本の論文で引用されている
- University of San AndrésのAlexander Bodnerと同僚らは、KANを画像処理で広く使われる CNN と組み合わせ、Convolutional KANsを作った
- 手書き数字と衣料品画像の分類課題では、Convolutional KANsが従来型CNNとほぼ同じ精度を示した
- 数字分類では両ネットワークとも99%の精度
- 衣料品分類では両ネットワークとも90%の精度
- KAN結合モデルは約 40%少ないパラメータ を使用した
- Bodnerは、使用したデータセットは単純だったが、より多くの計算資源を持つ他のチームがネットワークの拡張を始めていると述べた
- 他の研究者らはKANを、大規模言語モデルで広く使われる transformer と組み合わせている
遅い学習と適用可能な範囲
- KANの欠点は、パラメータあたりの学習時間がより長くかかる点である
- 学習が遅い理由の1つは、GPUを活用しにくいためである
- ただしKANは必要なパラメータが少ない
- Ziming Liuは、KANが画像や言語処理向けの巨大なCNNやtransformerを置き換えないとしても、多くの物理問題の小規模な範囲では学習時間が問題にならない可能性があると見ている
- Liuは専門家が事前知識をKANに入れる方法を研究している
- 例えば活性化関数を人が直接選択できる
- 簡単なインターフェースでKANから知識を容易に抽出する方法も検討中である
- 長期的には、KANは高温 超伝導体 の発見や核融合の制御方法の探索に役立つ可能性がある
1件のコメント
Hacker News の意見
小規模なモデリングで KAN を実際に試し、記事にまとめて、通常のニューラルネットワークと比較してみた: https://news.ycombinator.com/item?id=40855028
主な結論は、KAN は通常のニューラルネットワークより 学習がはるかに難しい ということ。パラメータあたりの損失はおおむね同程度に合わせられるが、多くのハイパーパラメータ調整と、KAN の構造上の追加テクニックが必要だった。一方、基本的なニューラルネットワークはずっと簡単に学習でき、より広い条件でうまく動作した
ニューラルネットワークの学習にはすでに膨大な努力が積み重ねられており、Adam のようなオプティマイザもニューラルネットワーク向けに設計・最適化されている面があるため、完全に公平な比較ではないと思う。KAN には可能性があるが万能ではなく、一般に使われるスプラインが下位層ニューロンの出力を分析するよりもはるかに解釈しやすい、という主張にもやや疑問がある
https://cprimozic.net/blog/trying-out-kans/
研究とは結局、どの改善が有用性を変えるのかを見つける過程であり、https://github.com/mintisan/awesome-kan の進展を追いながらさまざまな試みを見るのは面白い。KAN と固定活性化関数のニューラルネットワークの間には、活性化関数チューニングという連続的な研究空間がある
例えば xsigmoid(mx) のような単純にパラメータ化された活性化関数群は、m が大きければ ReLU、m=1.7 なら GeLU、m=1 なら SiLU のように振る舞うことができる。ニューロンごとの単一の活性化関数、複数のパラメータを持つ活性化関数、関数近似器、重みのない完全な KAN までさまざまな地点があり、追加パラメータをどこに配置すれば最も効果が大きいかを統一的な式で計算できる人は大きく評価されそうだ
KAN がより解釈可能にはならないだろうという点には 100% 同意する。単一ニューロンなら理解できるが、こうしたものを合成し始めると、解釈可能性はすぐに失われると思う
KAN は通常の 多層パーセプトロン の中の別の活性化構造としてモデル化でき、柔軟性が高いので驚きではない。いくつかの構造タイプを整理したチャートを作った: https://x.com/thomasahle/status/1796902311765434694
興味深いことに、KAN は PyTorch の通常の行列積で実装すると効率が良くないが、カスタム CUDA カーネルや torch.compile を使うと非常に速くなり得る: https://x.com/thomasahle/status/1798408687981297844
Kolmogorov-Arnold ネットワークに関する以前の議論: https://news.ycombinator.com/item?id=40219205
「KAN の欠点は、パラメータあたりの学習時間が長いことで、その一因は GPU を活用できないことにある。しかし、必要なパラメータは少ない。Liu は、KAN が画像や言語処理向けの巨大な CNN や Transformer を置き換えられないとしても、多くの物理問題の小規模なケースでは学習時間は問題にならないだろうと述べている」
将来的に GPU を活用できるかもしれないという話すらないので、根本的な限界 のように読める
KAN にもこうしたアプローチを費用対効果よく適用できるのか気になる。特に LlaMa-3 のような事前学習済み言語モデルで、解釈可能なモデルを学習させる方法が可能なのか気になる
「その後、KAN全体を直感的な1行の関数として要約でき、場合によってはデータセットを生成した物理関数を完全に再構成できた。」
KANのアイデアは本当に興味深いが、厳密に言えば従来のニューラルネットワークも何らかの閉形式の1行式として書ける。ただし、その1行が非常に長くなるだけだ。同じ決定境界をより少ないニューロンで作れるとしても、重みの代わりにスプラインを使うことで式そのものが本当に単純になるのかはよく分からない
原理的には多層パーセプトロンにも似たことはできるだろうが、多層パーセプトロンの表現はやや分散しているため、疎化と記号化はより難しいかもしれない
これを5歳児に説明するように説明してもらえるだろうか? ニューラルネットワークが損失関数を減らしてより良い結果を得ようとすることは理解しているが、KANは実際には何が違うのか知りたい
一般的なニューラルネットワーク、つまり多層パーセプトロンには、重みの役割をする浮動小数点数でいっぱいの行列がある。重みは y=wx のような線形関数なので、入力 x と出力 y を座標に描くと直線になる。入力を増やしたり減らしたりすると、出力も一定の比率で増えたり減ったりし、突然効果が大きくなったり小さくなったり、逆方向に変わったりはしない
そのためネットワークは複数層の重みを学習し、学習されるのではなく設計に含まれている、いわば魔法の接着剤のような関数でそれらをつなぐ。その結果、入力と出力の間の複雑な関係が複数の層を通過しながら作られる
一方KANでは、重み、つまり線形関数の代わりに、ネットワークが別種の関数を学習するようにする。これらの関数は非線形なので、入力を増やすと出力が加速的に上がったり、向きを変えて減少したりもする。入力と出力の間のはるかに複雑な関係を学習できるが、巨大な行列演算に最適化されたGPUの効率を一部失い、任意の数学計算にはCPUが必要になるかもしれない
つまりKANは、より少ないがより複雑な「ニューロン」を持ち、各ニューロンは複雑な関数で構成される。魅力は、そのニューロン1つを覗き込むと、それが何をしているのかを説明する明確な公式が得られる点にあるように見える。多層パーセプトロンでは、複数層の重みを追う必要があるため、全体の動作を把握するにはより多くの作業が必要になる
ただし、KANから出てくる関数もアイザック・ニュートンのノートに出てきそうな直感的な公式というより、奇妙な定数や互いに打ち消し合う直感的でない項でいっぱいになりそうだ
output = simple_function(sum(many_inputs*many_weights) + extra_weight_for_bias)で、KAN層はoutput = sum(fancy_functions(many_inputs))に近い。間違っているかもしれないし、まだ1日しか経っていないf(x, y)だ。KANの出力はexp(0.3sin(x) + 4cos(y))のような見栄えのよい公式であり、それが解釈可能という意味だ学習された関数の集合が一階述語論理の真理値表を再現できるのか気になる。確認するのは簡単そうだ
いずれにせよ微分可能性の面では良いニュースだ。今はJAXで
if条件を表現するのが厄介で、少なくとも自分にとっては事実上の最適化の壁なのだが、条件が学習可能で、すでにネットワークの中に入っているなら素晴らしいと思う数週間前、London Machine Learning MeetupでZiming Liuを招いた。この興味深い研究について素晴らしい発表をしており、録画はこちらにある: https://youtu.be/FYYZZVV5vlY?si=ReoygVJMgY9oje3p
少し懐疑的だ。80〜90年代にも
f(x*w+b)の代替となるさまざまな人工ニューラルネットワーク構造に関する論文や実験は多かった。しかし今日の実用的な最高性能モデルは、依然として乗算・累算・しきい値ベースだ。結局は速度と単純さのためだ「KANの欠点は、パラメータあたりの訓練時間が長いことで、その一因はGPUを活用できないことにある。」
これは大きなギャップのように見える。根本的な構造上のミスマッチなのか、それとも必要なCUDAカーネルをまだ誰も書いていないだけなのか、知っている人がいるのか気になる