encoding(データエンコーディング)のセクションを紹介します。基底エンコーディング振幅エンコーディング角度エンコーディングまとめより深く学ぶ人向けにデータエンコーディングとは量子コンピュータの文脈においてエンコーディングとは、古典データを量子コンピュータ上で操作できるように量子ビットに情報を書き込むことを指します。量子機械学習に限らず量子計算では、量子ビットに対して何らかの操作が定義された量子回路に入力を与えて出力を得ることが目的です。そのため機械学習で使われる古典データセット(株価などの数値や画像)は量子回路の入力とするためには量子ビットで表現される必要がありエンコーディングの出番となります。主なデータエンコーディングの手法それでは古典データを量子ビットにエンコードする手法としてテキストで紹介されている3つの手法を紹介します。基底エンコーディング振幅エンコーディング角度エンコーディング基底エンコーディング基底エンコーディングとは古典データの$N$ビット列をそのまま量子ビットに置き換える方法です。4量子ビットを用いて実数$x$を基底エンコーディングすると以下のように表すことができます。|3\rangle=|0011\rangleつまり古典データセット$\Chi$は重ね合わせを用いて以下のように表すことができます。ここで$x^{(m)}$はNビット列表現です。|\Chi\rangle=\frac{1}{\sqrt{M}}\sum_{m=1}^M|x^{(m)}\rangle基底エンコードの特徴は以下の通りです。基底エンコーディングは古典ビット列をそのまま量子ビットに焼き直すので、原理的に古典コンピュータが実行可能なビット列に対する全ての演算が可能です。理論上どんな古典アルゴリズムでも量子コンピュータ上で効率的に実装可能で、量子ビット特有の重ね合わせによる並列計算で効率的に計算が可能な場合は量子加速が期待できます。振幅エンコーディング振幅エンコーディングとは古典データを量子ビットそのものではなく確率振幅に書き込む方法です。$N=2^n$次元ベクトル$\mathbf{x}$を振幅エンコードして、量子状態$|\psi_x\rangle$を生成すると以下のようになります。\sum_{j=0}^{N-1}x_j|j\rangleただし量子状態の確率振幅の二乗和は1になる必要がある(量子力学の公理)ためベクトル$\mathbf{x}$は規格化されている必要があります。M$行列)場合、以下のようにエンコードされます。x_N^{(M)})振幅エンコードの特徴は以下の通りです。NM$個で済むことが最大の特徴です。古典データの情報を失う実行可能な操作に厳しい制限がかかってしまう振幅エンコーディングではデータを確率振幅に書き込みますが、この情報を私達が知るためには対象の量子状態を測定して確率分布を求める必要があります。確率分布の値は振幅の二乗和の値なので、もともとの値は失われていることになります。エンコーディング対象のデータは規格化されている必要がある点も考慮が必要なため、振幅エンコーディングは量子計算では頻繁には使われていないようです。角度エンコーディング角度エンコーディングとは古典データを量子ゲートのパラメータに書き込む方法です。$N=2^n$次元ベクトル$\mathbf{x}$を角度エンコードして、量子状態$|x\rangle$を生成すると以下のようになります。\bigotimes_{i=0}^{N}\cos{x_i}|0\rangle+\sin{x_i}|1\rangleこの操作をユニタリ変換として表現する場合Y軸回転ゲートとして表現することが可能です。\cos{x_i}\end{bmatrix}振幅エンコードの特徴は以下の通りです。量子回路の深さを少なく抑えることができるエンコーディングは並列に実行可能な回転ゲート操作のみで済むため効率的に操作が可能な点が最大の特徴です。多数の量子ビットが必要1つの量子ビットで1つのデータ点しか扱えないため、データ点が増えるほど必要な量子ビット数も増加します。encodingという相対位相を用いた手法が紹介されていますが、コンセプトは角度エンコーディングと変わりません。まとめ量子コンピュータにおけるデータエンコーディングの手法はアルゴリズムの効率を決める一因となる非常に大切なプロセスで、今回取り上げた以外にも多くの方法が考えられています。データエンコーディングは「必要な量子ビット数」と「状態準備に必要な操作の複雑度」というトレードオフの関係の妥協点を見つける必要があるため、万能な手法は存在しません。量子アルゴリズムを勉強する上でなぜこのエンコーディング手法が採用されているのかを考えることがベストな手法の勘を養う第一歩かもしれませんね。TokyoのYoutubeチャンネルにてConnpass上で開催した勉強会の様子がアップされているのでぜひこちらもご覧ください。Circuitsとは、量子回路の途中で測定を行い、その結果に応じてそ...2023.06.07量子コンピュータ量子コンピュータQiskit-Terraの開発環境を準備する(Windows/Mac対応)量子コンピューターのOSSであるQiskitの開発に参加してみたいという方向けに、開発前の環境準備についてご紹介します。量子コンピュータの応用先の一つとして物理系のシミュレーション(何らかの基礎方程式に従う系の時間発展の追跡)が期待されてい...2022.06.16量子コンピュータ量子コンピュータ【Qiskit】グローバーのアルゴリズムをゼロから実装する量子アルゴリズムとしてよく登場するグローバーのアルゴリズムをQiskitを使ってゼロから実装する方法を紹介します。コメントをキャンセルメールアドレスが公開されることはありません。※サイト上に表示された文字を入力してください。Advocate量子コンピュータのコミュニティ運営・イベント登壇にて活動中。本ブログの内容は個人の意見であり、会社を代表するものではありません。量子コンピュータお問い合わせ。