xiangze's sparse blog

機械学習、ベイズ統計、コンピュータビジョンと関連する数学について

去年書いたブログのまとめ

去年の後半に時間ができてしまったためお絵描きAIで遊び、そのアルゴリズムを学び、ブログ、アドベントカレンダーを書いてしまいました。

拡散モデルについて思ったことが微妙にバズったので調子に乗っていくつか書きましたが宿題を形成してしまったものがいくつもあるのでまとめたいです。

拡散モデルについて思ったこと、統計モデリング等との関係 - xiangze's sparse blog

進化生物学、進化-発生(Evo-Devo)対応やcanalisationとの類似点が意味をなすかは正直微妙です。生成過程でのサンプリング回数を減らす研究は盛んです。RBMの
Constrastive Divergenceでは1回のサンプリングで十分という主張がありました(
コンピュータビジョン最先端ガイド6 第4章ディープラーニングの予習 - xiangze's sparse blog)。DPM++2M samplingが20回と言って
しかし高次元の尾根の分布が「深層学習の原理に迫る」で説明されている「平坦説」でいうところのloss関数が平坦な領域なのかというという問いは建てられると思います。それが拡散モデルの生成過程だけでなく識別モデルの学習過程にも言えるかという問いもあります。

VISUALIZING THE LOSS LANDSCAPE OF NEURAL NETS
では鞍点近傍のhessiannの固有値を同一データセットのモデルに対して比較したという内容でした。https://github.com/tomgoldstein/loss-landscape MPIを使ってhessiannを計算しています。
それとは別にloss landscapeの可視化サイトが充実しています(https://losslandscape.com/すごいので一見の価値あり)。今の所ディープラーニングの汎化、double descentに関する2017年以降の論文はあまり見つけられていません。

NLPや画像認識などの分野の複数のタスクに対して使用できる汎用的なモデルが基盤モデルと呼ばれます。CLIPなどstable diffusionに組み込まれているものもあります。基盤モデルが巨大化してデータ整備と学習に相応の資本が必要になる一方で拡散モデルでは生成プロセスが一意に決まらず、手法によって出力画像の質に違いが出るというのが興味深く、これがdiffusersにSGHMC(Stochastic Gradient Hamiltonian Monte Carlo)を入れる話 - xiangze's sparse blogを書いたモチベーションにつながります。

【メタサーベイ】基盤モデル / Foundation Models

情報幾何(の観点から見た拡散モデル)の勉強は進んでないですが、拡散モデルの勉強をしてから
数理科学 2020年11月号 No.689 情報幾何学の探究 書籍・雑誌 サイエンス社 WEBSHOP
を読むと数年未来の話をしているように思いました。

専用ハードウェア、アクセラレーターの視点からはdiffersにはすでにonnxを読み込んで生成を実行するコードがあり、tokenizerやscheduler以外はonnx runtimeです。それを用いた場合のパフォーマンスを見積もるのが簡単にできそうです。

ONNXを使用したdiffusersのpipeline

onnxチューニングできるらしいです ONNXモデルのチューニングテクニック (基礎編) | AI tech studio

異常検知、画像認識等への応用に関しては英語論文をまだほとんど読めていません。
拡散モデルによる拡散を使用しない異常検知
タイトルがわかりづらいけど異常画像はノイズを含む画像だとしてそれに拡散過程を適応して再構成するという方法です。

宿題

  • loss landscapeの平衡点、鞍点から離れた場所の生成過程とその実効次元を可視化してみる。平坦説との関連を論じる
  • 宝くじ説(ネットワークの一部のみが発見されて使用されるところが低次元に制約される?)と平坦説との関連を論じる
  • 異常検知の研究調査
  • 正規化流、自己回帰モデルとの関連(サーベイに書かれている)を読む
  • diffusersの普通版 or onnx版のコードの違いを見る、GPUでのプロファイルを見てみる

- Profiling PyTorch with PyProf — NVIDIA PyProf 3.10.0 documentation
- NVIDIA Visual Profiler 入門 - Qiita

機械学習の生成モデルと統計モデリングの類似点と相違点 - xiangze's sparse blog

思弁的というかポエムっぽいです。
LDAによるトピックモデルはトピックを通じた理解ができるという点で統計モデルと言えるでしょうが、未知の新製品の推薦に使う場合は予測の範疇に入ると思われます。
実際のデータで情報量基準や因果推論について論じてみたいというのが東方プロジェクト人気投票の統計解析 記述統計編 - xiangze's sparse blog東方人気投票解析のモチベーションに繋がります。

diffusersにSGHMC(Stochastic Gradient Hamiltonian Monte Carlo)を入れる話 - xiangze's sparse blog

stable diffusionなどのアルゴリズムが実装されたdiffuserにSGHMCの実装を試みました。ソースコードの構成や原始的ながら開発、検証方法、型ヒントのありがたさを知ることができました。stanなどの統計モデル用プログラミング言語で画像処理を実装し、パラメーターを推定によって得るという使い方は考えたことがありましたが。ここでは逆にサンプラーを独自に実装し、パラメーターは既存のものを使っています。
質量Mは1に固定していましたが dt,M,の間に関係BM^{−1} =1/dtが成り立つことからdt,damping parameter γの他にMをチューンするパラメーターにしています。理想的にはdt->0の時に分布が収束するはずですが現実的には有限の値です。論文に書かれているアルゴリズムでは一定間隔で運動量rを初期化していますが、この頻度も調節可能なパラメーターです。

SGHMCのアルゴリズム
overdampedで生成されたいぬ

宿題

  • そしてOSSへ…

東方プロジェクト人気投票の統計解析 記述統計編 - xiangze's sparse blog

自分の興味があるもの"ドメイン知識"が使えかつベイズモデリングの題材となりそうなくらい複雑な構造を持ったデータセットとして東方人気投票のデータを使ってみました。東方Wikiも含めて驚くほど綺麗なデータでした。ただグラフ可視化でわかることの多くはすでにして指摘されていることも多く、それを超えた範囲に関しては仮説検定やベイズ推論が必要そうです。勝敗のあるデータの方が分析しがいがあるので羨ましくはあります。
東方プロジェクト人気投票の統計解析 中休み - xiangze's sparse blogにもグラフを追加しました。

宿題

  • ベイズモデル実行と推定事後分布の比較
  • 音楽、キャラ相互影響の因果推論
  • 情報量基準によるモデル選択

今年の抱負?

  • 仕事に力を入れたい。
  • ブログはほどほどに

ギャラリー