タイトルにあるとおり、生成AIについての入門書
サブタイトルが「〈流れ〉が画像・音声・動画をつくる」であり、「流れ」がキーワードとなっている。
数式を用いず言葉で説明、というのが売り文句になっている本で、実際、数式は全く出てこない。いろいろと比喩を用いて説明しているところが多い(以下の要約では、比喩の部分は面倒なので省略した)。
自分は、数式を出されても理解できないので、それは別にかまわないし、まあ、巧みな比喩でわかったような気分にはさせてくれる。
今まで、Newtonとか日経サイエンスとか、なんかの本とかを通じて、ディープラーニングやLLM、Transformerについての解説は読んだことがある(どれくらい理解しているは別として)のに対して、言語以外の生成AIや拡散モデルについては、簡単な解説記事すら読んだことがなかったので、読んでみようかな、と。
最近、意識とか神経科学とかの本を読んでいるので、そことも関わってくるだろうなという期待はあるけれど、今のところ、自分でうまく結びつけれてはいない。
生成AIの歴史がわかったのだけでも、結構個人的には大きかった。
生成AIというと、自分の中ではGANのイメージが強かったんだけれど、そういえばGANっていつの間にか聞かなくなったけど、どうなったんだ? とかあったので。
1982年 ホップフィールドネットワーク(エネルギーベースモデル)
1995年 ヘルムホルツマシン(潜在変数モデル)
2013年 変分自己符号化器(潜在変数モデル)
2014年 敵対的生成ネットワーク(GAN)
2015年 正規化フロー(流れを使った生成モデル)
2018年 連続正規化フロー(流れを使った生成モデル)
2015年 拡散モデル
2019年 スコアモデル(拡散モデルと同じもの)
拡散モデルというのは、エネルギーベースモデルでもあり潜在変数モデルでもあり流れを使った生成モデルでもある。
GANは、本書でもコラムで紹介されるにとどまり、この歴史の中では傍流なのだろう(デビュー当初は脚光を浴びたけれど、結局本流にはなれなかったのかな、と*1 )。
1 生成AIを作る
- 生成タスクが、分類や認識タスクと比較して難しい理由2つ
(1)出力データが高次元であるため
(2)正解の出力が多様であるため
高次元とは
→温度や身長は1つの数値であらわせるので1次元、地球上の位置は緯度と経度の2つなので2次元
→画像データは画素数×RGBの3色なので、ハイビジョン画像は622万次元
→ハイビジョンで30fps、60秒の動画は112億次元
生成とは、高次元空間の中からデータを探し出すという課題
それでもいくつかの条件を満たすとデータは生成できる
- 多様体仮説
高次元のデータはより低次元の多様体に対応する
多様体とデータ空間を変換できれば生成できる
- 対称性
- 構成性
対称性や構成性によって学習する量を減らせる
2 生成AIの歴史
- イジングモデル
1920年 物理学者のレンツとその学生イジングが考案
粒子についてのモデル
エネルギーの低いところに粒子が移動して自発的に安定する、というもの
相転移や磁性体について説明
- ホップフィールドネットワーク
この物理学のモデルをニューラルネットワークにおいて記憶を扱うものとして応用
もとは、中野薫(1971)や甘利俊一(1972)による試みがあったが、
1982年 ホップフィールドが改めて提案
ニューロンもエネルギーの低いところで安定する
粒子間の相互作用について
→イジングモデルでは外から定義されるのに対して、ホップフィールドネットワークはパラメータとして学習によって決まる
観測したデータに対応する状態のエネルギーを低く、そうでない場合のエネルギーが高くなるようにパラメータを設定する(学習させる)→学習時に見たものを思い出す
汎化も起きる
- エネルギーベースモデル
エネルギーが低い状態に自発的に更新されていく
ホップフィールドネットワーク以外に、ボルツマンマシンやビリーフネットワークなどがある
- ボルツマン分布
エネルギーと確率を相互に変換できる分布
エネルギーが低くなると確率が上がる
ニューラルネットワークにおける出力を確率分布に変換する関数としても用いられる
- ランジュバン・モンテカルロ法
ボルツマン分布に従ってデータをサンプリングする方法
エネルギーベースモデルは、生成も学習もとても遅いのが課題
- 分配関数の問題
確率分布は、それぞれの確率の和が1になるような分布
サイコロの出目であれば、1/6+1/6+1/6+1/6+1/6+1/6(=1)、ということ
適当な確率を割り当てて合計が1にならない場合、それぞれの確率を合計値で割る必要がある
この合計値=分配関数
→高次元だとこれを求めるのがほとんど不可能
→学習が遅い原因
- 潜在変数モデル
観測変数(生成したいデータ)を潜在変数を用いて生成する(多様体仮説)
潜在変数というのは、データよりも次元の少ないもの
例えば、手書きの3の画像が観測変数だとすると、「「3」という数字、崩れている、少し右に傾いている」などの情報が潜在変数となる
潜在変数はデータには含まれないので、これをどうするか
- ヘルムホルツマシン
1995年 ダヤンとヒントン
データから潜在変数をつくる認識モデルと潜在変数からデータを生成する生成モデルのふたつの組み合わせ
↓
- 変分自己符号化器(VAE)
2013年 キンフマとウェリング
生成したいデータから潜在変数を推定させたあと、そこにノイズを加えて、そこからもとに戻す
認識モデルの学習が困難
- GAN
2014年 グッドフェローら
初めて高精度の画像を生成して注目を浴びたが、学習が不安定という難点があった
- 自己回帰モデル
分配関数の計算を回避する方法の一つ
LLMは自己回帰モデル
逐次計算を行っていくため、処理が遅い
3 流れをつかった生成
流れとは
連続性=経過時間を短くすると移動元に近づくこと(ワープではないということ)
連続の式:ある位置の変化量とその周囲の流入量・流出量は常に釣り合う(内部における物質の総量は一定)
確率分布を流れを使って変化させる
分配関数が不要
(全体の情報が必要ない・連続の式が成り立っているなら全体は変わらないから)
高次元空間は網羅的に探索できないので全体は分からない
- 正規化フローと連続正規化フロー
前者は、2015年 ディンら
後者は、2018年 チェンら
モデル分布からの流れをたどって尤度を学習
事前分布から流れに沿って生成していくのは、階層構造の潜在変数モデル、ともいえる。
流れを1つ遡るのは、一つ前の階層の潜在変数を求めることと同じ
流れは速度ベクトル場をあらわすニューラルネットワークによって表わされる
連続量を離散化して計算
問題点2つ
(1)変換に制約
(2)非常に大きなメモリが必要
4 拡散モデルとフローマッチング
「拡散モデル」と「フローマッチング」という2つの手法について
拡散というのは、インクを水に垂らすとそれが次第に水全体に広がっていく過程
これを逆転させると、生成になるよね、という発想
拡散モデル
- 歴史
拡散モデル
→2015年 ソールディックスタインらが非平衡力学から
→GANなどが成功していた時期で、拡散モデルはあまり注目されず
スコアべースモデル
→2019年 ソングら
2020年 ホーら
→拡散モデルとスコアベースモデルは実は同じ問題を解いていることを示し、改めて注目を浴びることに
2021年頃
拡散モデルと言語モデルを組み合わせることで、言語による指示で画像生成ができるDALL-Eなどが登場
データにノイズを加えて壊していく(拡散)
それを逆転させて生成する
最終的に正規分布になるようなノイズを加えていく
拡散=インクが濃い(確率の高い)位置から薄い(確率の低い)位置へと移動すること
この逆向きの流れ=スコア
拡散と逆向きに流れるとは、スコアにしたがって変化すること
エネルギーベースモデルのエネルギーを小さくする流れとスコアは一致
ただし、前者が時間的に変化しないエネルギーなのに対して、スコアは時刻とともにエネルギーが変わる
高次元空間でデータから離れるとスコアは限りなく0に近い(データから離れた場所だとデータを発見しにくい)
しかし、スコアは時間によって変化する。データが十分崩れると空間全体に流れが生じる
- デノイジングスコアマッチング
拡散モデルの学習方法
デノイジング=ノイズ除去
流れ全体のシミュレーションが不要に(シミュレーション・フリー)
(いちいちシミュレーションするのは非常に大変)
流れを求める問題を、時刻・位置ごとに進む方向と速度を予測する問題に変換
→大規模なモデルで安定的な学習が可能に
拡散モデルの生成過程が、データの生成過程と似た流れになる。
正規分布に従うノイズを加えてデータを破壊する際、最初に破壊されるのは詳細な部分(テクスチャとか)、最後まで残るのは全体(輪郭とか)。
これを逆転させると、全体から詳細へ生成される、という過程になる。
全体から詳細へ=低周波成分から高周波成分へ
- ほかのモデルとの関係
拡散モデルは、潜在変数モデルの一種であり、変分自己符号化器
拡散過程は実は認識モデル
ノイズを加えて区別がつかなくなっていく過程は、分岐をたどっているようなもの
(個体の区別がつかなくなる→犬種の区別がつかなくなる→犬かどうかわからなくなる……)
拡散モデルはエネルギーベースモデル
拡散モデルは流れを使った生成モデルで、連続化フローとの違いは学習手法
フローマッチング
基本単位の流れを複数束ねる方法
基本単位の流れとして最適輸送を使った場合をここでは説明
(最適輸送を使わない場合もある)
- 最適輸送
1781年 仏の数学者モンジュ提唱
ソ連の数学者・経済学者カントロヴィチが発展させ、ノーベル経済学賞
最適輸送を適用すると流れが直線になる
サンプリングのステップを大幅に削減できる
最適輸送を直接求めるのは、計算量が膨大になる
→フローマッチングは、計算可能な大きさに問題を分解する
フローマッチングもシミュレーション・フリー
このあと、この章では両方に共通する話として、条件付き生成や潜在拡散モデルの話が出てくるが、力尽きたので省略
潜在変数モデルにでてくる潜在変数と、潜在拡散モデルに出てくる潜在変数は、言葉は同じだけど別物だから注意とか書かれて面倒になってしまった……
5 流れをつかった技術の今後
- 汎化をめぐる謎の解明
汎化には、生成対象の汎化と条件の汎化の2つがある。
ニューラルネットワークは汎化が優れているが、加えて、拡散モデルはより強力
どういうメカニズムなのかまだよく分かっていない。
ハルシネーション対策に、汎化の制御ができるようになるといい
- 注意機構と流れ
トランスフォーマーとか
注意機構は一定の制約のもとエネルギーベースモデルとして表現可能
- 流れによる数値最適化
最適化問題にも応用できる
- 言語のような離散データの生成
言語において、流れをつかった生成は、いまだ自己回帰モデルよりも性能が低い
流れを使った生成で言語が扱えるようになると、多様な生成と並列処理が可能になる
- 脳内の計算機構との接点
生成モデルはもともと、連想記憶のような仕組みを作ろう、というところから始まっていて、
脳内にも、ホップフィールドネットワークに似た現象がみられる
流れを用いた生成は、脳内の計算機構の新たな候補になるかもしれない
→流れを用いた生成は、局所的な情報だけで更新が可能なのが利点(脳も分散して局所的な情報処理をする)
付録 機械学習のキーワード
- モデル分布とデータ分布
モデル分布:モデルによって生成される確率分布。パラメータを変えることで自由に変えられる
データ分布:学習データによって与えられる確率分布。変えられない。
この2つの分布の距離(KLダイバージェンスと呼ばれる)を近づけるのが生成モデルの学習の目標
学習とは
=モデルのもつパラメータの調整
*1:「拡散モデルでググると、ライバルとして、GANや変分自己符号化器があげられ、比較されている記事がいくつか見つかる
