Quantum Deep Learning を読んだ話
冬コミのネタにならないかなーと思ってQuantum Deep Learning (https://www.microsoft.com/en-us/research/publication/quantum-deep-learning/ )を読んでみたので内容を大雑把にメモしてみる
概要
- 量子コンピュータってなんかすごいらしいし機械学習のアルゴリズムに使ってみたらいい感じじゃないの?
- 量子コンピュータでボルツマンマシンを学習させる
- ボルツマンマシンのモデルのボルツマン分布を推定するための量子アルゴリズム
- 可視ユニットを固定したボルツマンマシンのボルツマン分布を推定するための量子アルゴリズム
- ボルツマンマシンのパラメータ更新のための勾配を求める量子アルゴリズム
- 普通の古典計算だと制限付きボルツマンマシンじゃないと厳しいけどこのアルゴリズムだと全結合ボルツマンマシンでもいけるらしい
みたいな感じです
もうちょっとだけ詳しく
各アルゴリズムについてもう少しだけ詳しくメモ
ボルツマンマシンのモデルのボルツマン分布を推定するための量子アルゴリズム
- 可視ユニットと隠れユニットの状態に応じて量子ビットを回転させたものを重ねあわせることでとりうる状態を全て重ねあわせた量子状態を用意
- 各ユニットの状態に応じてエネルギーを計算
- 最終的に欲しい値とそれ以外の値が確率的に得られる
- 測定された値が目的の値かそうでないかの判別は可能
可視ユニットを固定したボルツマンマシンのボルツマン分布を推定するための量子アルゴリズム
ボルツマンマシンのパラメータ更新のための勾配を求める量子アルゴリズム
- 上2つのアルゴリズムを用いてモデルについて各訓練パターンに対してモデルの分布と可視ユニットを訓練パターンで固定した分布をそれぞれ計算
- 計算によって得られた値を用いて勾配を計算
量子オラクルを用いたボルツマンマシンのパラメータ更新のための勾配を求める量子アルゴリズム
- オラクルを使用し全ての訓練パターンを重ねあわせた入力状態を作る
- その入力状態を可視ユニットを固定したボルツマンマシンのボルツマン分布を推定するための量子アルゴリズムの入力としてアルゴリズムを実行
- その結果とボルツマンマシンのモデルのボルツマン分布を推定するための量子アルゴリズムの結果から勾配を求める
所感
- 夏コミの本で取り上げた手法だと訓練パターンはそのままでニューラルネットワークの状態を取りうる状態全てを重ねあわせて求めるパフォーマンスを実現できるニューラルネットワークを探索で見つけるという感じだったのでそれとこっちのアルゴリズムを組み合わせて訓練パターンも重ねあわせるようにすると夏コミで取り上げた手法が更に高速化できそう
- でも各訓練パターンの結果を足し合わせる部分がネックになって単純に組み合わせるだけでは厳しそう.その辺り上手く足し合わせるアルゴリズムがあればあるいは?
- 逆に今回の手法でボルツマンマシンのパラメータを取りうる値全てで重ねあわせてからの探索とかどうなのか
- 各パラメータに対するボルツマンマシンの評価を上手く与えることができればなんとかなるかも?
- どちらの手法にしても大量のデータを量子の重ねあわせを利用して一気に計算してしまうことで計算を高速化している感じなのでその辺りが機械学習に量子計算を利用するポイントっぽい
- 普通に重ねあわせて結果を測定したのでは量子の重ねあわせを利用する意味がないので計算結果をどのように利用するかがポイントっぽい
- 自分のボルツマンマシンに対する理解が微妙なのでもう一度ボルツマンマシンについて勉強し直してから読み直せばもう少し理解できそう
なかなか面白い内容だったので冬コミでこれをもう少ししっかりと取り上げても良さそうな感じだった.そのためにはもう少し勉強し直して読み込む必要がありそうだけど……