common.title

Overview
Service overview
Terms of service

Privacy policy

Contact

Sign in
Sign up
common.title

量子コンピュータにおけるボルツマンマシン・生成モデル概観

Yuichiro Minato

2021/02/08 22:51

#機械学習

量子コンピュータ

ボルツマンマシンはたびたび量子コンピュータの文脈で出てきます。現在の量子コンピュータはエラーが多く、なかなか確定的な計算ができません。シミュレータと呼ばれる量子コンピュータを模擬的に動かすものは識別モデルを実行できますが、それでも実機での識別モデルの実行は誤り訂正が必要とされ、いまだ技術的な見込みなどが遠いと言われています。

そこで、最近では生成モデルと呼ばれるモデルが量子コンピュータの文脈で主流となっています。これはIBMやGoogleなどの超電導タイプでも、IonQやHoneywellなどのイオントラップタイプでも、また機能特化のD-Waveでも同じです。背景にある考え方はどれも同じで、効率的に生成モデルを学習できるのではと言う考え方があります。

神に見捨てられたモデル

いろいろボルツマンマシンに関する資料を探していたら、どなたかのブログが出てきました。

「確率的なDeep Learning。生成モデル。その1https://i101330.hatenablog.com/entry/2016/10/05/000720

その中で印象的なのが、

「でもボルツマンマシンやばい。計算量がやばい。勾配には、ノード全部の期待値を計算する必要がある。これが指数的に計算量爆発。それを勾配更新の際に何回もすることになるから実用的じゃない。神に見捨てられた。」

とあります。これまでの人間主体のマシンでは見捨てられたモデルが、量子物理学に基づいた量子コンピュータをもって再度俎上に上がるのはとてもワクワクします。

生成モデル

僕は研究者ではありませんが、仕事上機械学習を実務として使う必要があり、現在最も役に立っているのが生成モデルです。

業務上であるものとあるものを判別していくつかのグループに分ける必要があるとして、そのグループ同士の違いを認識して識別する識別モデルと、そのグループそのものを学んで分類する生成モデルがあります。

少しこちらをみてみました。

「Generative Models」 https://openai.com/blog/generative-models/

現在のGPUやCPUのような比較的安定した挙動をするようなマシンと違って量子コンピュータはまだまだ挙動が安定しませんが、参考にしてみたいと思います。

“What I cannot create, I do not understand.” —Richard Feynman

と言うリチャードファインマンの言葉があるようです。生成モデルでは、理解をすると同時に新しくデータを生成できます。ただ、元のデータの分布は元のデータの持つ情報量に比べて明らかに少ない情報量で圧縮をし、展開をします。データの特徴をできるだけ再現できるように極力データの持つ特徴を捉えて効率的にモデルに落とし込む必要があります。

量子コンピュータに対するボルツマンマシンの学習は古くから始まったものではなく、まずはカナダのD-Waveマシンへの実装が進み、その後量子コンピュータへ発展してきました。

自然の背景にある特徴を学び、それを再現できると言う機能はもしかしたら量子コンピュータにマッチするのかもしれません。

一般的な理論

こちらを参考にしたいと思います。

test.png

引用:https://openai.com/blog/generative-models/

あるデータの分布があるとして、一番右側の青が私たちが再現したい実際のデータの分布です。その中で私たちが取れるのは高々有限個数のサンプルで、それが黒い点で示されています。

それらの実際のデータの分布の中にデータが入るのはp(x)となっていて、その分布できるだけ正確に再現します。私たちが作るのは真ん中の緑色のモデル化された分布です。最初はランダムからスタートし、徐々に実際のモデルのサンプルから生成モデルを学んでいきます。

実際に緑の分布を作り出すのは上記の黄色の部分の生成モデルで、生成モデルはあるパラメータを持って、ピンク色のガウス分布から緑の分布を作り出します。

量子コンピュータで作るべき生成モデルも黄色の部分になります。

p(x)のモデル化

上記の現実のデータ分布はp(x)という確率分布はボルツマンマシンの場合には、

p(x)=1ZeE(x)p(x) = \frac{1}{Z}e^{-E(x)}

