👻

難しいことはいいから、金子勇さんのED法って何がすごいの?

2024/04/22に公開

結論

結局、何がすごいの?

  • ErrorDiffusion(誤差拡散法)
    • 加算と減算だけで誤差を修正できる
      • 微分、つまり勾配などの概念がない→計算、アルゴリズムが非常に単純
    • 値の伝播方法が単方向
      • BP法では
        • 推論の伝播:入力→出力
        • 誤差の伝播:出力→入力
      • ED法
        • 推論の伝播:入力→出力
        • 誤差の伝播:入力→出力
    • ED法はなぜ入力から誤差を伝播できるの?
      • BP法に比べて、そもそもニューロンの仕組みや伝播方法を大幅に変更し、「このニューロンを操作したら誤差が絶対に増える/減る」という仕組みを作ることで、入力から誤差を操作することができる
        • ED法は興奮性/抑制性シナプスが取り入れられている

この記事について

AIに詳しくなくてもこんな違いがあるんだ、とか思ってもらえると良いと思います。ED法やBP法にはネットに詳しい解説記事があるので、ここでは解説しません。

BP法とED法のアルゴリズムの違い(簡単に)

BP法


https://www.yukisako.xyz/entry/backpropagation

  • 偏微分などを使って出力から入力にかけて逆向きに誤差を伝播させていく
    • 微分(正確には計算グラフを使った四則演算)を用いて計算

(あ、数式使っちゃった…(数式を解説して難しくなっているわけではないからセーフ!))

ED法

https://web.archive.org/web/19991124023203/http://village.infoweb.ne.jp:80/~fwhz9346/ed.htm

  • 微分などを使わずに入力から出力にかけて誤差を伝播させていく
    • 単純に単方向に値を加算、減算していくだけ!

イラストから見てもED法がいかに直感的で簡単か分かると思います。

まとめ

ErrorDiffusion(誤差拡散法)

  • 特徴
    • 単方向に誤差が伝播
  • メリット
    • 計算量削減
      • 微分の概念や計算は出てこない
      • 加算と減算
  • デメリット
    • 辻褄が合わない部分あり(でも動くからヨシ!)
    • 既存のAIモデルへの移植のハードル
    • 情報が少ない

BackPropagation (誤差逆伝播法)

  • 特徴
    • 逆向きに誤差が伝播
  • メリット
    • 現在の主流アルゴリズム
      • 偏微分を局所的に簡単に計算できる
      • 計算グラフで表せる構造なら簡単に構築できる(拡張性がある)
  • デメリット
    • そもそも人間やその他生命の脳が誤差逆伝播、つまり後ろから誤差が伝播しているのか怪しい
      • 生命の脳にはもっと強力で単純な仕組みがありそう(金子勇さんと同意見)
    • 計算量
      • 偏微分を計算グラフで四則演算に変換しているため比較的軽量であるが、ED法の加算と減算のみに比べると計算量が多い

私の考える本質

結局、脳が学習する仕組みは誤差逆伝播に比べて、もっと単純で強力だと思っています。私はED法を知る前からED法の概念を思いついていましたが、ED法は実際の神経系から再現されていますし、わざわざ生命が興奮性/抑制性という対となる仕組みを作ったのには理由があると思います。それが今回のED法の加算と減算だけで出力の誤差を操作することに繋がったり。他にも、SNNのような時系列の概念、スパイクの概念が取り入れることができると、かなり本物の脳に近づくと思います。

ED法の応用の考え

  • ED法を応用すればかなり面白いことになりそう
    • SNN(スパイキングニューラルネットワーク)のような時系列の概念の追加
    • 再帰構造, メモリ構造などへの融合
    • 専用ハードの開発
    • BitNetやLLMなど既存AI技術への応用
    • ED法専用のフレームワーク、ライブラリなど

参考

https://web.archive.org/web/19991124023203/http://village.infoweb.ne.jp:80/~fwhz9346/ed.htm
https://qiita.com/kanekanekaneko/items/901ee2837401750dfdad
https://qiita.com/pocokhc/items/f7ab56051bb936740b8f

Discussion