深層強化学習のベイズ主義的な情報探索に駆動された自然言語処理の意味論

スポンサーリンク

派生問題:複合的な方策の一般化と関数近似は如何にして可能になるのか

これまでの推定価値関数のように、単一の状態や単一の状態と行動の組み合わせのみを前提とした場合、状態の数と行動の数が少ない場合にしか方策を規定できなくなる。そのため、限定された部分集合的な経験一般化(generalization)することで、既知の状態や既知の状態と行動の組み合わせから未知の状態や未知の状態と行動の組み合わせに対応する価値を近似的に算出する必要がある。例えば強化学習が適用される視覚情報のセンシング技術などのように、同一の状態で同一の経験が得られる保証の無い場合には、とりわけ過去経験から未だ経験していない状態や行動へと一般化することが求められる。

そこで、強化学習問題教師あり学習(supervised learning)の問題と接点を持つことになる。つまり、教師あり学習の一種である関数近似(function approximation)の一般化方法強化学習アルゴリズムに組み込むことにより、目的関数となる既知の価値関数から関数全体を近似する一般化を試みることになる。そのためニューラルネットワークパターン認識、決定木などのような教師あり学習は、強化学習問題においても有用なアルゴリズムとして挙げられるかもしれない。

だが、全ての関数近似方法が例外無く強化学習に適している訳ではない。例えばニューラルネットワークでは、静的な訓練データ集合を前提としているために、同一のデータで複数回の試行が実行されることを想定されている。しかしながら強化学習では、環境やそのモデルとの相互作用を通じて、学習がオンラインで実行可能でなければならない場合もある。そのためには、新データを随時獲得しつつ漸進的学習し続ける方法が必要になる。

更に付け加えるなら、強化学習問題の枠組みでは、「非定常目的関数(nonstationarity target function)」を参照した関数近似方法が求められる。非定常目的関数とは、時間と共に変異する目的関数意味する。例えば方策が変化しない場合であっても、訓練データ内の目的価値が動的計画法やTD学習法などによるブートストラップ法によって生成される場合には、その目標価値は非定常型となる。こうした非定常性を扱うことを不得手としている関数近似方法は、強化学習には不向きと言える。

問題解決策:平均二乗誤差

教師あり学習の大半は、入力の分布P上の「平均二乗誤差(mean-squared error)」を最小化するように動作する。強化学習における価値の予測問題では、入力値に該当するのが状態で、目的関数に該当するのが真の価値関数となる。したがって、パラメタθを用いた価値Vの近似に関する平均二乗誤差MSEは次のようになる。

$$MSE(\overrightarrowθ\\_t) = \sum_{s \in S}^{}P(s) [V^π(s) ? V\\_t(s)]^2$$

Pは異なる状態の誤差を重み付けする分布を表す。あらゆる状態の誤差をゼロまで小さくすることは、通常ならば不可能だ。そのためこの分布は重要な位置付けにあるとされる。一般的に状態数はθの要素数に比して極めて大きい。言うなれば関数近似器の近似能力の自由度は希少資源のようなものだ。つまり、一部の状態でより良い近似を得るためには、他の状態での近似の質を犠牲にせざるを得ない。分布Pは、このトレードオフの関係を指し示している。

問題解決策:大域最適解と局所最適解の区別

この最小二乗誤差に固執すべきか否かは議論の余地がある。強化学習問題の枠組みにおいて重要となるのは、最小二乗誤差の追究ではない。強化学習で求められるのは、教師あり学習の予測を機能的に再利用することでより良い方策の発見へと応用していくことだ。最小二乗誤差における理想的な目標は「大域最適解(global optimum)」を発見することに他ならない。この理想的な目標は、線形関数などのような比較的単純な関数近似方法においては達成可能である場合が多い。しかしニューラルネットワークや決定木などのような比較的複雑な関数近似においては、ほぼ不可能である。

こうした複雑な関数近似は、代替的に「局所最適解(local optimum)」へ収束するように動作する。これは、非線形関数近似それ自体の目的の達成という点では十分な解決法として観られる場合がある。だが強化学習問題の事例の多くにおいて、最適解への収束は見受けられていない。この関数近似問題は、この点で未だ研究途上にあると言える。例えば勾配法に基づく関数近似の中では「深層アーキテクチャ(Deep architecuture)」とも関わりを持つバックプロパゲーションを用いた多層ニューラルネットワークが採用される場合がある。いわゆるDQN(Deep Q Network)は、この方面を推し進め、関数近似に「深層学習(Deep learning)」を用いた方法となっている。

問題解決策:関数近似による行動価値推定

関数記事を用いた状態価値推定行動価値推定拡張することは比較的容易に実現できる。ここでもまた、探索を確実に実行させる方法として、「方策オン型」と「方策オフ型」の区別が導入される。

行動価値関数はパラメタ・ベクトル$$\overrightarrow{θ_t}$$によってパラメタ表現された関数形式で、$$Q_t \approx Q^π$$と表せる。状態価値推定が$$s_t \rightarrow v_t$$であるなら、行動価値推定は$$s_t, a_t \rightarrow v_t$$という形式で記述できる。状態価値関数における価値vが状態に関する近似であるのならば、行動価値関数における目的となる価値vは、$$Q^π(s_t, a_t)$$に対する近似であれば良い。

$$\overrightarrow{θ_{t+1}} = \overrightarrow{θ_t} + α [v_t – Q_t(s_t, a_t)] ∇_{\overrightarrow{θ_t}}Q_t(s_t, a_t)$$

例えばTD(λ)同様、行動価値関数に対する逆方向のビューは次のようになる。

$$\overrightarrow{θ_{t + 1}} = \overrightarrow{θ_t} ασ_t\overrightarrow{e_t}$$
$$σ_t = r_{t+1} + γQ_t(s_{t+1}, a_{t+1}) – Q_t(s_t, a_t)$$
$$\overrightarrow{e_t} = γλ\overrightarrow{e_{t-1}} + ∇_{\overrightarrow{θ_t}}Q_t(s_t, a_t)$$
$$\overrightarrow{e_0} = \overrightarrow{0}$$

SarsaQ学習のような制御に応用するには、上記のような行動価値予測計算方策改善と行動選択方法を関連付けて実装する必要がある。だが行動全体が巨大な離散集合か連続値となる場合は特に、こうした設計に明確な解を与えられるほどには、研究は進んでいない。

問題解決策:深層学習

遅くても2006年から2009年ごろの間には、「深層学習(Deep Learning)」の研究領域では、「深層アーキテクチャ(Deep Architectures)」という概念が取り沙汰にされるようになった。

ここでいうアーキテクチャの深さ(depth of architecture)は、非線形関数の水準を意味する。深さがあるということが意味するのは、深層アーキテクチャ構造的にもアルゴリズム的にも「階層分化」しているということだ。例えばニューラル・ネットワークならば隠れ層(Hidden Layer)の個数に比例して「深くなる」。深層アーキテクチャはこうした中間層のように高度に可変的な関数(highly-varying function)を幾つも階層的に組み合わせ、比較的低水準の層で抽出した個別具体的な特徴ベクトルが比較的高水準の層に渡されるに連れて抽象化されていくという機構によって、概念の表現を可能にしている。

この概念の抽象化された表現関数近似を前提とした「一般化(generalization)」によって成り立っている。深層学習機能関数近似一般化による概念の抽象化を可能にする点にあると言える。

表面的に観れば、深層学習特徴は深く層の数の多いニューラル・ネットワークとして記述できる。しかしより重要なのは、深層学習アルゴリズムが観測したデータ点を対象とした概念の抽象化による情報の抽出が如何にして可能になるのかだ。この抽出したデータをとりわけ「内部表現(internal representation)」、あるいは単に「特徴(feature)」と呼ぶ。自然言語処理のみならず、音声認識や画像認識をはじめとしたパターン認識においては、入力可能な音声や画像のパターン情報から認識に有用な特徴ベクトルを抽出することが先決となる。認識に適用可能な少数の有用な特徴ベクトルが抽出できれば、線形分類器やベイズフィルターなどによってクラス確率推定やラベリングが可能になる。

