メインコンテンツへスキップ

関連する機械学習手法のレビュー

このセクションでは、量子機械学習のワークフローをより深く理解するために役立つ、古典的機械学習における主要な用語と手法を振り返ります。まず一般的な用語を紹介し、その後カーネル法(特にサポートベクターマシンの文脈で)とニューラルネットワークという2種類の機械学習について詳しく説明します。これらの手法には確かに共通点がありますが、ここおよび後のレッスンで説明する量子ワークフローの違いを踏まえ、それぞれ独立したものとして扱います。 これはあくまで概略的なレビューであり、多くの細かい点については省略します。機械学習のより包括的な概要については、[1-3] などのリソースをお勧めします。

機械学習の種類

簡単に定義すると、機械学習はデータのパターンや関係性を分析し、そこから推論を引き出すアルゴリズムの集まりです。大まかに言って、機械学習アルゴリズムは、扱うデータの種類とアルゴリズムが明示的なプログラムなしに学習する方法に応じて、主に3つのカテゴリーに分類できます。

  1. 教師あり学習: 教師あり学習では、モデルの訓練に使用されるデータにラベルが付いています。このアルゴリズムの目標は、データとそれに対応するラベルや出力との関係を学習し、未知のデータにも汎化することです。このクラスの代表的なタスクには、分類と回帰があります。
  2. 教師なし学習: 教師あり学習とは対照的に、教師なし学習ではラベルなしデータを使って機械学習モデルを訓練します。このアルゴリズムの目標は、データに隠れたパターンや構造を発見することです。このクラスのアルゴリズムには、クラスタリングや次元削減アルゴリズムがあります。敵対的生成ネットワーク(GAN)や変分オートエンコーダーなどの生成モデルもこのカテゴリーに含められることがあります。
  3. 強化学習: この機械学習カテゴリーのアルゴリズムは、環境と相互作用するエージェントによって定義されます。エージェントは行動を取り、報酬や罰という形で環境からフィードバックを受け取ります。このフィードバック機構を通じて、エージェントは特定のタスクを実行するための適切な行動の組み合わせを学習していきます。

教師あり学習と教師なし学習の図解。

左の画像は、教師あり学習のようにラベル付きデータが2つのカテゴリーに分かれている様子を示しています。この場合、カテゴリーは線形分離可能です。右の画像はデータのクラスターを示しています。教師なし学習のタスクでは、これらのデータは最初ラベルが付いておらず、アルゴリズムは分布を調べ、おそらくクラスターを探します。アルゴリズムが識別するであろうクラスターの例を可視化するために、データポイントにはラベルが付けられています。2つの主な違いは、教師あり学習のプロセスはデータにあらかじめラベルが付いた状態で始まり、教師なし学習のプロセスはラベルなしデータから始まる点です(たとえ最終的にデータにラベルが付けられるとしても)。

機械学習への「量子」の導入

ここから、機械学習に「量子」がどのように導入されるかを探っていきます。この大まかな分類では、処理デバイス上のモデル/アルゴリズムの種類と、それに提供されるデータの種類を考慮します。上の図は、考えられる組み合わせをまとめたものです。

一方の軸にアルゴリズム、もう一方の軸にデータを配置した象限図。それぞれが量子または古典のいずれかである。

たとえば、CCとは、古典的なデータセット(画像、音声、テキストなど、古典コンピューターに保存できるもの)を持ち、かつ古典的なコンピューターを使って機械学習アルゴリズムを実行することを意味します。これはまさに古典的機械学習の設定です。一方、QQとは、量子コンピューターを使って量子データを処理することを意味します。ここで「量子データ」はいくつかの意味を持ち得ますし、文脈に依存することもあります。量子データとは、量子デバイスから得られた測定結果の集合と考えることもできますし、別のアルゴリズムによって量子コンピューター上で準備された状態を指すこともあります。将来的には、現在は存在しないQRAM(量子ランダムアクセスメモリ)に保存されたデータを指す可能性さえあります。研究者が量子機械学習について語るとき、彼らは通常CQの領域を指しています。つまり、手元のデータセットは古典的で、機械学習アルゴリズムを実行する処理デバイスは量子コンピューターという状況です。本コースの以降の部分では、そのようなアルゴリズムに焦点を当てます。

サポートベクターマシン