と言うモデルを適用できます。Zは正規化のための規格化定数で、xと言うパラメータで決まるエネルギーによって確率が決まります。

さらに逆温度パラメータ

上記ではパラメータがちょっともの足りなくて、量子コンピュータではたびたび逆温度パラメータβ\betaが出てきます。

E(x)=βE(x)E(x) = \beta E(x)'

とすると、E(x)のエネルギーは、E(x)'と言うxで決まるエネルギーの他に、β\betaによってもエネルギーの分布を変えることができます。まとめると、

p(x)=1ZeβE(x)p(x) = \frac{1}{Z}e^{-\beta E(x)'}

となります。

イジングモデル

量子コンピュータではイジングモデルという物理の統計モデルを使って、p(x)のモデルを表現できます。E(x)はハミルトニアンHを使って表現できます。イジングモデルでは、局所磁場と相互作用を使ってモデルを作り、

H=hiσi+JijσiσjH = \sum h_i \sigma_i+ \sum J_{ij} \sigma_i \sigma_j

の形で値を設定します。とりうる量子ビットの値によって、上記の確率分布を再現することができます。

制限付きボルツマンマシンRBM

RBMでは、可視層、隠れ層などの層を量子ビットに設定し、モデルをより複雑にします。可視層vと隠れ層hを使って、

p(v,h)=1ZeβE(v,h)p(v,h) = \frac{1}{Z} e^{-\beta E(v,h)}

と表現できます。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_218694_9e5aebfb-918a-74f2-6d50-9f435e01dd1e.jpeg

引用:https://arxiv.org/pdf/1510.06356.pdf

RBMの結合分布は、量子ビットをそれぞれvとhに割り振り、上記イジングモデルの局所磁場hをbとcに、相互作用を結合荷重Wに書き換えて、

E(v,h)=i=1nbivij=1mcjhji=1nj=1mWijvihjここで、vi,hj{0,1}E(v,h) = -\sum_{i=1}^nb_iv_i-\sum_{j=1}^mc_jh_j-\sum_{i=1}^n\sum_{j=1}^mW_{ij}v_ih_j\\ ここで、v_i,h_j\in\{0,1\}

のように表現できます。通常イジングモデルは{-1,+1}の値を取りうるのですが、モデルの計算を簡単にするために、通常は同型写像であるQUBOという{0,1}を取りうる式として書いて、内部で後で{-1,+1}に変換をするということをします。基本的にイジングモデルの問題は{0,1}で書いても問題がありません。

波動関数の収縮とサンプリング

通常古典でサンプリングを行う場合には、上記のエネルギーの分布に関してサンプリングという手法を用いて、データの分布の中から1点を選びます。なかなか綺麗な分布を取るのは大変のようですが、量子コンピュータでは、このエネルギーの分布の関数に対応するような関数を裏で持っており、測定という行為を通じてその固有状態のうちの一つに関数が収縮するという性質があります。

サンプリング手法をまったく考慮する必要がなく、モデルを作って測定をすればサンプリングをしたことに対応します。サンプリングの精度はマシンの性能によりますが、シミュレータ以外でその背後にある波動関数を把握することはできないので、実機ではひたすら回路を実行して測定をするということを繰り返します。

最近Google社がスパコンで1万年かかる計算を200秒で終わらせたというのもこの類のサンプリングの話になります。

生成モデル今後

様々な生成モデルが量子コンピュータ上で提案されています。実機の精度の問題で実装がなかなか難しいところもありますが、理論はどんどん確立されています。

今回紹介したボルツマンマシンの他にも生成モデルは多数提案されており、ボルツマンマシンはハミルトニアンやエネルギー関数を必要としますが、それを必要とせず波動関数を直接利用する生成モデルのタイプなどもあります。

カナダのD-Wave社のマシンはサンプリングが比較的しやすい上、上記のイジングモデルに対応してモデルを構築できるのでRBMなどでたびたびトライをしている人たちもいます。

今後は量子マシンもより多くの種類が市場に投入されます。生成モデルもイジングモデルを介さず、波動関数の確率振幅を直接扱うモデルの研究開発がさらに進みそうだと思います。

© 2024, blueqat Inc. All rights reserved