内部表現特徴の抽出が要求されるのは、観測したデータに潜在的な構造が含まれているためだ。例えばデータが局所的なクラスタとして分布している場合には、事前にデータ・クラスタリングを実行した後に、各クラスタに対するデータ処理を実行した方が効率が良い。そうしたクラスタは「カテゴリ(category)」とは異なって、人間が事前に把握していた集合とは別のあり方でもあり得る関連を指し示す。そうした関連は、元来無関係と思われていた複数の問題設定を紐付けることによって、それら複数の問題を一挙に解決するアルゴリズムへの道標を連想させることもあり得る。確かに「ノーフリーランチ定理(no free lunch theorem)」が物語るように、あらゆる問題設定に対して機能する万能なアルゴリズムはあり得ない。だが、多くの問題設定に対応し得る汎用性の高い内部表現を抽出できれば、より汎用的な問題解決策となるアルゴリズム設計することも可能になる。

ニューラル・ネットワークの関数近似能力

ニューラル・ネットワークは長らく「勾配消失(Vanishing Gradient)」に苦しめられていた。多層化されたニューラル・ネットワークでは、損失関数のパラメタの勾配が0に近付いてしまう。つまり最急降下法による勾配が小さくなることで、それ以上学習が進まなくなってしまうのだ。

歴史的な経緯からすれば、ニューラル・ネットワークは外部要因からも厳しい制約を受けていた。丁度勾配消失問題が取り上げられた時期と重なるように、「サポートベクトルマシン(Support vector machine; SVM)」が脚光を浴びたためだ。SVMはニューラル・ネットワークのように局所収束の問題に直面する訳ではない。この方法はカーネル法による複雑な非線形的な識別分類をも可能にする。MNIST(Mixed National Institute of Standards and Technology database)の手書き文字認識に対するベンチマークテストでも、当時はニューラル・ネットワークを上回る性能を発揮していた。

SVMはパターン識別方法の一種であると共に、データ・クラスタリングの一種でもある。このクラスタ分析では、クラスタと非クラスタの差異が重視される。SVMは「マージン最大化」によって、各クラスタの内外境界を決定する。ここでいう「マージン(margin)」とは、あるクラスタの内外境界から最も近傍に位置するデータとの距離を指す。例えば二次元平面上の情報空間でクラスタリングを実行する場合、各クラスタの内外境界を規定するためには、クラスタを区別する線分を引く必要がある。この差異化は、所与の各データを前提とした場合のみならず、未知の新たなデータが入力された場合にも適用できなければならない。さもなければそのクラスタ分析結果は汎化可能性を失う。したがってここで記述する線分は、可能な限り各データの中心を通過するのが好ましい。言い換えれば、「マージン」が最大となるように、線分を記述した方が良いのである。サポートベクターマシンは、このマージン最大化の原理により、未知のデータに対しても妥当なクラスタリングを可能にすると期待されている。

これに対しニューラル・ネットワークのとりわけバックプロパゲーションによる学習では、原則的に教師データに対してのみ学習結果を保証する。学習データの無い特徴空間上においては、分析が初期値に依存することになる。故に決定境界の導入にも偶発性が伴う。

ニューラル・ネットワークとSVMのアルゴリズム的差異

そうなると、そもそもにおいてSVMとニューラル・ネットワークが比較されるのは、まさにMNISTの手書き文字認識の如く、ある一定の問題設定を前提とした比較の観点が導入された場合の等価機能主義的な分析方法を採用した場合に限られる。双方は手書き文字認識のような問題を設定した場合には機能的に等価となり得るだろう。しかしアルゴリズム的な等価性は全く無い。SVMのアルゴリズム特徴空間上の非線形分離問題の解決策となる一方で、ニューラル・ネットワークのアルゴリズムは「関数近似(Function approximation)」において特徴付けられる。

形式ニューロンの入出力関数における微分可能性を背景としたシグモイド関数機能は、多層パーセプトロンによる出力値を0から1の間の連続値に限定することを指向する。教師データとの誤差すらこの範疇の連続値で正規化してデータ化することが可能なのだ。概してニューラル・ネットワークを特徴付ける機能は、単純に文字認識のような問題の解決にあるというよりは、むしろ出力値を教師データに近似していくことにある。

問題再設定:深層強化学習による情報の発見探索は如何にして可能になるのか

強化学習深層学習機能的に接続させた「深層強化学習(Deep Reinforcement Learning)」において名を馳せているのは、Googleが「Q学習(Q Learning)」と「畳み込みニューラルネットワーク(Convolutional neural network)を組み合わせることで設計したDeep Q-networks(DQN)だ。しかし強化学習問題の枠組みの観点から観れば、この組み合わせの選択は別のあり方でもあり得る。強化学習アルゴリズム深層学習のようなアルゴリズムとの結合を要求するのは、状態あるいは状態対行動の組み合わせが大量にあり得る場合のメモリやデータ量の面で限界に直面してしまうからだ。つまりこの場合の深層学習は、強化学習アルゴリズムで状態や状態対行動の組み合わせの「複合性の縮減」が如何にして可能になるのかという問題設定を前提とした問題解決策として導入されているのである。

これは、言い換えれば「一般化(generalization)」の問題として設定できる。状態や状態対行動の組み合わせの観測データを一般化することで、より広汎な状態や状態対行動の組み合わせに対する近似を構成していくことが求められているのだ。

この問題設定に対する問題解決策として第一に挙げられるのは、DQNでも採用されているように、「関数近似(function approximation)」であろう。それは強化学習問題の枠組みにおける価値関数をはじめとした目的関数からサンプルを抽出して、そこから関数全体を近似するように一般化を実行していく。関数近似教師あり学習の一種だ。畳み込みニューラルネットワークは、これを可能にする具体例の一つとなるだろう。

しかし抽象化するなら、この一般化問題に対する機能的に等価問題解決策は直ぐに思い付く。例えば観測データから未知のデータをベイズ的に予測する統計的機械学習のモデルは、状態や状態対行動の組み合わせに対しても適用できる。状態や状態対行動の組み合わせに関する観測データから未知の潜在的な構造を推定することによって、より効率的に報酬を探索していくこともまた、状態や状態対行動の組み合わせに伴う複合性への対処法となるはずだ。

問題解決策:統計的機械学習のボルツマンマシン

統計的機械学習(statistical machine learning)問題の枠組みでは、観測したそれぞれのデータ点の出現確率に関する未知の生成モデル(generative model)を入力された観測データ点の集合から推定する。未知の生成モデルからその確率分布に準じて観測するデータ点が生成されているという発想は、ベイズにおいてもお馴染みの考え方だ。

観測者は当初、生成モデル形式を知らない。故にまずはパラメタθを前提とした学習モデル(learning model)となるP(X|θ)を仮定するところから分析が始まる。そして、観測したデータ点は$$X = {x_1, x_2, …, x_n}$$となり、パラメタθに依存した学習モデルを調節することで生成モデルを再現していく。最終的に学習モデル生成モデルの近似として形式化される。

この点、生成モデルはまさにベイズでも言及される「事前分布(prior distribution)」に他ならない。推定される生成モデルの近似としての学習モデルは「事後分布(posterior distribution)」に対応する。最大事後確率(Maximum a posteriori; MAP)推定を単に採用するだけでも、生成モデルベイズ的に推定することが可能になる。

マルコフ確率場(Markov random field; MRF)」は、統計的機械学習問題の枠組みにおける学習モデルの一つと見做されている。この概念は、ベイジアンネットワークでも縁のある「グラフ(graph)」と「ノード(node)」の区別を導入することで特徴付けられている。