ここでは、古典的機械学習の観点から、サポートベクターマシンと呼ばれるアルゴリズムのクラスを振り返ります。後ほど、このアルゴリズムに量子コンピューティングをどう組み込むかを示します。

サポートベクターマシンの図。

図に示すように、2次元特徴空間を持つデータセットでの2値分類タスクを考えてみましょう。このデータセットの分類を行う一つの方法は、2つのクラスを分離する直線、より一般的には超平面を見つけることです。実際には、分離超平面は無数に存在するため、問題はどのように最適なものを定義するかです。ここでの考え方は、特に優れた決定境界とは、各クラスの最近傍点までの距離として定義されるマージンを最大化するものであるというものです。この設定では、決定境界までの距離が最も小さいデータポイントをサポートベクターと呼びます。

線形決定境界はさまざまな方法で記述できますが、最もわかりやすい一つの方法は、以下の f1f_1 に示すものです。ここで、Θ\Theta は超平面を定義するパラメーターの集合、x\vec{x} はデータセット、bb は定数シフトです。Φ\Phi は入力データ点の空間からの写像であり、多くの場合(ただし必ずしもそうではありません)より高次元の空間への写像です。この写像については後ほど再び説明します。

モデル f1f_1 において、Θ\Theta はモデルが学習すべきチューナブルなパラメーターのベクトルです。これを「主問題(プライマル定式化)」と呼びます。数学的な操作によって、同じ問題を別の方法で定式化できることが示せます。これを「双対定式化(デュアル定式化)」と呼び、以下の式 f2f_2 で表されます。この定式化では、アルファパラメーターに対して最適化を行う必要があります。主な違いは、主問題では式に特徴ベクトルと学習可能なパラメーターの内積が含まれるのに対し、双対問題では内積が特徴ベクトル同士の間で取られる点です。双対形式には訓練データの特徴と対応するラベルの両方が含まれますが、次のセクションで主問題よりも有用であることがわかるでしょう。

f1(x)=ΘTΦ(x)+bf_1(\vec{x}) = \Theta^T \Phi(\vec{x})+b f2(x)=i=1nαiyiΦT(xi)Φ(x)+bf_2(\vec{x}) = \sum_{i=1}^n \alpha_i y_i \Phi^T(\vec{x}_i)\Phi(\vec{x})+b

カーネル法と量子の役割

以下の動画は、量子が線形分類器においてどのような役割を果たせるかを解説しています。詳細については本文で説明します。

より高次元空間への移行

このサブセクションおよび次のサブセクションでは、高次元への写像についての議論を行います。ここでのポイントは、空間間の写像という文脈で「カーネルトリック」を説明し、量子カーネルとは何かの下地を作ることです。量子波動関数の高次元性がすべての問題を解決するということを主張しているわけでは__ありません__。はじめに述べたように、古典的なガウス特徴マップはすでに無限次元です。データ特徴の次元数は重要ですが、高次元の量子状態だけでは古典的手法に対する改善には不十分です。

グラフ的に見ると、適切な高次元への写像が与えられれば、元のデータが線形分離不可能な場合にもSVMアプローチを一般化できることが容易にわかります。左側の2次元データを見ると、2つのクラスを分離できる線形決定境界が存在しないことがわかります。しかし、特徴空間に3つ目の特徴を追加することを考えられます。この新しい特徴が、たとえば元の2つの特徴 x1x_1x2x_2 の原点からの距離であれば、データは線形分離可能になります。これはまた、この高次元特徴空間でサポートベクターマシンアルゴリズムを正常に実行できることを意味します。

一方のデータ型のリングと、リングの中央を埋める2番目のデータ型を示す図。2番目のセルはデータが3Dに投影されてボウル形状になっている様子を示す。これでデータは線形分離可能になっている。

この「特徴マッピング」も Φ\Phi と表します。特徴マップは、ここに示すように入力データの空間からより高い次元へ写像することが多いですが、より低い次元への写像を利用するモデルやアルゴリズムもあります。高次元への写像は、単に視覚化して理解しやすい例に過ぎません。

x=(x1x2)\vec{x} = \begin{pmatrix}x_1 \\ x_2 \end{pmatrix} Φ(x)=(x1x2x12+x22)\vec{\Phi}(\vec{x}) = \begin{pmatrix}x_1 \\ x_2 \\ {x_1}^2+{x_2}^2\end{pmatrix}

