2 ポイント 投稿者 GN⁺ 2024-08-06 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-08-06
Hacker News の意見
  • 小規模なモデリングで KAN を実際に試し、記事にまとめて、通常のニューラルネットワークと比較してみた: https://news.ycombinator.com/item?id=40855028
    主な結論は、KAN は通常のニューラルネットワークより 学習がはるかに難しい ということ。パラメータあたりの損失はおおむね同程度に合わせられるが、多くのハイパーパラメータ調整と、KAN の構造上の追加テクニックが必要だった。一方、基本的なニューラルネットワークはずっと簡単に学習でき、より広い条件でうまく動作した
    ニューラルネットワークの学習にはすでに膨大な努力が積み重ねられており、Adam のようなオプティマイザもニューラルネットワーク向けに設計・最適化されている面があるため、完全に公平な比較ではないと思う。KAN には可能性があるが万能ではなく、一般に使われるスプラインが下位層ニューロンの出力を分析するよりもはるかに解釈しやすい、という主張にもやや疑問がある
    https://cprimozic.net/blog/trying-out-kans/

    • KAN への誇張も批判も、どちらもかなり根拠が弱そうだという点にはおおむね同意する。可能性は大きいが、これまでの結果は 万能薬 ではなく、Transformer のように大きな影響を与えるかもしれないし、小さなニッチにとどまるかもしれない
      研究とは結局、どの改善が有用性を変えるのかを見つける過程であり、https://github.com/mintisan/awesome-kan の進展を追いながらさまざまな試みを見るのは面白い。KAN と固定活性化関数のニューラルネットワークの間には、活性化関数チューニングという連続的な研究空間がある
      例えば xsigmoid(mx) のような単純にパラメータ化された活性化関数群は、m が大きければ ReLU、m=1.7 なら GeLU、m=1 なら SiLU のように振る舞うことができる。ニューロンごとの単一の活性化関数、複数のパラメータを持つ活性化関数、関数近似器、重みのない完全な KAN までさまざまな地点があり、追加パラメータをどこに配置すれば最も効果が大きいかを統一的な式で計算できる人は大きく評価されそうだ
    • オプティマイザだけでなく、ニューラルネットワークの 初期化方式 も、従来の活性化関数を使うニューラルネットワークが安定して学習できるように明示的に調整されてきた。KAN の初期化にそれほど多くの作業が投入されているかは分からない
      KAN がより解釈可能にはならないだろうという点には 100% 同意する。単一ニューロンなら理解できるが、こうしたものを合成し始めると、解釈可能性はすぐに失われると思う
    • 詳細な作業だ。ブログで扱っているコードベースをすぐ見たい人向けのリンクはこちら: https://github.com/Ameobea/kan
    • 他の人が、みんな薄々知っていることを表に出してくれてうれしい。誰もが ニューラルネットワークは解釈不可能だ と言うが、私の経験はまったくそうではなく、むしろ逆だった
  • 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 のリポジトリ自体を見ると、すでに GPU サポート があるように見える: https://github.com/KindXiaoming/pykan/blob/master/tutorials/API_10_device.ipynb
    • これは確かに興味深そうだ: “ReLU-KAN: New Kolmogorov-Arnold Networks that Only Need Matrix Addition, Dot Multiplication, and ReLU” https://arxiv.org/abs/2406.02075#
    • ニューラルネットワークを 決定木 と組み合わせた事例を見たことがあり、そうしたハイブリッドにはいくつかの方式がある。ある方式は、正確で GPU で学習されたネットワークを使って、解釈可能なネットワークの精度を引き上げるというものだ
      KAN にもこうしたアプローチを費用対効果よく適用できるのか気になる。特に LlaMa-3 のような事前学習済み言語モデルで、解釈可能なモデルを学習させる方法が可能なのか気になる
    • GPU は非常に複雑なこともできるのに、何がボトルネックなのか気になる
  • 「その後、KAN全体を直感的な1行の関数として要約でき、場合によってはデータセットを生成した物理関数を完全に再構成できた。」
    KANのアイデアは本当に興味深いが、厳密に言えば従来のニューラルネットワークも何らかの閉形式の1行式として書ける。ただし、その1行が非常に長くなるだけだ。同じ決定境界をより少ないニューロンで作れるとしても、重みの代わりにスプラインを使うことで式そのものが本当に単純になるのかはよく分からない

    • 元のKAN論文では、これに対処するために2つのことをしている。まず疎性を誘導する正則化を使い、その後、疎なスプライン計算グラフを学習したうえで、理想的には圧縮された記号モデルを見つける記号化段階を設けている
      原理的には多層パーセプトロンにも似たことはできるだろうが、多層パーセプトロンの表現はやや分散しているため、疎化と記号化はより難しいかもしれない
  • これを5歳児に説明するように説明してもらえるだろうか? ニューラルネットワークが損失関数を減らしてより良い結果を得ようとすることは理解しているが、KANは実際には何が違うのか知りたい

    • 機械学習の専門家ではなく、この記事で学んでいるところだが、要点は図の脚注で理解した
      一般的なニューラルネットワーク、つまり多層パーセプトロンには、重みの役割をする浮動小数点数でいっぱいの行列がある。重みは y=wx のような線形関数なので、入力 x と出力 y を座標に描くと直線になる。入力を増やしたり減らしたりすると、出力も一定の比率で増えたり減ったりし、突然効果が大きくなったり小さくなったり、逆方向に変わったりはしない
      そのためネットワークは複数層の重みを学習し、学習されるのではなく設計に含まれている、いわば魔法の接着剤のような関数でそれらをつなぐ。その結果、入力と出力の間の複雑な関係が複数の層を通過しながら作られる
      一方KANでは、重み、つまり線形関数の代わりに、ネットワークが別種の関数を学習するようにする。これらの関数は非線形なので、入力を増やすと出力が加速的に上がったり、向きを変えて減少したりもする。入力と出力の間のはるかに複雑な関係を学習できるが、巨大な行列演算に最適化されたGPUの効率を一部失い、任意の数学計算にはCPUが必要になるかもしれない
      つまりKANは、より少ないがより複雑な「ニューロン」を持ち、各ニューロンは複雑な関数で構成される。魅力は、そのニューロン1つを覗き込むと、それが何をしているのかを説明する明確な公式が得られる点にあるように見える。多層パーセプトロンでは、複数層の重みを追う必要があるため、全体の動作を把握するにはより多くの作業が必要になる
      ただし、KANから出てくる関数もアイザック・ニュートンのノートに出てきそうな直感的な公式というより、奇妙な定数や互いに打ち消し合う直感的でない項でいっぱいになりそうだ
    • 5歳児向けの説明かどうかは分からないが、非常に大ざっぱに単純化すると、パーセプトロン層は 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)) のような見栄えのよい公式であり、それが解釈可能という意味だ
    • KANはある意味でネットワークのネットワークのようで、各エッジがそれぞれ小さなネットワークを表しているような感じがする。自分もまだ記事を消化している途中なので間違っているかもしれないが、外から見た印象はそうだ
  • 学習された関数の集合が一階述語論理の真理値表を再現できるのか気になる。確認するのは簡単そうだ
    いずれにせよ微分可能性の面では良いニュースだ。今はJAXで if 条件を表現するのが厄介で、少なくとも自分にとっては事実上の最適化の壁なのだが、条件が学習可能で、すでにネットワークの中に入っているなら素晴らしいと思う

    • 基本的な論理関数を実装する多層パーセプトロンを作るのは簡単だが、XORには少なくとも1つの隠れ層が必要だ
  • 数週間前、London Machine Learning MeetupでZiming Liuを招いた。この興味深い研究について素晴らしい発表をしており、録画はこちらにある: https://youtu.be/FYYZZVV5vlY?si=ReoygVJMgY9oje3p

  • 少し懐疑的だ。80〜90年代にも f(x*w+b) の代替となるさまざまな人工ニューラルネットワーク構造に関する論文や実験は多かった。しかし今日の実用的な最高性能モデルは、依然として乗算・累算・しきい値ベースだ。結局は速度と単純さのためだ

  • 「KANの欠点は、パラメータあたりの訓練時間が長いことで、その一因はGPUを活用できないことにある。」
    これは大きなギャップのように見える。根本的な構造上のミスマッチなのか、それとも必要なCUDAカーネルをまだ誰も書いていないだけなのか、知っている人がいるのか気になる