グラフとノードの差異

グラフ概念は、更に「有向グラフ(directed graph)」と「無向グラフ(undirected graph)」に区別される。

誤解を招くことを恐れずに言えば、この二つのグラフ概念は、UMLのクラス図における「関連」概念とよく似ている。有向グラフが関連の誘導可能性を明示的に限定している関連であると喩えるなら、無向グラフはその誘導可能性を未規定にして表現する。同じようにクラス図で喩えるなら、ノードオブジェクトに対応すると言える。また、関連付けること一般を「リンク(link)」と呼ぶ。

グラフ内の無向リンク集合をεとするなら、n個のノード$$Ω = {1, 2, …, n}$$によって構成された無向グラフはG(Ω, ε)と表せる。例えばノードiとjの無向リンクは{i, j}あるいは{j, i}となる。有効ではないため、双方は同一の関連を意味する。

エネルギー関数

これを前提に言えば、マルコフ確率場無向グラフG(Ω, ε)における確率モデルとなる。i番目のノード確率変数$$X_i \in {0, 1}$$が対応する。$$i \in Ω$$に関する$$X_i$$の実現値となる$$x_i$$のベクトルを$$x = {x_1, x_2, …, x_n}$$とした場合、無向グラフから次のようなエネルギー関数(energy function)を記述できる。

$$Φ(x) = – \sum_{i \in Ω}^{} \phi_i(x_i) – \sum_{{i, j} \in ε}^{} \psi_{ij}(x_i, x_j)$$

ここで、$$\sum_{i \in Ω}^{} \phi_i(x_i)$$は各ノードに割り当てられたエネルギーを意味する。一方、$$\sum_{(i, j) \in ε}^{} \psi_{ij}(x_i, x_j)$$は各リンク結合に割り当てられたエネルギーを意味する。つまり関連の重み付けを表現している。

エネルギー関数はコストを最小限に抑えるべく最適化される。この関数の出力値は常に低くなるように設計される。言い換えれば、この関数はエネルギーをより低く計算できるようにxを学習していく。

ボルツマン分布

マルコフ確率場は上述したエネルギー関数に準拠した「ボルツマン分布(Bolzmann distribution)」として設定されている。この分布は物理学において分子速度分布を与えるマクスウェル分布を汎化した分布として位置付けできる。全ての可能なxに関する確率の総和$$\sum_x^{}P(X = x)$$の値を1にする規格化定数をZとするなら、マルコフ確率場は当該エネルギー関数の値をより低くするxがより高確率で出現するように調整された確率モデルとして表現される。

$$P(X = x) = \frac{1}{Z} exp(-Φ(x))$$

$$Z = \sum_{x}^{}exp(-Φ(x))$$

ボルツマンマシンのエネルギー関数

マルコフ確率場を前提とするなら、深層学習でも取り上げられている「ボルツマンマシン(Boltzmann machine)」はこの特殊事例として簡単に記述できる。マルコフ確率場エネルギー関数

$$Φ(x) = – \sum_{i \in Ω}^{} \phi_i(x_i) – \sum_{{i, j} \in ε}^{} \psi_{ij}(x_i, x_j)$$

とするなら、ボルツマンマシンエネルギー関数は次のようになる。

$$Φ(x;θ) = – \sum_{i \in Ω}^{} b_ix_i – \sum_{{i, j} \in ε}^{} w_{ij}x_ix_j$$

$$θ = {b, W}$$

$$b = {b_i | i \in Ω}$$

$$W = {w_{ij} | {i, j} \in ε}$$

ここで、bは各ノードに割り当てられたバイアスパラメタを意味する。Wは各結合の重み付けを表すパラメタとなる。無向グラフである以上、$$w_{ij} = w_{ji}$$となる。自分自身への結合は無いため、$$w_{ij} = 0$$となる。

ボルツマンマシンは以上のエネルギー関数の変換を前提として設定される。

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(-Φ(x;θ))$$

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(\sum_{i \in Ω}^{}b_ix_i + \sum_{(i,j) \in ε}^{}w_{ij}x_iy_j)$$

ここでもZ(θ)は規格化定数となる。

バイアスパラメタの機能

バイアスパラメタbは、諸要素に紐付けてエネルギーの高低を振り分ける機能を有している。これは正負の区別を導入することで簡明となる。

$$b_i > 0$$ならば$$x_i = 1$$が比較的エネルギーが低くなる。

$$b_i < 0$$ならば$$x_i = 0$$が比較的エネルギーが低くなる。 そのため、bを調節することでxの値の出現確率の偏りを制御することが可能になる。

重みパラメタの機能

重みパラメタwは、諸関連すなわち各リンクに紐付けてエネルギーの高低を振り分ける機能を持つ。これもまた正負の区別から簡明となる。 $$w_{ij} > 0$$ならば$$x_i = 1, x_j = 1$$の時にエネルギーが比較的低くなる。

$$w_{ij} < 0$$ならば$$x_i = 0, x_j = 0$$の時か、あるいは$$x_i ≠ x_j$$の時にエネルギーが比較的低くなる。

ポップフィールド・ネットワークとしてのボルツマンマシン

ボルツマンマシンは、「ホップフィールド・ネットワーク(Hopfield network)」を拡張した確率的ニューラル・ネットワークとして位置付けできる。

ホップフィールド・ネットワークはマルコフ確率場との兼ね合いから無向グラフG(Ω, ε)上の各ノードのそれぞれをニューロンとして見立てたニューラル・ネットワークを意味する。無向グラフの各リンクがニューラル・ネットワークにおける結合関連を表し、ニューラル・ネットワーク上の信号が無向グラフ上のリンクを表す。

このニューラル・ネットワークはボルツマンマシンと同様のエネルギー関数を持つ。

$$Φ(x;θ) = – \sum_{i \in Ω}^{} b_ix_i – \sum_{{i, j} \in ε}^{} w_{ij}x_ix_j$$

$$θ = {b, W}$$

$$b = {b_i | i \in Ω}$$

$$W = {w_{ij} | {i, j} \in ε}$$

ノードiは、ニューロンとして表現されるために、発火状態に対応した$$x_i = 1$$と非発火状態に対応した$$x_i = 0$$の区別が導入される。各ノードiは0か1かのいずれかの値を持つ。ある時点におけるノードiは結合された全てのノードjから

$$λ_i = b_i + \sum_{j \in N(i)}^{}w_{ij}x_{j}$$

という形式で信号を受信する。N(i)はノードiと結合された他ノード集合を表す。

$$λ_i > 0$$

ならばノードiは発火する。この確率をモデル化したのがホップフィールド・ネットワークとなる。

この関連からボルツマンマシンは$$λ_i$$から$$P(X_i = x_i|λ_i) = \frac{exp(λ_ix_i)}{1 + exp(λ_i)}$$という条件付き分布を算出する。この分布を特に「シグモイド信念(sigmoid belief)」と呼ぶ。この条件付き分布はλを受け取った時点でのノードiの発火状態と非発火状態の分布を表す。信号受信時にノードiが発火する確率は$$P(X_i = 1 | λ_i) = sig(λ_i)$$となる。ノード全体の発火状態と非発火状態の同時分布は平衡分布(equilibrium distribution)を有する。つまり、時間が経過しても確率過程の分布は変異しない。分布は一貫してボルツマン分布となる。

ボルツマンマシンの学習方程式

ボルツマンマシン学習は、統計的機械学習問題の枠組みにおける問題解決策として機能する。つまりボルツマンマシンは、観測したデータ点の集合によって仮定した学習モデルをパラメタθの調節によって構成することで、未知なる生成モデルに近似していくことを以って学習していく。

観測した可視変数と潜在的な隠れ変数の差異