特徴マップによっては、非常に高次元の空間へ写像するものもあります。そのような場合、高次元性のために内積の計算コストが高くなります。この点については後ほど再び説明します。

双対形式がなぜ有用なのか

線形境界モデルの主問題と双対問題の定式化を振り返りましょう。

f1(x)=ΘTΦ(x)+bf_1(\vec{x}) = \Theta^T \Phi(\vec{x})+b f2(x)=i=1nαiyiΦT(xi)Φ(x)+bf_2(\vec{x}) = \sum_{i=1}^n \alpha_i y_i \Phi^T(\vec{x}_i)\Phi(\vec{x})+b

特徴マップを使って高次元空間に移行することで、分離超平面を正常に見つけられるようになることがわかったので、式の元の特徴ベクトル x\vec{x} を特徴マップ済みのベクトルに置き換えることができます。しかし、これを主問題の定式化で行うと、パラメーターと潜在的に非常に高次元の特徴マップの内積を計算しなければならないという問題に直面します。一方、双対問題の定式化では、これらが異なる入力の特徴マップ済みベクトル間の内積に置き換えられることがわかります。

特徴マップによっては、特徴マップ済みベクトルの内積 ΦT(xi)Φ(xj)\vec{\Phi}^T(\vec{x}_i)\cdot \vec{\Phi}(\vec{x}_j) を元の(低次元の)変数 xi\vec{x}_ixj\vec{x}_j のシンプルな関数 k(xi,xj)k(\vec{x}_i, \vec{x}_j) として書くことができる場合があります。Φ\Phi の選択によっては、ΦT(xi)Φ(xj)\vec{\Phi}^T(\vec{x}_i)\cdot \vec{\Phi}(\vec{x}_j) を低次元の内積 xiTxj\vec{x}_i^T\vec{x}_j のシンプルな関数として書けることさえあります。これは計算上非常に有益です。なぜなら、データが線形分離可能な空間にアクセスしながら、高次元での操作コストを避けられるからです。実際、特徴マップ済みベクトルは f2f_2 において内積の形でのみ現れるため、内積を計算するために特徴マッピングを明示的に実行する必要さえないかもしれません。内積を計算する関数 k(xi,xj)k(\vec{x}_i, \vec{x}_j) を「カーネル関数」と呼び、このように特徴マップの計算を避ける方法を「カーネルトリック」と呼びます。実際、特徴マップ済みベクトルが無限次元であっても、カーネルは非常に効率的に計算できる場合があります。

カーネル関数自体は2つの入力データベクトルの関数です。データセット内の各データベクトルのペアをカーネル関数の引数として挿入すると、カーネル行列と呼ばれる対称な半正定値行列が得られます。

k=(k(x1,x1)k(x1,x2)...k(x2,x1)k(x2,x2)...)k = \begin{pmatrix}k(\vec{x}_1,\vec{x}_1) & k(\vec{x}_1,\vec{x}_2) & ... \\ k(\vec{x}_2,\vec{x}_1) & k(\vec{x}_2,\vec{x}_2) & ... \\ \vdots & \vdots & \ddots\end{pmatrix}

カーネル行列を計算したら、二次計画法ソフトウェアや「逐次最小最適化」と呼ばれるアルゴリズムなどの方法を使って最適なパラメーター(αi\alpha_i)を求めることができます。もちろん、これはデータクラスを線形分離可能にする特徴マップに対応する、効率的に計算できるカーネルが存在することを前提としています。関連する新しいアプローチとして、量子カーネル推定があります。

量子カーネル

量子コンピューター、あるいは一般的に量子状態は、「量子カーネル」の非常に自然な定義を可能にします。入力 x\vec{x} を量子状態 Φ(x)|\Phi(\vec{x})\rangle にエンコードするプロセスを特徴マップとして解釈することができます。このプロセスは確かに、古典的な特徴マップと同様に非常に高次元の空間にデータをマップする可能性がありますが、その次元数はエンコード方法に依存します(データエンコーディングのレッスンを参照)。2つの量子状態の内積 ψϕ\langle \psi | \phi \rangle は、状態 ψ|\psi\rangle にあるときに状態 ϕ|\phi\rangle を測定する確率に関連していることを思い出してください。マッピングされた2つのデータ点 Φ(xi)\vec{\Phi}(\vec{x}_i)Φ(xj)\vec{\Phi}(\vec{x}_j) の内積は、結果として得られる回路の十分な数の測定を行うことで推定できます。

