# 自己回帰モデル
> [!note] 別ページとの違い: 本ページは深層生成モデルとしての自己回帰モデル(同時確率の条件付き確率への分解、Causal CNN、WaveNetなど)を扱う。[[自己回帰空白埋め]]は別の文脈・別ソースの概念であり、本ページとは目的が異なる。
## 定義
自己回帰モデル(autoregressive model)は、自然科学や経済学など昔から広く使われている確率モデルであり、自分が過去に出力した結果を条件とした条件付き確率モデルを使ってデータを次々と出力する生成モデルである。[[VAE(変分オートエンコーダ)|VAE]]や[[GAN(敵対的生成ネットワーク)|GAN]]と異なり、潜在変数を持たずデータ全体を表す表現を持たないが、生成能力の点で優れる。以前の自己回帰モデルは線形モデルが主だったが、ニューラルネットワークの利用により非線形な入出力関係を扱えるようになり、言語・画像・音声など高次元データの生成にも強力に適用できるようになった。自然言語処理の GPT-3、音声合成の WaveNet などが代表例である。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4)
## 同時確率の条件付き確率への厳密な分解
時系列データ $x_1,\dots,x_T$ の同時生成確率 $p(x_1,\dots,x_T)$ を直接モデル化するのは高次元すぎて難しい。自己回帰モデルはこれを条件付き確率の積へ分解する。
$p(x_1,x_2,\dots,x_d)=\prod_{i=1}^d p(x_i\mid x_{<i})$
この分解は近似ではなく厳密に等しい。条件付けの範囲を過去すべて $x_{<i}$ ではなく直近 $N$ 個 $(x_{i-N+1},\dots,x_{i-1})$ に打ち切った場合は、表現できる分布の範囲が限定される近似になる。画像のように次元間の生成順序が自明でないデータでも、左上から右下へのスキャンなど適当な走査順を決めれば自己回帰モデルで生成でき、実際の生成過程の順序とは無関係に、単に学習が難しい同時確率分布を簡単な条件付き分布の積へ分解しているとみなせる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4)
## 最も強力な生成モデルとしての位置づけと2つの問題
自己回帰モデルは、テストデータの対数尤度で見た場合に、生成モデルの中でデータを最もうまくモデル化できる手法の一つである(音声・画像生成でVAEや正規化フローより高い対数尤度を達成する。ただし[[拡散モデル]]がさらに高い性能を示す)。一方で2つの大きな問題がある。(1) VAE・GANのような潜在因子(zを変えると生成データが滑らかに変化するような表現)を持たないため、生成モデルからデータ全体の意味を読み取ることができない。(2) 各次元を1つずつ逐次的に生成するため、次元数が数万を超える高次元データ(画像・音声)では生成ステップ数が非常に大きくなり、並列計算に最適化された現在の計算機では時間がかかる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4)
## 学習の並列化: Causal CNN
「生成が遅い」問題を学習時に限って解決する手法が**Causal CNN(マスク付きCNN)**である。通常の畳み込みと異なり、各位置の計算時に自分自身や自分より先(未来)の位置の情報にアクセスしないようカーネルをマスクする。これにより学習時はすべての位置のデータをまとめて並列計算できる(各位置ごとに過去の生成データで条件付けして現在の値を予測する問題を並列に解ける)。Pixel CNNはCausal CNNを使った画像の自己回帰モデルで最尤推定により学習し、GANの敵対的学習より安定している。Transformerも同様に、前の位置にアクセスしないマスク付きの重みを使うことで逐次処理を並列に評価できる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4)
## 遠距離依存: Dilated Convolution と WaveNet
音声のように数千ステップ前の情報に依存する生成には、[[膨張畳み込み|Dilated Convolution]](拡張畳み込み)が使われる。パラメータdに対し、k層めがdᵏ個隣に接続するネットワーク構造を持ち(たとえばd=2なら1層めは1つ隣、2層めは2つ隣、3層めは4つ隣)、10層程度のネットワークで数万離れた距離の情報を集約できる。WaveNetはDilated Convolutionを組み込んだ1次元CNNの自己回帰生成モデルで、音声データを直接生成し高品質な音声合成を実現する。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4)
## 推論の並列化
自己回帰モデルは厳密には推論(生成)時に並列化できないが、逐次計算を非線形方程式とみなし適当な初期値から全変数を並列に解くことで高速化できる。この手法により、逐次的に生成する場合に比べ数十倍高速に生成できることが報告されている(Y. Song et al.「Nonlinear Equation Solving: A Faster Alternative to Feedforward Computation」ICML, 2021)。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4)
## 横断的知見
- **[[膨張畳み込み]]は独立した2つの文脈(コンピュータビジョンの密予測、自己回帰モデルの遠距離依存)で同じ数学的定義(dilation factor $l$ の畳み込み $(F*_lk)(p)=\sum_{s+lt=p}F(s)k(t)$)が使われており、目的だけが異なる**: [[膨張畳み込み]]が既に集約した知見(Yu & Koltun, CS231n)は、セマンティックセグメンテーションのような密予測で解像度を保ったまま受容野を広げる目的でDilated Convolutionを使う。本章のWaveNetの文脈では、同じ演算が「未来の情報にアクセスしない」という自己回帰モデルの制約(Causal CNNのマスク)と組み合わさり、過去方向にのみ遠距離の依存を集約する目的で使われる。両者を突き合わせると、Dilated Convolutionという演算そのものは「受容野をパラメータ数を増やさず指数的に広げる」という汎用的な性質を持ち、密予測では双方向に、自己回帰生成では過去方向にのみ、という応用先に応じた制約が後から重ねられていることがわかる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.4, [[膨張畳み込み]]の定義節)
## 未解決の問い
- 自己回帰モデルに潜在変数モデルを組み合わせる工夫(本章は「必要がある」とのみ述べる)は、具体的にどのようなアーキテクチャで実現されるか。[[変分損失性オートエンコーダ]](VLAE)はこの組み合わせの一例だが、本章はこの接続に明示的に触れていない。
- 推論の並列化(非線形方程式化)は「数十倍高速」と報告されるが、生成品質(尤度・忠実度)への影響は本章では扱われない。
- テストデータの対数尤度で自己回帰モデルが正規化フローやVAEより優れるとされるが、[[拡散モデル]]がさらに優れるとする根拠(注23)は脚注止まりで、両者の定量的な比較は本章の範囲外。
## 関連
- source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]]
- concept: [[VAE(変分オートエンコーダ)]] / [[GAN(敵対的生成ネットワーク)]] / [[正規化フロー]](同時確率の扱いという観点での対比) / [[膨張畳み込み]](WaveNetが使う遠距離依存の手法) / [[Transformer]](マスク付き自己注意による並列評価) / [[音声認識]]
## 出典
- 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第3章, §3.4.