2023.11.14; 2023.11.21に GAN を追加した。2023.12.03に 自己回帰モデル、正規化フロー、拡散モデルを追加した。

『ディープラーニングを支える技術 2』岡野原大輔著、
第3章 深層生成モデル
3.1 生成モデルとは何か
に引き続いて、非線形生成モデルに入るのであるが、その最初で躓いたので、別途勉強した。
主に、『VAEをはじめからていねいに』石塚 崚斗 というネットの解説に依存している。
以下、<<<石塚 崚斗 ・・・>>>の部分はそのままのコピーである。
また図については元のサイトを参照の事。
(注)は私が追加したものである。

3.2 VAE(ニューラルネットワークを使った潜在変数モデル):variational auto-encoder
    潜在変数から観測変数への変換関係が非線形となる、という事であった。

ここで、見つけた別の資料、『オートエンコーダ(自己符号化器)とは?』であるが、この資料によると、要するに主成分分析の非線形版らしい。

<<<<<< 上記からのコピーである。これは MATLAB の宣伝の為のページであるので著者は明示されていない。

● オートエンコーダ(自己符号化器, autoencoder)とは、ニューラルネットワークを利用した教師なし機械学習の手法の一つ。次元削減や特徴抽出を目的に登場したが、近年では生成モデルとしても用いられている。データ(ベクトル)を(ニューラルネットのような)非線形変換器に入力して、次元を少なくした出力を得る。この出力を別の非線形変換器に入れて、今度は次元数を最初に戻して出力を得る。

    オートエンコーダの学習は、基本的には、入力データと一致するデータを出力することを目的とする教師なし学習であるが、変形版として教師あり学習とすることもできる。オートエンコーダのネットワークは、入力したデータの次元数をいったん下げ、再び戻して出力するという構造になっているため、入力から出力への単なるコピーは不可能で、学習を通して、データの中から復元のために必要となる重要な情報だけを抽出し、それらから効率的に(且つ近似的に)元のデータを生成するネットワークが形成される。こうしてオートエンコーダの前半部分(エンコーダ)は次元削減、特徴抽出の機能を獲得し、後半部分(デコーダ)は低次元の情報をソースとするデータ生成機能を獲得する。学習後、この2つのネットワークは別々に使うことができる。すなわち、エンコーダは特徴抽出器、デコーダは生成器として独立に用いる。

    主な種類は下記で、いずれも MATLAB で用意されている。
積層オートエンコーダ
畳み込みオートエンコーダ
変分オートエンコーダ
条件付き変分オートエンコーダ
(注)最後の2つが VAE である。
>>>>>>

(注)ここで、オートエンコーダが線形の場合(主成分分析)を復習しておく。
入力成分 X の次元数が m、そのサンプル数が n である。
X を m行m列の行列 A で線形変換して、独立な潜在変数を求める
  Z=AX
である。
行列 D は、X を n サンプル並べて作った n行m列の実行列とする。
特異値分解して、
  D=U S V'
と出来る。
ここで S は対角行列で次元は min(n,m)、U は n行n列、V は m行m列、V' は V の転置行列。
S の対角成分を特異値と言う。
V' x = z とすれば、変換された z は各サンプル間で独立となる。ということで(A=V')。
この V' がエンコーダーであるが、出口を特異値の大きな成分 k個に絞り込んで、k行m列とし、
S も絞り込んで k行k列の対角行列として、U は n行k列 となる。この縮約された U がデコーダーである。
逆に言えば、k行m列の任意の変換行列と n行k列の任意の変換行列を用意しておいて、
入口と出口が出来るだけ一致するように、変換行列を決めれば、それがオートエンコーダである。
削減された k次元の中で、元のデータ X が近似的にプロットされる。
その k次元ベクトル空間にプロットされた X がいくつかのクラスター(クラス)に分かれている、という事になる。

(注)非線形の例として、2次元の学習データから1次元の潜在変数を取り出した例を図示しておく。この実例は潜在変数からノイズを加えて学習データを作り出しているのではあるが。。。「生成」というのは、ここでは学習データ点15個以外の任意の点を生成できるという意味である。また、当然ながら、Z を1:1対応で別の変数 Z' に変えても同じ事であるから、潜在変数の選び方は一意的ではない。

● variational(変分法)とは何か?

    (注)物理や化学の分野では多体問題が解析的に解けない(答えが数式で厳密に記述できない)ために、変分法が煩雑に使われる。良く知られた例では、分子内電子の波動関数を個々の電子の波動関数の積で近似して、パウリの原理を満たすようにそれらを線形結合する。この場合、エネルギーを極小にするようにパラメータが調整されるが、どんなに調整しても、本当のエネルギー値は達成されない。しかし、電子状態に依存する分子の性質は殆どがその近似された波動関数でうまく説明できる。
       また、統計力学では、しばしば、状態分布関数を個別粒子の分布関数の積で近似する。個別分布関数を決定するポテンシャル場を平均場と呼ぶ。パラメータは自由エネルギーを極小化するように調整される。これで相転移等も含めて多くの物性が多少不正確ではあっても、説明できる。これらパラメータ変化(つまり関数の変化)による目的関数(上記のエネルギーや自由エネルギー)の変化を変分と呼ぶ。

    統計解析では variational というのは、変分ベイズ法の事らしい。これについては、下記を参照した。