ボルツマンマシン学習は、可視変数(visible variable)と隠れ変数(hidden variable)の区別を導入することで設計される。可視変数観測変数(observable variable)とも呼ばれ、また隠れ変数潜在変数(latent variable)とも呼ばれる。可視変数は観測したデータ点に直接的に関連付く一方で、潜在的な隠れ変数は必ずしも紐付かない。

誤解を恐れずに言えば、隠れ変数関数言語(functional language)で言うところの「副作用(side effects)」を伴わせる内部のメンバ変数であると言えるだろう。この変数は、観測することで入力されたデータ点とは別の内部的な関連から出力に影響を及ぼすのである。

ボルツマンマシン学習は大別して可視変数のみの学習隠れ変数も含めた学習区別される。可視変数のみのボルツマンマシン学習は全ての確率変数を観測したデータ点との関連から計算する。一方隠れ変数を含めたボルツマンマシン学習は更にこれよりも複合的な計算によって実現する。

「隠れ変数なし」のボルツマンマシンの学習方程式

可視変数をVと置く。この場合、全ての確率変数は可視変数であるため、$$V = {v_i|i \in Ω}$$となる。n個の諸要素を有した観測データ点が独立同一分布からN個生成された場合、μ番目の観測データ点を$$V^{(μ)} = {v_i^{(μ)} \in {0, 1}|i \in Ω}$$と表現する。以下では、この観測データ点の集合を参照することでボルツマンマシン学習を実行することを想定する。

エネルギー関数を利用したボルツマンマシン学習は以下のように計算されるのであった。

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(-Φ(x;θ))$$

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(\sum_{i \in Ω}^{}b_ix_i + \sum_{(i,j) \in ε}^{}w_{ij}x_iy_j)$$

観測データ点の諸要素のそれぞれに対して確率変数を一つずつ対応付けるなら、ボルツマンマシンは観測データ点と同じくn個の確率変数$$V = {v_i|i \in Ω}$$を有した確率モデルとなる。

ボルツマンマシン学習では最尤推定法が採用される。観測データ点集合

$$D = {v^{μ}|μ = 1,2,…,N}$$

に対する尤度関数は、

$$l_D(θ) = \prod_{μ=1}^{N}P(V = v^{(μ)}|θ)$$

となる。尤度関数自然対数を取るなら、

$$L_D(θ) = \ln{l_D(θ)} = \sum_{μ=1}^{N} \ln{P(v^{(μ)}|θ)}$$

となる。

上記のPはボルツマンマシンが観測データ点集合Dを生成する確率を表す。統計的機械学習問題の枠組みで求められる問題解決策は、観測データ点集合を参照することで生成モデルを再現する方法に他ならない。故にこの最尤推定法の採用によってボルツマンマシンに要求されるのは、観測データ点集合Dを最も高い確率で生成することとなる。この要求を満たすボルツマンマシンが、生成モデルに近似されるモデルとなると考えられる。

対数尤度関数の最大点におけるパラメタθの勾配は0となる。したがって勾配が0となるθを求めるなら、$$\frac{\partial L_D(θ)}{\partial b_i} = \sum_{μ=1}^{N}v_i^{(μ)} – NE_{P(V|θ)}[v_i]$$

$$\frac{\partial L_D(θ)}{\partial w_{ij}} = \sum_{μ=1}^{N}v_i^{(μ)}v_j^{(μ)} – NE_{P(V|θ)}[V_iV_j]$$

$$E_{P(V|θ)}[f(V)] = \sum_{V}^{}(f(v))P(V|θ)$$

Eはボルツマンマシンにおける期待値を表している。

勾配が0となるのは、$$\frac{\partial L_D(θ)}{\partial b_i} = 0$$と$$\frac{\partial L_D(θ)}{\partial w_{ij}} =0$$が成立する場合となる。故に対数尤度関数の最大値は次の連立方程式の解となる。

$$\frac{1}{N}\sum_{μ=1}^{N}v_i^{(μ)} = E_{P(V|θ)}[V_i]$$

$$\frac{1}{N}\sum_{μ=1}^{N}v_i^{(μ)}v_j^{(μ)} = E_{P(V|θ)}[V_iV_j]$$

この方程式において、左辺は観測データ点の標本平均を意味する。双方とも観測データ点集合を参照することで得られることから、まさに可視変数と言える。一方、右辺はボルツマンマシン期待値となる。つまりこの連立方程式が言い表しているのは、観測データ点の標本平均にボルツマンマシン期待値を近似させることに他ならない。この近似を以って、ボルツマンマシン学習したことになる。一連の方程式は特に「学習方程式(learning equation)」と呼ばれる。

「隠れ変数なし」のボルツマンマシンの組み合わせ爆発

ボルツマンマシン学習方程式を解くことは解析的に困難とされる。そのため勾配上昇法(gradient ascent method)で反復的に解析されることとなる。

しかしより重要な問題となるのは学習方程式における期待値だ。ボルツマンマシンにおける期待値の計算は全ての確率変数の可能な組み合わせの総和となる。n個の確率変数を持つボルツマンマシンにおける期待値の計算は$$2^n$$の項の和の計算となる。そのためボルツマンマシン計算量はnに比例して爆発的に増加する。

この計算問題は、文字通り「組み合わせ爆発(combinatiorial explosion)」の問題として設定される。そのため、学習方程式では期待計算それ自体もまた近似によって実施される。だがただ近似を求めれば良いという訳ではない。これに加えて、勾配上昇法で反復的に計算する以上、1回のスループットの速度も向上させられるような近似値計算法が求められる。

「隠れ変数あり」のボルツマンマシンの学習方程式

何らかの理由から観測データ点の諸要素の一部が欠損して得られない場合や、そもそもデータ収集が不十分である場合、「可視変数のみ」のボルツマンマシンでは学習を実施することができない。一部のデータが不可視であることを前提とした学習方程式が必要になる。

n個の諸要素で構成された観測データ点がN個、観測したデータモデルから独立に生成されたとする。この時、ボルツマンマシンは(n m)個の確率変数を持つと仮定する。この場合、mは隠れ変数の個数に等しい。つまりm個分のデータ点が観測したデータ点に対応しないということだ。この対応しない変数が隠れ変数となり、対応する変数が可視変数となる。

ボルツマンマシンでは、これらの可視変数隠れ変数がそれぞれノード番号の集合として表現できる。可視変数側のノード番号集合を$$V = {1, …, n}$$とするなら、隠れ変数側は$$H = {n + 1, …, n m}$$となる。ノード全体の集合をΩとするなら、$$V \cup H$$となる。確率変数Xの1, 2, 3のノード番号が可視変数で、4, 5のノード番号が隠れ変数に対応するなら、Xは次のように表現できる。$$X = {V_1, V_2, V_3, H_4, H_5}$$無論、ノードの個数が5個であるとは限らない。個数をiと置くなら、$$X = {X_i | i \in Ω}$$で、これに対応する可視変数は$$V = {V_i | i \in V}$$となり、隠れ変数は$$H = {H_i | i \in H }$$となる。Xに対応するボルツマンマシンはVとHの同時分布に他ならない。したがって、$$p(X = x | \theta) = p(V = v, H= h | \theta) = \frac{1}{Z(\theta)}exp(-Φ(V, H;\theta))$$となる。ここで、vはVの実現値で、hはHの実現値となる。これもまたボルツマンマシンの一種であるため、以下の式と変わりは無い。

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(-Φ(x;θ))$$

「隠れ変数あり」のボルツマンマシン学習もまた「隠れ変数なし」の場合と同様に最尤推定法で実施される。尤も、観測したデータ点に対応していない隠れ変数があるため、「隠れ変数なし」の場合とは異なるアルゴリズムが必要になる。

「隠れ変数あり」の場合は、以下のように、隠れ変数において周辺化した可視変数のみの分布を利用する。

$$p(v | \theta) = \sum_{h}^{}p(v, h | \theta)$$