カーネルの回路としての抽象的な表現。

コースの後半で見るように、上に示したような量子回路での測定を使ってカーネルを推定し、カーネル行列に対してSVM最適化を古典的に実行して学習可能なパラメーターを求めることができます。

変分量子分類器とニューラルネットワーク

もう一つの近期量子機械学習アルゴリズムは「変分量子回路」(VQC)と呼ばれています。これらの回路が分類タスクに使用される場合、同じ略語が「変分量子分類器」(Variational Quantum Classifiers、これもVQC)を指すために使われることがあります。VQCはしばしば古典的ニューラルネットワーク(NN)に似た構造を活用します。そのような場合は、量子ニューラルネットワーク(QNN)として説明されることがあります。VQCはより一般的なものであり、NN構造に従う必要はないことを理解することが重要です。しかし、量子が既存の機械学習ワークフローで果たす役割を明確にするために、まずNNとのアナロジーから始めます。その後、一般化について説明します。まず古典的ニューラルネットワークを振り返ります。

以下の動画は、ニューラルネットワークの簡単なレビューと、それが変分量子回路とどこで重なるかを紹介しています。これはテキストでさらに詳しく説明されています。

ニューラルネットワークは、脳内のニューロンの構造と機能に大まかに着想を得た計算モデルです。これらのニューロンは、図のノードとして表され、層に組織化され、重みを通じて接続されています。

QML_CR_background_QNN_2ndlayer.png

最初の層は入力層であり、この層のニューロンの活性化 an0a_n^0 は、分析対象のデータ x\vec{x}(たとえば、画像の各ピクセルの濃淡など)から直接入力されます。最終層は分類を記述する出力層です(たとえば、画像が犬である確率90%、猫である確率10%と分類するなど)。

QML_CR_background_QNN_output.png

各層のニューロンは前の層から受け取った信号を処理し、重み wiw_i(図中の接続)を通じて次の層に伝達します。これらのニューロンの1つに着目すると、「パーセプトロン」と呼ばれるニューラルネットワークの構成要素があります。数学的には、パーセプトロンは入力ベクトル x\vec{x} を受け取り、学習可能な重みベクトルとのバイアスを加えた内積を計算します。そして非常に重要なことに、パーセプトロンはこの計算の上に非線形活性化関数(σ\sigma)を適用します。これらの非線形活性化関数は、ニューラルネットワークの優れた表現力にとって不可欠です。別の考え方をすると、層の間に非線形性がなければ、原理的にはニューラルネットワーク全体を一つの大きな行列積として表現できてしまいます。これは単なる線形モデルになってしまい、深いニューラルネットワークが捉えられる複雑なパターンを捉えられなくなります。そのため、非線形活性化関数はニューラルネットワークにとって根本的に重要です。

perceptron_CP.png

以下のような関数

f(x)=σ(wx+b)f(\vec{x}) = \sigma (\vec{w}\cdot \vec{x}+\vec{b})

は、既知のデータ x\vec{x} と非線形な σ\sigma 、および未知の重みベクトル w\vec{w} とバイアス b\vec{b} を使って、すべてのニューロンで計算されます。一般に、すべての層のすべてのニューロン間に非ゼロの重みが存在する可能性があり、層 LL から層 L+1L+1 のニューロン mmnn の間の重みを wm,nLw^L_{m,n} と呼びます。同様に、LL 番目の層の nn 番目のニューロンのバイアスは bnLb^L_n となります。ここでのバイアスは、量子カーネルの議論での bb とは無関係です。

ニューラルネットワークを、ランダムな重みとバイアスの集合から始めるか、既知の合理的な初期設定から始めることができます。そこから、ニューラルネットワークが物事をどれだけうまく分類できているかを確認し、改善することが目標です。コスト関数を使って、ニューラルネットワークが正しい分類からどれだけ外れているかを記述します。コスト関数の定義方法はいくつかあります。ここでは、平均二乗誤差(MSE)を含む一般的な例を説明します。