『VAEをはじめからていねいに』石塚 崚斗
    最初の処に簡潔な説明があって、素人にとっては有難いと思った。
<<<
石塚 崚斗
    統計解析の目的は,ある現象を確率分布を用いて記述することである。分布の形状を決定するパラメータを推定することになる。パラメータの推定方法は,
・パラメータを1つの値に決め切ってしまう「点推定」と,
・パラメータ自体にも既存の分布を仮定する「ベイズ推定」に分けられる。
      さらに,点推定は
・尤度関数を最大にする「最尤推定」(argmax_θ{p(X|θ)})と
・事後確率を最大にする「最大事後確率推定」(argmax_θ{p(θ|X)}=argmax_θ{p(X|θ)p(θ)}) に分けられる。(MAP: maximum a posteriori)。(argmax_θ(・・・) は ・・・を最大化するθという意味の記号;
  ()内の | の右側は変数ではなくて、条件;
    p() や q() は () 内の確率変数に対する確率分布を表す。例えば p(X) と p(Y) は別の確率分布関数である。)
(注)p(θ|X)p(X)=p(θ,X)=p(X,θ)=p(X|θ)p(θ):ベイズの定理
   
以前に、丹後俊郎の教科書で勉強したときは、最大事後確率推定の事をベイズ推定としていたことになる。

・「ベイズ推定」では更に詳しく、事後分布 p(θ|X) そのものを求める。勿論事前分布 p(θ) を想定してである。

>>>
宮本崇氏の解説「変分推論の理論」を参照した。

以下のような事らしい。

    変分学習の目的は、サンプルデータ X からそれを生み出した確率分布のパラメータ θ の確率分布を求めることである。つまり、p(θ|X) である。これは、ベイズの定理から、

        p(θ|X) = p(θ,X)/p(X)=p(θ,X)/∫p(θ,X)dθ

で表されるが、分母の積分(周辺分布の計算)が困難であるとする。
(注:積分を効率的に行う方法として「モンテカルロ法」があり、MCMC法ではそれを使うが、ここはそれとは別の方法である。)
そこで、近似確率分布 q(θ) を考えて、これを p(θ|X) に近づけることを考える。

近いということは、

        KL[q(θ)|| p(θ|X)]=∫q(θ)log{q(θ)/p(θ|X)}dθ

が小さいということである。
(注)KL については、以前にも「脳の自由エネルギー原理」で出てきた。

ところで、log(p(X)):θについての積分が困難で計算できなかった周辺分布の対数 は次のように表せる。

  log(p(X))=log(p(X,θ)/p(θ|X))  であるが、両辺共に θ に依存しないのだから、

                =∫q(θ)log(p(X))dθ=∫q(θ)log(p(X,θ)/p(θ|X))dθ

                =∫q(θ)log(q(θ)/p(θ|X))dθ+∫q(θ)log(p(X,θ)/q(θ))dθ

                =KL[q(θ)|| p(θ|X)]+L(X)                                                式(15)

ここで、 L(X)=∫q(θ)log{p(X,θ)/q(θ)}dθ

を ELBO(周辺尤度の下限)と呼ぶ。

q(θ) の関数形を考える上では、θ で積分してしまった周辺分布 p(X) は固定して考えれば良いので、
KLダイバージェンスを最小にすることと ELBO を最大にすることが等価となる。

(注)KL ≧ 0 で log(p(X)) ≦ 0 であるから、ELBO は基本的に負であって、最大にするということは絶対値としては最小にするということである。

(岡野原大輔氏の解説)  p(X)=∫p(θ,X)dθ  において、この積分が困難な理由は、θ の空間の中の殆どで p(θ,X) が小さくて、積分に寄与する θ の値が不明だからである。そこで、逆に q(θ) が p(θ|X) に近い状況においては、積分への寄与の大きな部分に限定して log(p(X)) を評価できることになる。その評価結果が L(X) であり、その残りの部分が KL[q(θ)|| p(θ|X)] になっている、ということである。


● 変分ベイズ『変分ベイズをはじめからていねいに』石塚 崚斗

      変分ベイズの目的は,関数形として p(X,Z,θ) が与えられているとして、確率モデルの潜在変数 Z パラメータ θ に関する「事後(X を知った後)分布」を求めることである。以下しばらくは Z, θ を一括りにして Z と表すので,事後分布は p(Z|X) と表す。ここでは p(Z|X) を計算できないという立場を取る。
(注)p(Z|X)=p(Z,X)/p(X)=p(Z,X)/∫p(Z,X)dZ   と表せるが、分母の周辺積分が困難である場合である。
変分ベイズは,事後分布 p(Z|X) を別の新しい分布 q(Z) で近似してしまおうという大胆かつ汎用性の高い手法。

      ベイズ推定は事前分布 p(Z) があるとして(例えば Z は X の分布を決定するパラメータと考えれば良い)、新たなデータ X が得られた時、その情報を使って更新された事後分布 p(Z|X) を求めることであり、ベイズの定理から、

      p(Z|X)=p(Z,X)/p(X)=p(X|Z)p(Z)/p(X)∝p(X|Z)p(Z)

である。ここで、事前分布 p(Z) に共役形を仮定すると、事後分布も同じ形になる。共役形には、ガウス分布、ウィシャート分布、ディリクレ分布、ベータ分布、ガンマ分布がある。しかし、共役な形が設定できない場合には、事後分布に何らかの近似的な関数形を当てはめるしかない。そういうときに「変分ベイズ」が有用である。