この周辺分布の変数は観測データ点全てに対応している。したがって「隠れ変数なし」の場合と同様に対数尤度関数を記述することが可能になる。

$$L_D(θ) = \ln{l_D(θ)} = \sum_{μ=1}^{N} \ln{P(v^{(μ)}|θ)}$$

「隠れ変数なし」においても、この関数を最大化するパラメタθの値が最尤推定量となる。

カルバック-ライブラー・ダイバージェンス

この最尤推定量は、「カルバック-ライブラー・ダイバージェンス(Kullback-Leibler divergence; KL divergence)」を導入することで、情報量の視点から再記述することができる。

KLダイバージェンスは確率変数Xに対する二つの異なる確率分布$$P_0(X)$$と$$P_1(X)$$の間にある「差異」、言い換えれば「非類似性」を表現する量を意味する。

$$D_{KL}(P_0||P_1) = \sum_{x}^{}P_0(x) \ln \frac{P_0(x)}{P_1(x)}$$

KLダイバージェンスは$$D_{KL}(P_0||P_1) \geq 0$$であると共に、$$P_0(X) = P_1(X)$$の時のみ$$D_{KL}(P_0||P_1) = 0$$となる。

経験分布を前提としたボルツマンマシンの学習方程式

これを前提に、観測データ点の頻度分布となる経験分布(empirical distribution)を定義する。観測データ点の集合Dの経験分布は次のようになる。