C(wm,nL,bnL)=1Ni=1Ntrainj=1Noutputs(vi,jpi,j)2C(w^L_{m,n},b^L_n) = \frac{1}{N}\sum_{i=1}^{N_\text{train}}\sum_{j=1}^{N_\text{outputs}}{(v_{i,j}-p_{i,j})^2}

用途によっては、これは訓練データからの画像 ii の出力 jj に対する実際の値 vi,jv_{i,j}(たとえば、「犬」の出力層ニューロンに1.0の値、他のすべてのニューロンに0)と、予測値 pi,jp_{i,j} の差を取ることを意味します。その差を二乗し、すべてのカテゴリーにわたって合計します。これにより、正しいカテゴリーが最も活性化されているかどうかだけでなく、誤った活性化が抑えられているかどうかも捉えることができます。次に、訓練セット内のすべての例にわたって合計し、コストを求めます。

次に、各層間のすべてのニューロン間の重みやすべてのニューロンのバイアスなどのパラメーターを変化させます。勾配降下法などの古典的最適化ルーティンを使って、コスト関数の局所的な最小値を探します。

量子パーセプトロン

パーセプトロンの量子対応物を構築するためには、量子回路で非線形性を実装できるようにする必要があります。これは古典的ニューラルネットワークにおける活性化関数の役割です。追加の工夫なしに量子回路が実装するのはユニタリー演算のみであり、これは単に線形です。量子回路に非線形性を導入するために使える方法はいくつかあります。主な方法の一つは、測定を非線形性の源として使うことです。その他の方法としては、量子フーリエ変換に基づく手法、回路途中での測定や動的回路、および回路から量子ビットをトレースアウトすることなどがあります。

量子ニューラルネットワーク

量子ニューラルネットワーク(QNN)は、まず図のユニタリー層 UU で入力データをエンコードし、次に層間の重みに対応する量子回路(以下の WW)を適用し、最後に測定の層を適用することで動作します。これについていくつかの重要なポイントがあります。

  • データのローディングと重み付けは線形演算です。
  • 測定は非線形です。
  • したがって、古典的なNNと同様に、線形成分と非線形成分の両方があります。
  • 重み回路にはまだ変分パラメーターがあるため、古典的な最小化を行う必要があります。

量子ニューラルネットワークの回路としての表現。

上記のような回路を使って、以下の関数を計算することができます。 fQNN(x)=0U(X)WOWU(x)0f_{QNN}(x) = \langle 0|U^{\dagger}(X)W^{\dagger}OWU(x)|0\rangle この関数は一般的に古典的なNNで説明されている関数 f(x)f(x) と同じではないことに注意してください。特に、この関数は多くの重みの層を含む可能性があり、UU によって量子回路に読み込まれたすべてのデータに適用されます。

一般化

ニューラルネットワークの量子対応物を構築する方法の一つを見てみましょう。このモデルでは、情報の流れが古典的なフィードフォワードニューラルネットワークとは異なります。古典的な設定では、情報は入力から始まり、モデルの出力で終わるように左から右に流れ、モデルを訓練するための逆伝播時には逆方向に流れます。

量子ニューラルネットワーク内のゲートの複数の層を示す図。

しかし、この量子ニューラルネットワークの構成では、データをエンコードするユニタリーブロックが、学習可能なパラメーターを持つ変分ユニタリーブロックの間で繰り返されることがわかります。「データ再アップロード」と呼ばれるこの戦略は、興味深い理論的結果によって裏付けられています。実際、Pérez-Salinas et al. による論文は、複数のデータ再アップロードを使用することで、「単一量子ビットが古典的なサブルーティンの助けを借りて、普遍的な量子分類器を構築するのに十分な計算能力を提供する」ことを示しています。したがって、データ再アップロードはモデルの表現力と表現能力を高めるために使用できる技法であり、量子ニューラルネットワークが複雑な関数を近似することを可能にします。

参考文献

[1] "Reinforcement Learning: An Introduction", Richard S. Sutton and Richard G. Barto, MIT Press, Second Edition, Cambridge, MA, 2018

[2] "Pattern Recognition and Machine Learning", Christopher M. Bishop, Springer, 2006

[3] "Foundations of Machine Learning", Mehryar Mohri, Afshin Rostamizadeh, and Ameet Talwalkar, MIT Press, Second Edition, 2018.