・・・・・・平均場近似・・・・・・
      変分ベイズでは真の事後分布を計算することができないという立場を取るため,近似分布が真の事後分布と厳密に等しくなることはないと仮定する。しかし,何の制限もない中で p(Z|X) とのKLダイバージェンスが小さくなるような q(Z) を求めるのは自由度が高すぎて困難である。そこで,変分ベイズでは「平均場近似」と呼ばれる仮定を採用する。

(注)これは物理や化学での例と同じ発想である。

    q(Z)=Πi qi(Zi)

    解 qi = argmin_qi{KL[Πi qi(Zi)||p(Z|X)]}

データ Z はベクトルであるが、そのベクトル各成分毎の分布 qi(Zi) の積で全体の分布 q(Z) が表せるという仮定、というか、そういう分布形を選択する、ということ。強い仮定であるが、そもそも近似なのだから、、。そうすると、式(20)から(32)までを経て、

    解 qi(Zi)=argmin_qi{KL[qi(Zi)||exp(E_qj≠i[log p(Z|X))/Const.]]} :E は期待値を計算するという意味

  つまり、log p(Z|X) を i 以外の成分 j の qj を重み関数として平均した値(Zi の関数)の exponent に対して、qi(Zi) がどれくらい違うかという KL ダイバージェンス を 最小にするような qi(Zi) という関数が解である。なお Const. は qi に関係しないので、定数とした部分である。KL ダイバージェンスを 0 とすれば、

    log qi(Zi)=E_qj≠i[log p(Z|X)]+定数=E_qj≠i[log p(X,Z)]+定数

つまり、「自分以外全ての潜在変数・パラメータで仮定した確率モデルの期待値を取ると近似事後分布の形が得られる。」ただし、これによって qi(Zi) が更新されるので、再度右辺の計算をやり直すことになり、収束するまでこれを繰り返す。

(注)qi(Zi) は電子状態での個別電子状態、分子場近似での分子場下に実現する分子の分布関数に相当する。

<<< 石塚 崚斗
     KLダイバージェンスが出てくる必然性を説明していきます。点推定では「パラメータの値」自体に興味があるため,対数尤度関数をパラメータの関数と読み替えて最大化問題を解きました。その際,潜在変数の出現による和の対数部分が計算困難であるため,イェンセンの不等式を利用して対数尤度関数を下から評価したのでした。変分ベイズでは,パラメータと潜在変数を同一視します。なぜパラメータを潜在変数に含めるのかについては,変分ベイズではパラメータの値自体には興味がなく,パラメータの分布に興味があるからです。KLダイバージェンスを用いる必然性は,目的関数の下限をイェンセンの不等式で評価していたことに裏付けられているのです。イェンセンの不等式を用いると言う前提に立つ場合には,KLダイバージェンスを用いる必然性は担保されるということです。
      変分ベイズでは2つの等価な目的関数が存在することになります。ただし,KLダイバージェンスでは最小化問題ELBOでは最大化問題を考える。

      ベイズ推論ではパラメータの近似事後分布を求めるのでした。点推定ではパラメータの値を求めるのでした。そこで,ベイズ推論における近似事後分布を「一点にしか値を持たない」関数とすれば,ベイズ推論は点推定と等価になります。

・変分ベイズのKL最小化の文脈において,以下の仮定と推定方法が対応する。
        近似事後分布にディラックのデルタ関数を仮定→MAP推定に相当
        近似事後分布にディラックのデルタ関数を仮定かつ事前分布に定数を仮定→最尤推定に相当

・変分ベイズのELBO最大化の文脈において,ELBOは以下のように分解される。

        L[q(Z)]=∫q(Z)log p(X|Z)dZ - KL[q(Z)||p(Z)]        式(57)

        ELBO= q(Z)による対数尤度の期待値近似分布と事前分布の負の距離=最尤推定項+正則化項

        このように、事前分布を入れることで、結果がデータによって極端にならないように(過学習とならないように)できることが、ベイズ推定のメリットである。

(注)この式は log p(X)=KL[q(Z)||p(Z|X)]+L[q(Z)]  から導かれる。
           ∫g(Z)log(p(X))dZ=KL[q(Z)||p(Z)]+∫q(Z)log(p(Z)/p(Z|X))dZ+L[q(Z)]
          0=KL[q(Z)||p(Z)]+∫q(Z)log(p(Z)/p(Z|X))ー∫g(Z)log(p(X))dZ+L[q(Z)]
          0=KL[q(Z)||p(Z)]+∫q(Z)log{p(Z)/p(Z|X)p(X)}dZ                  +L[q(Z)]
          0=KL[q(Z)||p(Z)]+∫q(Z)log{p(Z)/p(Z,X)}dZ                         +L[q(Z)]
          0=KL[q(Z)||p(Z)]-∫q(Z)log(p(X|Z))dZ                                  +L[q(Z)]

               log p(X) = L[q(Z)] ー
KL[q(Z)||p(Z|X)]                  式(15)

                 L[q(Z)]=∫q(Z)log(p(X|Z))dZ ー KL[q(Z)||p(Z)]      式(57)

          という二つの関係式は紛らわしい。第2項の違いに注意。後者の式は、この後、式(20)へと変形される。
>>>