$$q_D(V = v) = \frac{1}{N}\sum_{μ=1}^{N}σ(v, v^{(μ)}), \begin{equation}σ(d, e) =\left \{\begin{array}{l} 1 (d = e) \\ 0 (d \neq e) \end{array}\right. \end{equation}$$

この経験分布を利用すると、上述したボルツマンマシンの対数尤度関数は次のように変換できる。

$$L_D(θ) = \ln{l_D(θ)} = \sum_{μ=1}^{N} \ln{P(v^{(μ)}|θ)} = N\sum_{v}^{}q_D(v) \ln p(v|\theta)$$

この最尤推定法はKLダイバージェンスを最小化することと等価となる。

$$D_{KL}(q_D||p) = \sum_{v}^{}q_D(v)\ln\frac{q_D(v)}{p(v|\theta)}$$

対数尤度関数のbとwのそれぞれに対する勾配は、次のようになる。

$$\frac{\partial L_D(θ)}{\partial b_i} = N\sum_{v, h}^{}x_ip(h|v, \theta)q_D(v)\ln\frac{q_D(v)}{p(v|\theta)}$$
$$\frac{\partial L_D(θ)}{\partial w_{ij}} = N\sum_{v, h}^{}x_ix_jp(h|v, \theta)q_D(v) – NE_{p(V, H|\theta)}[X_iX_j]$$

勾配を0とする条件により、「隠れ変数あり」の場合のボルツマンマシン学習方程式は、以下のようになる。

$$\sum_{v, h}^{}x_ip(h|v,\theta)q_D(v) = E_{p(V, H|\theta)}[X_i]$$
$$\sum_{v,h}^{}x_ix_jp(h|v,\theta)q_D(v) = E_{p(V, H|\theta)}[X_iX_j]$$
$$\begin{equation}X_i =\left \{\begin{array}{l} V_i (i \in V) \\ H_i (i \in H) \end{array}\right. \end{equation}$$

すなわち、ノードiが可視変数隠れ変数かによって確率変数Xの変換過程が左右されている。

p(h| v, θ)は可視変数が与えられた場合の隠れ変数が与えられる条件付き分布であるため、確率乗法定理により、$$p(h|v, \theta) = \frac{p(v, h|\theta)}{p(v|\theta)}$$となる。

「隠れ変数あり」のボルツマンマシンの組み合わせ爆発

「隠れ変数あり」のボルツマンマシン学習では、「隠れ変数なし」のボルツマンマシンに比して「組み合わせ爆発」の問題が派生し易い。

「隠れ変数なし」、つまり「可視変数のみ」のボルツマンマシン学習方程式観測データ点では単純における標本平均とボルツマンマシン期待値を如何に近付けるのかが問われた。これに対して、上述した「隠れ変数あり」のボルツマンマシン学習方程式では、右辺がボルツマンマシン期待値であることに変わりは無いが、左辺は複合化している。

「隠れ変数あり」のボルツマンマシン学習方程式の左辺は、次のような形式になっている。

$$\sum_{v, h}^{}f(v, h)p(h|v,\theta)q_D(v)$$

これを変形するなら、$$\frac{1}{N}\sum_{μ=1}^{N}\sum_{h}^{}f(v^{(μ)}, h)p(h|v^{(μ)}, \theta)$$となる。

ここで、$$p(h|v^{(μ)}, \theta)$$は可視変数の値をμ番目の観測データ点で固定した場合に得られる隠れ変数の条件付き分布を意味する。したがってこの形式は「隠れ変数のみ」で構成されている別様のボルツマンマシンであると言える。つまり上述した「隠れ変数あり」のボルツマンマシン学習方程式計算するには、まず各観測データ点における隠れ変数の条件付き分布を計算することで、それに対応する期待値を算出しておく必要がある。この観測データ点ごとの算出結果の平均として計算した結果が、「隠れ変数あり」のボルツマンマシン学習方程式における左辺であるということになる。

したがって「隠れ変数あり」のボルツマンマシンの場合は、左辺でも右辺でも「組み合わせ爆発」の問題が派生し得るということになる。隠れ変数存在ボルツマンマシン学習を至難の極みにしてしまう。隠れ変数の有無とは関係無しに、ボルツマンマシン学習は「組み合わせ爆発問題を解消する「近似」の方法を要求している。

マルコフ連鎖モンテカルロ法のギブスサンプラー

ボルツマンマシンは、「可視変数のみ」であれ「隠れ変数あり」であれ、組み合わせ爆発問題を派生させる。組み合わせ爆発問題を回避するには、ボルツマンマシン期待値を近似的に計算する必要がある。

ボルツマンマシン期待値の近似方法として導入できる方法の一つに、「マルコフ連鎖モンテカルロ法(Markov chain Monte Carlo method; MCMC method)」の「ギブスサンプラー(Gibbs sampler)」がある。

MCMC法は、マルコフ性を背景としたモンテカルロ法だ。MCMC法はベイズ統計学をはじめとした様々な統計学の分野で利用されている。この方法は、とりわけ期待計算に応用される傾向にある。背景にあるのは、「マルコフ連鎖(Markov chain)」と呼ばれる確率過程の収束に関する性質だ。

時点tにおける確率変数を$$x^{(t)}$$と表す。確率過程$$(x^{(0)}, x^{(1)}, …, x^{(n)}, …)$$を仮定する。$$x^{(t)} (t = 0, 1, …, n, …)$$の集合をXと表す。$$i_n$$を時点nにおける状態を表すとすれば、この確率過程が全ての$$i, j \in X$$と$$t \geq 0$$に対して、$$p(x^{(t 1)} = j|x^{(0)} = i_0, x^{(1)} = i_1, …, x^{(t-1)} = i_{(t-1)}, x^{(t)} = i)$$$$ = p(x^{(t 1)} = j|x^{(t)} = i)$$を満たす場合、この確率過程はマルコフ連鎖の関係にある。マルコフ連鎖はt + 1の時点における条件付き確率分布が時点tよりも前の過去の状態には依存しない確率過程である。言い換えれば、マルコフ連鎖確率過程では、各状態は直前の状態にしか依存しない。この性質を特に「マルコフ性」と呼ぶ。

マルコフ連鎖モンテカルロ法は、このマルコフ性を前提としたモンテカルロ法意味する。それは言い換えれば、データxが与えられた時に事後分布P(θ|x)からパラメタθをサンプリングする方法となる。

$$p(θ|x) = \frac{p(x|\theta)p(\theta)}{p(x)}$$

MCMC法のうち、特に「ギブスサンプラー(Gibbs sampler)」はボルツマンマシンで積極的に活用されている。ギブスサンプリングはマルコフ性を応用することにより、エネルギー関数同時分布に従って確率変数に対応するサンプルを多数発生させることを可能にする。ボルツマンマシンはあるノードの状態が周囲のノードによる影響のみによって確率的に変化するという点で局所的なマルコフ性を有している。そこでボルツマンマシンは、ギブスサンプリングによって、任意の初期状態(x, y)から開始して、以下の計算を反復する。

  1. xの新しい値を条件付き分布p(x|y)から選択する。
  2. yの新しい値を条件付き分布p(y|x)から選択する。

ギブスサンプリングでは、xとyを交互に固定した上で、そこから条件付き分布を求めてデータ点を抽出していく。言い換えれば、ギブスサンプリングは条件付き分布に従って変数の値を確率論的に逐次更新していく方法意味する。

ギブスサンプラーのベクトル表現

あるパラメタθが与えられた時にモデル分布p(x|θ)に従うxをアトランダムに生成させることを想定しよう。i番目以外の全ノードの変数を配列したベクトルを$$x_{_i}$$と表し、この値を指定した場合の変数$$x_i$$の条件付き分布$$p(x_i|x_{_i}, \theta)$$を計算していく。すると条件付き分布は$$p(x_i|x_{_i}, \theta) = \frac{p(x, \theta)}{\sum_{x_i=0, 1}^{}p(x, \theta)}$$となる。ボルツマンマシンエネルギー関数との関連から、

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(-Φ(x;θ))$$

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(\sum_{i \in Ω}^{}b_ix_i + \sum_{(i,j) \in ε}^{}w_{ij}x_iy_j)$$

ここでもZ(θ)は規格化定数となる。

これらを上述した条件付き分布に代入すると、$$p(x_i|x_{_i}, \theta) = \frac{exp((b_i + \sum_{j \in N_i}^{}w_{ij}x_j)x_i)}{1 + exp(b_i + \sum_{j \in N_i}^{}w_{ij}x_j)}$$となる。ここでNはi番目のノード結合する全てのノード集合となる。つまり、i番目以外の全てのノードの状態を指定した条件付き分布は、Nのノードのみを状態として指定した条件付き分布から導き出すことが可能だ。各変数の条件付き分布の計算はこれにより一律に効率化できるようになる。

ギブスサンプラーは、こうして各変数xのサンプリングを逐次的に反復していくことで元々の同時分布p(x|θ)に従うxの値を抽出していく。

コントラスティブ・ダイバージェンス法

よく指摘されるように、ギブスサンプラー計算コストが高い。そのため、コストパフォーマンスに見合うか否かは問題視される場合が多い。高い計算コストを支払うだけの価値があるか否かは、アルゴリズム設計において切迫した問題となる。

ジェフェリー・ヒントンも述べているように、ギブスサンプリングは一般に大きな分散を有する。この分散は局地を形成する。たとえ勾配がゼロになろうとも、高い分散の領域からパラメタを斥けてしまう。そしてこの事態は、サンプリング結果がモデルのパラメタに依存しているために、不確定要因として伴い得る。

「平衡分布に由来するサンプルは一般的に非常に高い分散を有する。何故なら、そうしたサンプルはモデルの分布から所嫌わず得られているからだ。」
Hinton, G. E. (2002). Training products of experts by minimizing contrastive divergence. Neural computation, 14(8), 1771-1800. 引用はp1774より。

ヒントンはこの問題設定において、次のような砂と板の比喩でわかり易く解説している。

「この微妙な影響を理解するために、水平のブリキ板を想定してみよう。その板は、一方が強く垂直に振動していて、他方が微動だにしていないといった具合に、共振状態にある。たとえ時間平均的に勾配がいずれにせよゼロになるとしても、その板の上で散在している砂は、動きの無い領域に集積されていくだろう。」
Hinton, G. E. (2002). Training products of experts by minimizing contrastive divergence. Neural computation, 14(8), 1771-1800. 引用はp1774より。

そこでヒントンは、代替案として、「コントラスティブ・ダイバージェンス(Contrastive Divergence; CD」を提案している。この方法は正確で効率的に近似することが可能なパラメタの導関数に関わる。

CDの方法は単純極まりない。最初に可視変数としてセットする$$v^{(0)}$$をMCMC法のようにアトランダムに初期化するのではなく訓練サンプルとして$$v^{(0)} = v_n$$としてセットする。その上でギブスサンプラー同様に隠れ変数可視変数のサンプリングをk回反復していく。経験的にkは1で良いとされる。ボルツマンマシンでは、こうして抽出されたvとhを利用することで、期待値の近似に役立てる。

機能的拡張案:制限ボルツマンマシン

CD法との関連から言えば、「制限ボルツマンマシン(Restricted Boltzmann Mathine; RBM)」は、組み合わせ爆発問題の回避策として有効に機能する。制限ボルツマンマシン「隠れ変数あり」のボルツマンマシンの一種だ。ボルツマンマシン同様、隠れ変数複合性が高まれば、それだけモデルの表現能力も高まる。

グラフ理論的に言えば、制限ボルツマンマシンの各ノード完全二部グラフ(complete bipartite graph)として構成されている。つまり制限ボルツマンマシンの各ノードは二層構造を形成している。一方の層は可視変数のみで構成された「可視層(visible layer)」で、他方の層は隠れ変数のみで構成された「隠れ層(hidden layer)」となる。

可視層の全てのノード隠れ層の全てのノードリンクを結んでいる。各ノード結合は双方向の無向エッジである。だが可視層ノード同士のリンク隠れ層ノード同士のリンクは一切形成されずに制限される。可視変数の個数をn、隠れ変数の個数をmとするなら、制限ボルツマンマシンはn個の諸要素を有した観測データ点の集合を参照することで学習していくモデルとなる。

可視変数隠れ変数のそれぞれをVとHで表し、可視変数のバイアスをb、隠れ変数のバイアスをcと表すなら、制限ボルツマンマシンエネルギー関数は次のようになる。

$$\Phi(v, h; \theta) = – \sum_{i}^{}b_iv_i-\sum_{j}^{}c_jh_j-\sum_i^{}\sum_j^{}w_{ij}v_ih_j$$

ボルツマンマシンエネルギー関数同様、次のように変換して表現することもできる。

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(-Φ(x;θ))$$

$$P(X = x|θ) = \frac{1}{Z(θ)}exp(\sum_{i \in Ω}^{}b_ix_i + \sum_{(i,j) \in ε}^{}w_{ij}x_iy_j)$$

$$p(v, h | \theta) = \frac{1}{Z(θ)}exp(\sum_{i}^{}b_iv_i + \sum_{j}^{}c_jh_j + \sum_{i}^{}\sum_{j}^{}w_{ij}v_ih_j)$$

条件付き独立性

制限ボルツマンマシンは「条件付き独立性(Conditional Independence)」を有している。確率変数Yを条件としたある確率分布が$$p(X_1, X_2, …, X_n|Y) = \prod{i=1}^{n}p(X_i|Y)$$のように、積の形式表現できる場合、XやYの下で条件付き独立である。制限ボルツマンマシンの場合、可視層隠れ層の関係が条件付き独立性を形成する。つまり、可視層が固定された場合には隠れ層が、隠れ層が固定された場合には可視層が、それぞれ条件付き独立により積の形式計算可能になる。

$$p(h|v, \theta) = \frac{p(v,h|\theta)}{p(v|\theta)} = \prod_{j}^{}p(h_j|λ_j)$$

$$p(v|h, \theta) = \frac{p(h,v|\theta)}{p(h|\theta)} = \prod_{i}^{}p(v_i|λ_i)$$

$$λ_i = b_i \sum_{j}^{}w_{ij}h_j$$
$$λ_j = c_j \sum_{i}^{}w_{ij}v_i$$

この可視層隠れ層条件付き独立性の背景にあるのは、可視層ノード同士のリンク隠れ層ノード同士のリンクが一切形成されないという、制限ボルツマンマシンの「制限」たる所以だ。この条件付き独立により、事実上可視変数を固定した上での隠れ変数のサンプリングと、隠れ変数を固定した上での可視変数のサンプリングを交互に反復することで、ギブスサンプリングが可能になる。

制限ボルツマンマシンの学習方程式

制限ボルツマンマシン「隠れ変数あり」のボルツマンマシンの一種であるため、学習方程式もこれに準拠している。基本的には、まず隠れ変数を周辺化することで可視変数のみの分布を求めた上で、そこから隠れ変数の分布を求めていくという手順を踏む。ただし制限ボルツマンマシンの場合は完全二部グラフを採用しているために、計算処理が単純化される。

隠れ変数Hについて周辺化した可視変数Vの分布は次のようになる。

$$p(v|\theta) = \sum_{n}^{}p(v, h|\theta)$$

$$=\frac{1}{Z(\theta)}exp(\sum_{i}^{}b_iv_i \sum_{j}^{} \ln(1 + exp(λ_j)))$$

観測データ点の集合をDとするなら、$$D = {v^{(μ)}|μ=1, 2, …, N}$$となる。

この集合と上記の可視変数の周辺分布を使用して、対数尤度関数のパラメタθに関する勾配を求めるなら、以下のようになる。

$$\frac{∂L_D(\theta)}{∂b_i} = \sum_{μ=1}^{N}v_i^{(μ)} – NE_{p(V, H|\theta)}[V_i]$$
$$\frac{∂L_D(\theta)}{∂c_j} = \sum_{μ=1}^{N}sig(λ_j^{(μ)}) – NE_{p(V, H|\theta)}[H_j]$$
$$\frac{∂L_D(\theta)}{∂w_{ij}} = \sum_{μ=1}^{N}v_i^{(μ)}sig(λ_j^{(μ)}) – NE_{p(V, H|\theta)}[V_iH_j]$$
$$λ_j^{(μ)} = c_j \sum_{i}^{}w_{ij}v_i^{(μ)}$$

これらの勾配を0にする前提で、制限ボルツマンマシン学習方程式は次のように導出できる。

$$\frac{1}{N}\sum_{μ=1}^{N}v_i^{(μ)} = E_{p(V, H|\theta)}[V_i]$$
$$\frac{1}{N}\sum_{μ=1}^{N}sig(λ_j^{(μ)}) = E_{p(V, H|\theta)}[H_j]$$
$$\frac{1}{N}\sum_{μ=1}^{N}v_i^{(μ)}sig(λ_j^{(μ)}) = E_{p(V,H|\theta)}[V_iH_j]$$

通常の「隠れ変数あり」のボルツマンマシン学習方程式に比して、少なからず観測データ点の標本平均に対応する左辺の計算は簡易化されている。しかし、右辺の期待計算では依然として組み合わせ爆発問題可能性を孕んでいる。そのため、制限ボルツマンマシンであっても、やはり近似計算は必要とする。その近似方法にはギブスサンプラーのみならずCD法も採用される。ここで用いられるCD法は制限ボルツマンマシン条件付き独立性を利用した近似学習方法となる。

機能的拡張案:深層信念ネットワーク

確率論的な深層学習は、この制限ボルツマンマシンを何層にも積み上げた構成として設計される。それを一般に「深層ボルツマンマシン(Deep Boltzmann Mathine; DBM)」と呼ぶ。尤も、深層ボルツマンマシン深層学習の研究史上初のモデルとされる「深層信念ネットワーク(Deep Belief Network; DBN)」を再設計したアルゴリズムとしても位置付けられている。そのため、まずは深層信念ネットワークを確認しておいた方が良いだろう。

深層信念ネットワークも、ボルツマンマシン同様にノードを層状に配置する。ただし、無向エッジなのは最上位層のみで、その他のノードは有向エッジとしてリンクされる。情報は上位層から階層へと一方通行の形式で伝播される。それにより、最下層の可視層の状態が決定される。制限ボルツマンマシンに比して、隠れ層が多数追加されているために、複合的な生成モデルにも対応できるようになっている。R個の隠れ層を持つ深層信念ネットワークは次のような確率モデルで表現される。

$$p(v, h |\theta) = p(h^{(R-1)}, h^{(R)}|W^{(R)})(\prod_{r=0}^{R-2}p(h^{(r)}|h^{(r + 1)}, W^{(r + 1)}))$$

ここで、r=0は可視層を表す。$$p(h^{(R-1)}, h^{(R)}|W^{(R)})$$は、最上位の2層の同時分布となるため、$$p(h^{(R-1)}, h^{(R)}|W^{(R)}) = \frac{1}{Z(W^{(R)})}exp(\sum_{i \in H^{(R-1)}}^{}\sum_{j \in H^{(R)}}^{}w_{ij}^{(R)}h_i^{(R-1)}h_j^{(R)})$$となる。一方、$$p(h^{(r)}|h^{(r + 1)}, W^{(r + 1)})$$はその他の層同士の条件付き分布となるため、$$p(h^{(r)}|h^{(r + 1)}, W^{(r + 1)}) = \prod_{j \in H^{(r)}}^{}p(h_j^{(r)}|\sum_{k \in H^{(r + 1)}}^{}w_{jk}^{(r + 1)}h_k^{(r+ 1)})$$となる。

深層信念ネットワークの学習

深層信念ネットワーク学習は、初めにネットワーク全体の学習を実行するのではなく、2層ごとに逐次学習していくという「事前学習(pre-learning)」の形式を採る。

Le Roux, N., & Bengio, Y. (2008). Representational power of restricted Boltzmann machines and deep belief networks. Neural computation, 20(6), 1631-1649. p7より。

事前学習では、まず可視層と第一層目の隠れ層にのみ着目して、その他の層は度外視することになる。その上で学習方程式により計算を実行する。そして次に、第一層目の隠れ層と第二層目の隠れ層の組み合わせに着目することで、度はこれらの隠れ層のみの学習方程式計算していく。この時、第一層目の隠れ層は疑似的な観測データ点と見做される。この疑似的な観測データ点は、本来の観測データ点と区別させるために、「特徴点(feature point)」と呼ばれることもある。

全体がR層で構成された深層信念ネットワークの場合、r=0からr=R-2までの層は隣接する上位層と有向エッジでリンクしている。その間の条件付き分布は次のようになる。

$$p(h^{(r)}|h^{(r + 1)}) = \prod_{i}^{}\delta(b_i^{(r)} + \sum_{j}^{}w_{ij}^{(r + 1)}h_j^{(r + 1)})$$

最上位層は制限ボルツマンマシンと同様の構造となるため、r=R-1とr=Rの層の同時分布は制限ボルツマンマシンの分布関数と等価となる。

しかし、深層信念ネットワークには隠れ変数間にリンクがあると共に、層数も多い。そのため、隠れ変数の条件付き分布は制限ボルツマンマシンほど容易には計算できない。そこで、制限ボルツマンマシン同様に、隣接する層間の条件付き分布は次のように近似される。

$$p(h_j^{(r)}|h^{(r-1)}) = \delta(b_j^{(r)} + \sum_{i}^{}w_{ij}^{(r-1)}h_i^{(r-1)})$$

機能的拡張案:深層ボルツマンマシン

深層ボルツマンマシンは、制限ボルツマンマシンを何層にも積み上げた構造を有している。だがその事前学習形式深層信念ネットワーク拡張として捉えることができる。

深層ボルツマンマシンの事前学習

Salakhutdinov, R., Hinton, G. E. (2009). Deep boltzmann machines. In International conference on artificial intelligence and statistics (pp. 448-455). p451より。

深層ボルツマンマシン事前学習における基本的な手続きは、深層信念ネットワークのそれと大差は無い。ただし上図のように、深層ボルツマンマシンの場合はグラフ構造に若干の修正が加えられる。可視層である最下層と最上層のグラフの場合、事前学習深層信念ネットワークと同様の形式で進められる。だがそれ以外の隠れ層同士のリンクでは、条件付き分布の計算が変更される。例えば層r=1の場合の可視層の条件付き分布は、$$p(v_i|h^{(1)}) = σ(b_i + \sum_{j}^{}w_{ij}^{(r)}h_j^{(1)})$$となる。深層信念ネットワークと変わりは無い。一方、中間層の場合の条件付き分布は、$$p(h_j^{(r)}|h^{(r-1)}) = σ(c_i^{(r)} 2 + \sum_{j}^{}w_{ij}^{(r)}h_i^{(r-1)})$$となる。ただし、可視変数のバイアスはbと表し、隠れ変数のバイアスはcと表している。この2倍の数値は、中間層rがr + 1の層とr-1の層の双方から入力を受け取ることを反映している。深層ボルツマンマシンは、こうして計算されたパラメタを初期値として設定する。

平均場近似

この事前学習以降は、得られた初期値を前提として、深層ボルツマンマシン全体の最尤推定法を近似的に計算していく。ここでも計算コストや組み合わせ爆発問題が派生するために、ギブスサンプラーをはじめとした近似計算方法を利用していく。尤も、深層ボルツマンマシンでは、その性質上、ギブスサンプラーよりは「平均場近似(mean-field approximation)」の方が積極的に活用される。深層ボルツマンマシンには隠れ層同士の相互リンクが形成される。そのため、制限ボルツマンマシンほどには容易に条件付き分布を計算することができない。平均場近似はこの計算の負担軽減として機能する。

平均場近似は、深層ボルツマンマシンのような変数間に相互依存関係があるグラフィカルモデルに対して、それらの諸変数が互いに独立であるという仮定を導入することで、各変数の周辺分布を近似計算する方法だ。

2層の隠れ層を持つ深層ボルツマンマシンを仮定するなら、条件付き分布は次のように近似できる。

$$p(h^{(1)}, h^{(2)}|v) \approx q(h^{(1)}, h^{(2)}|v) = \prod_{j}^{}q(h_j^{(1)}|v)\prod_{k}^{}q(h_k^{(2)}|v)$$

この近似分布は異なる隠れ層隠れ変数が互いに独立であるという仮定を指し示している。この形式表現することが可能な分布は、確かに無数に挙げられる。だが平均場近似はその中で最も容易に期待値を計算できるテスト分布とカルバック-ライブラー・ダイバージェンス的に類似する値を最適化によって探索する。すなわち、確率変数Xに対するテスト分布は、$$q(X) = \prod_{i \in \Omega}^{}q_i(X_i)$$と仮定し、ボルツマンマシン期待計算に最もカルバック-ライブラーダイバージェンス的に近い族を探索することで、その分布をボルツマンマシンの近似とする。つまり、$$D_{KL}(q || p) = \sum_{x}^{}q(x) \ln\frac{q(x)}{p(x|\theta)}$$が最小となるq(X)を求めることになる。ただし規格化条件として$$sum_{x_i = 0, 1}^{}q_i(x_i) = 1$$となる。

積層自己符号化器の機能的等価物としての制限ボルツマンマシン

深層ボルツマンマシンで利用する制限ボルツマンマシンは、深層学習における一種の「自己符号化器(Autoencoder)」として捉えることができる。制限ボルツマンマシンを用いた深層ボルツマンマシン事前学習自己符号化器を下層から逐次的に積み上げていくため、そのモデルは「積層自己符号化器(stacked autoencoder)」となる。

自己符号化器は教師あり学習のように目標となる出力の伴わない入力だけの訓練データからデータの特徴を抽出することで、データの良き表現方法学習するニューラルネットワークの一種である。単純な例として、フォワードプロパゲーションのニューラルネットワークを想定する。入力xがそのまま入力層の出力となるため、出力層の出力yが$$y = f(wx b)$$として規定される。wは層の重み、bはバイアス、fは活性化関数意味する。ここで、この単層ネットワークの入力層と同一の構造を持つ出力層を持つような2層ネットワークを想定してみよう。このネットワークでは、入力層と出力層が同数のノードを持つことになる。新たに追加した層の重みを$$\tilde{w}$$とし、バイアスを$$\tilde{v}$$とするなら、このネットワークでは、最初の層では入力xをyに変換して、次の層ではそのyを再度入力xと同じ形式に戻すべく変換が実行される。つまり、$$\tilde{x} = \tilde{f}(\tilde{w}y \tilde{b})$$となる。入力時の変換と出力時の変換を纏め上げるなら、$$\tilde{x}(x) = \tilde{f}(\tilde{w}f(wx b) \tilde{b}$$となる。

自己符号化器は、この重みとバイアスを調整することにより、入力に対する出力値が元の入力値に近付けるようにする。この時、xに対して規定される中間層の出力yをxの符号(code)と呼ぶ。そして、最初の変換となる$$y = f(wx b)$$を符号化(encode)と呼び、次の変換となる$$\tilde{x} = \tilde{f}(\tilde{w}y \tilde{b})$$を復号化(decode)と呼ぶ。自己符号化器は、この符号化復号化を可能にするニューラルネットワーク意味する。

積層自己符号化器は、このニューラルネットワークとしての自己符号化器を何層にも積み上げることで「深い(deep)」ネットワークとして構築した自己符号化器である。この自己符号化のメリットは、復号化されたデータにあるのではない。むしろこの復号化部分となる出力層を除去した入力層と中間層の符号化部分にこそ有用性がある。と言うのもこの符号化処理は、言わば入力情報の次元削減表現として機能するからだ。この表現は一種の内部表現ではある。だが何層にも積み上げた自己符号化器を前提とするなら、この内部表現は次の層への入力情報として指し示すことになる。すると、更に低次元の内部表現を抽出することが可能になる。こうして自己符号化再帰的に反復していくことで得られる符号化部分の層を積み重ねていくと、その多層の階層型ネットワークは一種の特徴抽出器として機能するようになる。

深層ボルツマンマシン自己符号化器としての制限ボルツマンマシンアルゴリズム設計においてもまた、符号化復号化区別が導入される。ここで、制限ボルツマンマシン隠れ変数の周辺分布$$p(h|\theta) = \sum_{v}^{}p(h|v, \theta)p(v|\theta)$$を想定しよう。これは可視変数の周辺分布であるp(V|θ)から条件付き分布p(H|V, θ)に従って生成された分布として位置付けられる。この条件付き分布p(H|V, θ)は下層から上層を生成する確率分布に他ならない。一方、逆に隠れ変数の周辺分布を元に条件付き分布p(V|H, θ)を計算するなら、$$\tilde{p}(v) = \sum_{h}^{}p(v |h, \theta)p(h|\theta)$$となる。ここでいうp(V|H, θ)は上層から下層を生成する確率分布に他ならない。ここから、$$p(v|\theta) = \tilde{p}(v)$$であることがわかる。つまり、可視変数の分布p(V|θ)をp(H|V, θ)に従って隠れ変数符号化する一方で、次に実行したのは逆にp(V|H, θ)に従って復号化することが可能なのである。

制限ボルツマンマシンはこの意味で観測データ点の確率分布に関する自己符号化器であると言える。この自己符号化器としての制限ボルツマンマシンによって事前学習を実行する深層ボルツマンマシンは、この確率分布に関する自己符号化器を多層に積み重ねたモデルであるということになる。

スポンサーリンク