ここまでが前置きのようである。これからいよいよ「オートエンコーダ」と「変分ベイズ」を結合する。


● VAE(変分オートエンコーダ)
『VAEをはじめからていねいに』石塚 崚斗
      変分ベイズで使った q(Z) に対する平均場近似が使えない状況において、入力 X に対しての事後分布 q(Z|X) に DNN で学習されたものを使う。そのパラメータは別途 φ と記すことにする。(DNN というのは CNN(畳み込み:画像認識で主に使われる)と RNN(回帰:時系列データで主に使われる)と対比されたスキームの分類のようである。つまり全結合の標準的な深層ネットワークの事らしい。)

      式(9) が上の 式(57) に対応している。φ や θ は DNNのパラメータ(神経細胞同士の結合定数)である。

      L[q(Z|X;φ)]=∫q(Z|X;φ)log(p(X|Z;θ))dZ - KL[q(Z|X;φ)||p(Z)]      式(9)

第1項は対数尤度 log p(X|Z;θ) の q(Z) による期待値(負:再構成誤差の逆符号、正規分布では 誤差の自乗和の逆符号)であり、第2項は事前分布と事後分布の近似度である。第1項だけを考慮したものを オートエンコーダー(AE)という。つまり、第1項:尤度期待値の最大化ということだけでなく、第2項:事前分布による制約を入れることで、正則化がなされる。

    ここで、式(9)を p(X|Z)=p(Z|X)p(X)/p(Z) を使って更に変形すると、

第1項が ∫q(Z|X)log(p(X))dZ + ∫q(Z|X)log((p(Z|X)/p(Z))  となって、この第2項と式(9)の第2項を一緒にして、

        L[q(Z|X;φ)]=log(p(X;θ)) - KL[q(Z|X;φ)||p(Z|X;θ)]      式(20)

となる。
与えられたデータ X から q(Z|X;φ) によって Z の分布(φ)が決まり(エンコーダー:特徴量抽出器)、
得られたデータ Z の分布から p(X|Z;θ) によって X の分布(θ)が決まる(デコーダー:データ生成器)、

というスキームになる。
     φ と θ を決定する為に、L[] (ELBO)を最大化する。その為には、それぞれの DNN の評価関数が微分可能でなくてはならない。そこで、KingmaらはReparameterization trickと呼ばれる決定的な式変形を提案した。決定的な処理を用いて,エンコーダ q(;φ) からの疑似的なサンプリングを可能にする。例として q(Z|X;φ) が正規分布である場合を挙げているが、要はパラメータ φ が決まった段階で、その分布に従って Z のサンプルを多数生成する、ということである。それぞれのサンプルに対して、デコーダを動かして、X の分布(これはベルヌーイ分布が仮定されている)が生成され、その分布が元々のデータの分布と比較されることになる。一致に向かうことと式(20)の最大化が等価となる。

 (岡野原氏の説明)式(9)の第一項を φ で微分することが困難である。そこで、

      Z=μ(X;φ)+εσ(X;φ): ε は分散 σ^2 の正規分布 p(ε) からの乱数

と表すと、第一項は、

    ∫q(Z|X;φ)log(p(X|Z;θ))dZ=∫p(ε)log(p(X|Z=μ(X;φ)+εσ(X;φ);θ))dε

となり、φ微分の対象が関数 q(Z|X;φ) ではなく、確率関数の条件部分になる。これはデコーダから計算可能となる。


● MNIST(Modified National Institute of Standards and Technology database)への適用
    これだけではなかなか理解できないので、具体的な例が説明されている。(これはどうも典型的な応用例らしい。)入力データは、MNISTからの手書き0~9までの数字の画像データセットで,6万枚の訓練データと1万枚のテストデータから構成される。MNIST では全ての画像には正解ラベルが付与されているため,画像を入力として受け取りラベルを出力する識別モデルの評価に利用することもできるが、ここでは,VAE を識別モデルとして利用するのではなく,VAE を教師なし学習して「潜在空間の構成」を詳しく観察する、という事で、イメージを掴むには良い例だと思う。

・入力データ X はベルヌーイ分布で近似されることになる各画素の白黒値である。次元 N=画素数。

・潜在変数 Z はD次元に設定する。単に縮約された次元という意味。D=2 とすると中身が表示しやすい。Dを大きくすればより正確な表現になる。

・ p(X,Z;θ)=p(X|Z;θ)p(Z): p(Z) が事前分布。

・ p(X|Z;θ)=Bernoulli(λ(θ)): λ は N個のセルのベルヌーイ分布パラメータ(黒となる確率)を並べたベクトルである。

                   X~λ^x (1-λ)^(1-x): x は X の具体的な値を表す。~はこの関数形の確率分布に従うという意味。

                   λn(θ) は DNNパラメータ θ によって求められた n番目画素の白黒確率である。

・p(Z)=N(0,I): 要するに定数。これは事前分布を想定しないという意味だろう。なお N() は正規分布を意味する。

・q(Z|X;φ)=N(μ(φ),Σ(φ)):Σ(φ) は対角行列で、対角成分は σ(φ)^2 が D個並ぶ。
          Z の各軸 Zj
に q(Z||X;φ) を射影したとすれば、それが 平均 μ(φ)j、分散 Σ(φ)j の正規分布になっている。また各軸間相関は無い。

    (注)つまり、D次元空間における単峰分布である。0 から 9 までのどれかに対応しているということではなくて、全体をそう近似しているだけである。具体的には、φ を決めて X から Z を求めて、Z の分布から平均値と分散を計算する。本当は正規分布ではないのだが、それを強引に正規分布と見なすという意味である。

各画素の白黒確率(画素 n が黒となる確率が λn で、白となる確率が 1-λn)は、

・p(X|Z;θ)=Πn{λn(θ)^x (1 - λn(θ))^(1-x)}

これがデコーダーで、エンコーダーの方は DNN を使う。
これも同じ意味である。正規分布としての Z をサンプリングして、そこから θ を固定して多数の Z のサンプルから X を DNN で計算すると各画素の濃淡が得られるが、その濃淡からベルヌーイ分布の λn が決まることになる。

変分下界(20)を計算すると、

    L(q(Z|X;φ))=Σn{xn logλn(θ) + (1-xn)log(1-λn(θ))}
                         +(1/2)Σd{1 + log(σd(φ)^2) - σd(φ)^2 - μd(φ)^2 }

                         n は 1~N、d は 1~D

あとはプログラムの説明に移っているので、中身は判らない。φ と θ について、上記の L() ELBO を最大化するのであるから、∂λn(θ)/∂θ、∂μ(φ)/∂φ、∂σ(φ)/∂φ が各イテレーションにおいて計算できればよい。λn や μ や σ は多数のサンプルによる計算の集計結果であり、それぞれのサンプルの計算において微分の表式が得られている(誤差逆伝搬法)のであるから、確かに計算可能だろう。

(注)なかなか理解できなかったのは、X→Z→X' というサイクルにおいて、個々の→で伝達されるのは、DNN の計算結果そのものではなくて、多数のサンプル計算を集計した結果を人為的な確率分布に無理やり当てはめてそのパラメータが伝達される、というやり方に違和感があったためである。個々の X がどの Z に変換されて、それが元の X と一致するかどうかには関心が無いということだろうと思う。通常のオートエンコーダのようにそれを追求すると、おそらく解くことが出来ない。

         結果の解析を見ると、D が2次元の空間中にサンプル中の各 X に由来する Z をプロットしていて、それらが各 X に付与されたラベル(0 ~ 9 数字)毎にまとまっている。データ X に対して潜在変数 Z が、φに応じて、推定されるのであるが、この Z をそのままデコーダーに渡すのではなくて、全てのデータから得られる Z の平均と分散を計算して、その正規分布からランダムに Z を選択してデコーダーに渡すのである。実際にはエンコードされる Z の分布は拡がっているのだが、この「正規化」によって、Z の分布が中寄せされる。いわば潜在変数の空間をぼんやりとした円周内に強制的に閉じ込めている感じになる。同じようにラベルを付けた Z 空間の各領域内においても、場所によってデコードされる数字画像(X)の形が違ってくる。また、領域が近い数字画像同士は視覚的に似ている。領域境界付近ではどちらの数字かが判別しがたい。多分脳の視覚野の最後のあたりには、こんな地図が出来ているのだろうと思う。これは実際に画像や Z空間をスキャンしてデコードされる数字画像を表示した動画で見た方が判ると思う。

(注)確かに、世界の現実データを人間の脳が受け取り、それを解釈するということは、その解釈結果からの現実への働きかけによって情報のサイクルを作ることとは切り離せない現象なのである。また、こういうことが可能なのは、そもそも世界の現実データが構造を持っていて、次元の縮約が可能だからである(吉田民人の言う「物質・エネルギーのパターン」)。VAE はその学習方法こそ違え、脳の基本的な機能の重要な側面を捉えているといえるだろう。勿論、まだ母親の胎内にあって、脳神経が軸索を伸ばし始めた頃にすら、何らかの「初期条件」として神経結合定数があったのであるから、「本能」というものは認めざるを得ないだろうが。。。

<<<石塚 崚斗
    画像などの高次元のデータは、実はその高次元の中でごく一部にしかデータが分布しておらず、意味のあるデータ(訓練データの本質を捉えたデータ)はその高次元の中で局所的に固まっていると考える多様体仮説(Manifold Hypothesis)というものがあります。高次元での距離が近いデータが似ているとは限らず、局面に沿った方向の移動で距離を考えたほうが類似しているものが見つかる可能性が高いということになります。なので低次元(潜在変数空間)に開いて距離を測ったほうが良いということですね。
>>>

(付録)点推定の例として EM アルゴリズムが説明されていた。
● EMアルゴリズム(最尤推定を効率的に行う手法の一つ)
    潜在変数 Z を導入する。同時分布 p(X,Z) が設定される。p(X|Z)、P(Z) も決まる。
Z は勝手に定義するので、どういう風に定義すれば計算が楽になるのか?という作戦が重要である。
EMアルゴリズムの手順は、
 1.試行パラメータ θold から p(Z|X,θold) を計算する
 2.Q(θ,θold) 尤度の表式中で一部を θ=θold に固定したもの、を計算する
 3.argmax_θ{Q(θ,θold)} として、次のステップの θ を決める。
詳しくは別途『EMアルゴリズムをはじめからていねいに』石塚 崚斗 で解説してある。

(説明)対数尤度の分解式(30)
    log p(X|θ)=KL[q(Z)||p(Z|X,θ)]+L[q(Z),θ]
            : L[q(Z),θ]=∫q(Z)log(p(X,Z|θ)/q(Z))  

において、p(Z|X,θ) は真の事後分布なので定数である。そこで、KL[] =0 とするように q(Z)=p(Z|X,θold) として固定し、 L[q(Z),θ] (ELBO)=Q(θ,θold) を最大化するように、残りの θ(log(p(X,Z|θ) の θ)を選ぶ。θ が更新されるので、再度 q(Z) を更新する、、、この繰り返し。X と θold から p(Z|X,θold) が計算できるように確率変数 Z を設定することが鍵となる。

(注)EM法は、以前に、COVID-19 の日々の発症者数から、日々の感染者数を推定する BackProjection で知った。

その時は巧妙な方法だと思っただけであるが、一般性のある方法のようである。以下、見直してみた。

・BackProjection での、観測確率変数 X は発症者数(Y(t))で、これはパラメータ μ(t) のポワッソン分布とした。

・この μ(t) は過去の感染者数に発症時間分布 f(d) を掛けて積算した数で決まるのであるが、その感染者数自身はまたパラメータ λ(t) のポワッソン分布に従う確率変数である。この λ(t) がここで推定すべき θ である。

・そこで、中間の確率変数 N(t,d) を導入する。これは t で感染して t+d で発症する人数という確率変数である。これが上記の Z に相当する。

・N(t,d) から、μ(t)=Σd N(t-d,d) として、μ(t) が決まる。つまり、λ(t):θ を与えれば、確率変数 Y(t) :X と N(t,d) :Z とは、μ(t) を介在として結びついている。これが p(X|Z,θ) =パラメータ μ(t) のポワッソン分布である。

・この N(t,d) の期待値(=ポワッソン分布パラメータ)=λ(t)f(d) を推定するには、ある時刻 t+d での発症者数(Y(t+d))に寄与する N(t,d) の比率が判ればよい。それを、試行解 λ(t)old (上記の θold)から計算する。Y(t+d) の期待値=Σi λ(t+d-i)old f(i) であるが、観測値 Y(t+d) だけから最尤推定されるその期待値は Y(t+d) そのものである。従って、<N(t,d)>=Y(t+d)・λ(t)old f(d)/{Σi λ(t+d-i)old f(i)} と推定される。(<・>は期待値の記号。)

・<N(t,d) >が推定出来たら、未知数としての λ(t) をパラメータとして、疑似観測値 N(t,d) を実現するようなポワッソン分布の尤度(上記の Q(θ,θold))が決まる。下記の L である。

       logL=∑(t=1:T)∑(d= 0:T-t) {<N(t,d)>log(λ(t)f(d)) - λ(t)f(d)}

本来は <N(t,d)>は N(t,d) なのであるから、未知数 λ(t) を含んでいるのであるが、これが λ(t)old に固定されている為に計算が簡単になる。(注:統計力学分子場近似で言えば、λ(t)old が周辺分子に由来する中央分子へのポテンシャルパラメータである。)

・ logL を λ(t) (上記の θ)で最大化することで、更新された λ(t) が得られる。(注:同上で言えば、中央分子の熱平衡状態を計算して、それを使って周辺分子による新たなポテンシャルパラメータを求めることに相当する。)

・θ について尤度の対数を微分するときに、θold が定数として扱える為に、単純な表現となる。その代わりに、θ と θold が充分近くなるまで、計算を繰り返す必要がある。

3.3 GAN(敵対的生成モデル)

このモデルは2014年に提案されたもので、もっぱら類似画像の生成に使われている。VAE に比べるとより「創造的」であるので重宝されているが、反面失敗することもあるらしい。
取っつきやすいサイトがあった。
『最初のGAN(Genera tive Adversarial Networks)』(たびの足袋さん)

生成器には乱数が入る。多分正規乱数だろう。これが潜在変数だから次元は低い。
この生成器の出力は学習データ空間に対応させる。その中の一部の次元を占めることになる。
学習データの方は判別器に入る。その確率分布関数と生成器から出てくる確率分布関数が比較される。
具体的にはどうするのか、これは判らない。
生成器の方は比較結果に対して、それを改善するように学習するが、
判別器の方はそれを改悪するように学習する。
よく判らないのは、判別器の方である。

元論文を読むときちんと説明してあった。
I.J.Goodfellow et al. Generative Adversarial Nets(2014年)

z は潜在変数であるが、単純なガウシアンノイズ pz(z) を採る。
生成モデル G については、潜在変数次元から学習データ次元へのネットワークで、
     G(z;θg):z から 学習データと同じ次元のデータ~pg を生成する。
判別モデル D については、学習データから 0~1 のスカラーへのネットワークで、
     D(x;θd):これを x が pg 以外に由来する確率と解釈する。
・D の学習は、xの分布 と pg を出来るだけ区別できるようにすること。
   つまり、D(x;θd) を 1 に近づけつつ、D(G(z;θg);θd) を 0 に近づける。
   この発想がユニークであり、このモデルの「創造性」の要因となっている。
・G の学習は D(G(z;θg);θd) を 1 に近づける。

   これらを対数表示で表す(確率分布関数の近さを評価:KLダイバージェンス)。
θd については、
1.log(D(x;θd)) を学習データ x 総数に亙って平均したものを 0 に近づける(最大化する)。
2.log(1-D(G(z;θg);θd)) をガウシアンノイズ z で平均したものを 0 に近づける(最大化する)。
θg については、
3.log(D(G(z;θg);θd)) をガウシアンノイズ z で平均したものを 0 に近づける(最大化する)。
あるいは、
log(1-D(G(z;θg);θd)) をガウシアンノイズ z で平均したものを -無限大 に近づける(最小化する)。

以上の数式表現を統一すると、E を平均操作として、

Ex[log(D(x;θd))]+Ez[log(1-D(G(z;θg);θd))]

を、θd については最大化し、θg については最小化する。(もっとも、第一項は θg には依存していない。)
この表式が θd や θg で偏微分できるから、θd についてはその正の方向に、θg についてはその負の方向に動かしていく。
(注)この2つの項は同じ重みであるが、その必然性は無いように思われる。2項の相対的重みを変えれば(係数を掛ければ)生成器としての安定性が変わるのではないかと思う。
あとはいろいろと数学的な話と実例が書いてある。

(岡野原氏の解説)θd についての最適化と θg についての最適化は交互に行う。出発点はランダムであるから、θg については、偏微分が大きくなるように、Ez[log(1-D(G(z;θg);θd))] を最小化する代わりに、Ez[log(D(G(z;θg);θd))] を最大化するそうである。
・VAE での生成器では、生成した Xの確率分布の尤度を問題にするので、Z の平均値にランダムノイズを加えるのであるが、GANではその尤度を問題にするのではなく、識別器に識別させるだけであるから、ノイズを追加しなくても良い。このことで生成される結果がより鮮明なものとなる。また、識別器の精度が高くなりすぎると、評価関数の偏微分が非常に小さくなる領域が広くなって最適化に失敗するので、適度に精度を落とすということである。結構微妙な手加減が必要なようである。

(以下、あまり深入りする気がないので、岡野原氏の本に戻る。言語生成モデルについては別途勉強する予定。)

3.4 自己回帰モデル
  時系列データに対して線形モデルとしたものが自動制御で使われているが、時系列である必然性は無い。
  同時確率を条件付確率の積で表現し直しただけであると考えることができる。
  n個の確率変数 x1,x2,,,,xn についての確率密度関数を

      p(x1,x2,x3,,,xn)=p(x1)p(x2|x1)p(x3|x1,x2)p(x4|x1,x2,x3)・・・p(xn|x1,x2,x3,,,xn)

  として、n個の確率密度関数の積で表現する。これ自身は近似ではない。
  VAE や GAN に比べて確率分布をより詳細に最適化できる(尤度が高い)。
  基本的には順序を追って計算されるために、並列処理が難しいので、計算時間がかかる。
  しかし、それを克服するようなスキームが発明されている。
  Causal CNN、Pixel CNN
  :CNN(畳み込みネットワーク)に使われると、順序が先のセルは参照しないので、かなり並列化ができる。
  Dilated CNN:k層目は kだけ離れたセルしか参照しない。こうするとかなり遠く離れたセルの影響を取り込める。
  :WaveNet という音声データ生成モデルに使われている。
以上が岡野原氏の説明であるが、これだけではさっぱり判らない。
(注:ChatGPTも自己回帰モデルの一種であり、Transformer を使っている。ここでは触れていない。)

A. van den Oord et al.: WAVENET: A GENERATIVE MODEL FOR RAW AUDIO (2016)
(要旨:DeepLの訳)
    本稿では、生のオーディオ波形を生成するためのディープニューラルネットワークであるWaveNetを紹介する。このモデルは完全確率的かつ自己回帰的であり、各音声サンプルの予測分布は以前のすべてのサンプルに条件付けされる。それにもかかわらず、1秒間に数万サンプルの音声データを効率的に学習できることを示す。音声合成に適用した場合、WaveNetは最先端の性能を発揮し、人間のリスナーは、英語と北京語の両方で、最高のパラメトリックシステムや連結システムよりも有意に自然な音であると評価する。単一のWaveNetは、多くの異なる話者の特徴を等しく忠実に捉えることができ、話者のアイデンティティを条件とすることで、話者を切り替えることができる。音楽をモデル化するために学習させた場合、WaveNetは斬新で、しばしば非常にリアルな音楽断片を生成することがわかった。また、WaveNetを識別モデルとして用いることで、音素認識に有望な結果が得られることも示す。

Xi. Chen et al.: PixelSNAIL: An Improved Autoregressive Generative Model (2018)
(要旨:DeepLの訳)
    自己回帰生成モデルは、画像や音声のような高次元データを含む密度推定タスクで最良の結果を達成する。そこでは、リカレントニューラルネットワーク(RNN)が、前のすべての要素を条件として、次の要素に関する条件付き分布をモデル化する。このパラダイムでは、RNNが長距離依存関係をどの程度モデル化できるかがボトルネックであり、最も成功したアプローチは因果畳み込みに依存している。長距離依存性を扱うことも不可欠であるメタ強化学習の最近の研究からヒントを得て、因果畳み込みと自己注意を組み合わせた新しい生成モデルアーキテクチャを紹介する。本論文では、得られたモデルを説明し、大規模なベンチマークデータセットにおける最新の対数尤度結果を示す: CIFAR-10(1次元あたり2.85ビット)、32 * 32 ImageNet(1次元あたり3.80ビット)、64 * 64 ImageNet(1次元あたり3.52ビット)。我々の実装はanonymizedで公開される予定です。

3.5 正規化フロー
    生成器を可逆微分可能変換で表現する。つまり x=f(z) と書いて、
    p(x)=p(z)|det(dz/dx)|
とすれば、確率密度関数 p(x) が定義できるから、変換 f について最尤推定すればよい。
p(z) としては、何でもよいが、計算しやすい正規分布を使う。
問題は f(z) であるが、逆変換も容易でなくてはならない。
f(z) の例として、Affine Coupling Layer が知られている。

L.Dinh et al. NICE: Non-linear independent components estimation (ICLR,2015)
(要旨:Googleの訳)
    我々は、非線形独立成分推定 (NICE) と呼ばれる、複雑な高次元密度をモデル化するための深層学習フレームワークを提案します。これは、優れた表現とは、モデル化が容易なデータの分布を持つ表現であるという考えに基づいています。この目的のために、データの非線形決定論的​​変換が学習され、変換されたデータが因数分解された分布に従うように潜在空間にマッピングされます。つまり、独立した潜在変数が得られます。この変換をパラメータ化することで、ヤコビアン行列式と逆変換の計算が簡単になりますが、それぞれがディープ ニューラル ネットワークに基づく単純なビルディング ブロックの構成を介して、複雑な非線形変換を学習する能力を維持します。トレーニング基準は単純に正確な対数尤度であり、扱いやすいものです。先祖からの不偏なサンプリングも簡単です。このアプローチにより 4 つの画像データセットに対して優れた生成モデルが生成され、修復に使用できることを示します。
https://qiita.com/exp/items/dafadf2d1e60ea1d79ae に解説がある。

3.6 拡散モデル
    観測データ x0 にノイズを少しづつ加えていく。データの次元は変わらない。それを順に x1,x2,,, と表す。
    式で表すと、

    q(xt|x(t-1))=N((√(1-βt) x(t-1), βt I)

となる。N は正規分布を表す。I は対角行列で対角成分が全て 1 の行列である。
ひとつ前のデータ x(t-1) を一様に(微小比率 βt だけ)減少させておいて、それに減少分のノイズを追加した結果得られる確率密度関数を表す。√(1-βt) x(t-1) の中心として、 βt I だけぼやけている確率分布である。これを繰り返せば、最終的には ノイズ分布 N(0,I) に収束する。
    逆にノイズ分布からスタートして、少しづつ観測データを再現していくプロセスを学習させるのが拡散モデルである。その学習の手段として多層ニューラルネットワークを使う。式で表すと、

    p(x(t-1)|xt)=N(μ(xt,t;θ),Σ(xt,t;θ))

である。これを逆拡散過程と呼ぶ。ここで、μ と Σ をパラメータ θ を持つ多層ニューラルネットワークで計算し、拡散過程の各ステップでの対応するデータに合わせこむのである。
    全体の構造は VAE に似ているが、VAE における認識モデル(x→z) がここでは単純に少しづつノイズを追加していく、という固定プロセスに置き換えられているので学習の必要が無い。また多数のステップ毎に生成モデルを積み重ねているのであるが、認識モデル側が各ステップで同じなので、生成モデル側も共有できる。これを一気に最適化するには、VAE を同じく、ELBO を最大化する。式で書くと、

    E[logp(x0)]
    ≧ Eq[log{p(x(0:T))/q(x(1:T|x0))}]
    = Eq[logp(xT)+Σ_(t≧1) log{p(x(t-1)|xt)/q(xt|x(t-1)}]

T は t の最後、つまり正規ノイズ段階を表す。各時刻において log{p(x(t-1)|xt)/q(xt|x(t-1)}を最大化すればよい。つまり、個々の拡散過程で変化した確率密度関数を逆拡散過程でできるだけ元に戻そうとしている。

    Jonajan Ho 等は、μ(xt,t;θ) と Σ(xt,t;θ) に対して表現を工夫した。
Ho et al. Denoising diffusion probabilistic models (NeurlPS, 2020)

(要旨:Googleの訳)

非平衡熱力学からの考察に触発された潜在変数モデルの一種である拡散確率モデルを使用した高品質の画像合成結果を提示します。私たちの最良の結果は、拡散確率モデルとランジュバン力学によるノイズ除去スコアマッチングの間の新しい関係に従って設計された重み付き変分限界でトレーニングすることによって得られます。また、私たちのモデルは、自己回帰復号の一般化として解釈できる漸進的非可逆解凍スキームを自然に許容します。 。無条件 CIFAR10 データセットでは、インセプション スコア 9.46、最先端の FID スコア 3.17 が得られました。256x256 LSUN では、ProgressiveGAN と同様のサンプル品質が得られます。私たちの実装は、この https URLから入手できます。

     Σ(xt,t;θ)=σt^2 I、σt=βt or σt=(1-α(t-1)/(1-αt)βt
     μ(xt,t;θ)=(1/√αt){xt - (βt/√(1-<αt>))ε(xt,t;θ)}

ε は今のデータとの差分であるから、加えられたノイズそのものを推定しようとしていることになる。
    スコアベースモデルというのがあって、これは対数尤度の入力データ x についての微分をスコアとして、これを学習するモデルである。このモデルと拡散モデルは同等である。(この辺は全く判らない。。。)
    ノイズを含んだ画像からノイズを取り除く「超解像度」モデルとしても使われている。
    アニメーション業界でかなり使われているらしい。

  <目次へ>       <一つ前へ>     <次へ>