【文献】
Alberto Peruzzo1 et al.,A variational eigenvalue solver on a photonic quantum processor,Nature Communications 5,Springer Nature,2014年07月23日,pp.1-7,https://doi.org/10.1038/ncomms5213,<DOI: 10.1038/ncomms5213>
【文献】
Abhinav Kandala1 et al.,Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets,Nature 549,Springer Nature,2017年09月14日,pp.242-246,https://doi.org/10.1038/nature23879,<DOI: 10.1038/nature23879>
(58)【調査した分野】(Int.Cl.,DB名)
前記システムによって、k−ary量子状態判別のための高確率の多値ラベル分類スキームを特定する第2のコスト関数を決定することをさらに含む、請求項8に記載のコンピュータの情報処理により量子分類器としての浅い回路を実装する方法。
前記システムによって、2値データ分類のためのヒルベルト空間および特徴空間分割を特定する第2のコスト関数を決定することをさらに含む、請求項8に記載のコンピュータの情報処理により量子分類器としての浅い回路を実装する方法。
前記システムによって、k−aryデータ分類のためのヒルベルト空間および特徴空間分割を特定する第2のコスト関数を決定することをさらに含む、請求項8に記載のコンピュータの情報処理により量子分類器としての浅い回路を実装する方法。
前記システムによって、訓練情報に基づいて、前記浅い量子回路のための単純な入力状態を準備する特徴マップを決定することをさらに含む、請求項8に記載のコンピュータの情報処理により量子分類器としての浅い回路を実装する方法。
前記システムによって、ハードウェア効率の良い回路のファミリーから前記浅い量子回路を選択することをさらに含む、請求項8に記載のコンピュータの情報処理により量子分類器としての浅い回路を実装する方法。
【発明を実施するための形態】
【0009】
以下の詳細な説明は単に説明的であり、実施形態または実施形態の適用もしくは使用、あるいはその両方を限定するよう意図されていない。さらには、先の「背景技術」項または「発明の概要」項、あるいは「発明を実施するための形態」項において提示される、いかなる明記または示唆された情報によっても拘束されるよう意図されていない。
【0010】
主題の開示は、量子分類器として浅い回路を実装することを促進するコンピュータ処理システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せを対象としている。主題の開示は、量子コンピューティングおよび機械学習の両方を利用することができる。
【0011】
量子コンピューティングは一般的に、コンピューティング・タスクを実施する際の量子力学的な現象の使用とすることができる。量子コンピューティングの研究は、最も優れた古典的な同等物を超える指数関数的なスピード・アップを実現するいくつかのアルゴリズムを提供してきた。いくつかの量子コンピューティングの研究は、現実世界での適用のある新しいアルゴリズムの発展にフォーカスすることができる。そして、機械学習は一般的に、ある特定のタスクを実施することを明示的にプログラムされることなくその特定のタスク(例えば、入力データを分類すること)を実施することを学習することができる、コンピューティング・システムの発展とすることができる。。
【0012】
上記に基づいて、機械学習において関連する課題にスピード・アップを与えることができる量子アルゴリズムが存在するかどうかを調査することができる。この機械学習と量子コンピューティングとの交わりを、量子機械学習と称することができる。
【0013】
浅い回路は、量子コンピュータ上で効率的に生成することができる。例えば、変分試行状態(VQE)は、量子−古典的ハイブリッド手法で最適化することができるユニタリ量子回路によって生成することができる。ここでは、量子コンピュータを使用して、量子回路からの出力およびサンプルを評価することができる。同時に、量子最適化の課題の観点から機械学習分類の課題を説明することができる。
【0014】
本明細書において説明される技法には、基礎的な事案が分類タスクであり得る2つのシチュエーションがある。これらの2つの学習タスクを、ハードウェア効率の良い浅い量子回路の最適化を使用して解決することができる。これらの学習タスクのうち1つは、異なる量子状態のラベル付けされたサンプルが与えられる場合に判別測定を学習することを含む。この判別測定によって、シングル・ショットにおける量子分布から高確率でサンプルが区別される。複数の測定が行われる可能性がある場合に、これらの学習タスクの別のものは、状態またはサンプルを分類することを含む。
【0015】
分類タスクに関して、教師あり学習シナリオにおけるcクラスのセットC={0,1,2...c−1}に対する分類タスクを考える。このような設定において、訓練セットT、およびテスト・セットSが与えられ、その両方がn次元の有界集合Ω⊂R
nのサブセットT∪S⊂Ωであり、そのような分類を実施するための機械学習処理を開発しているエンティティには未知である可能性がある写像m:T∪S→Cによって、両方がラベル付けされる。セットSおよびTの両方が与えられている一方で、この機械学習処理の開発中は、訓練セットTについてのラベルは既知であり、テストSについてのラベルは未知である。そのため正式には、開発者はインデックス付け写像(indexing map)mの制限m|Tへのアクセスしか有していない:
m|T:T→C,s.t.:m|T(t)=m(t),∀t∈T。
【0016】
次いで開発者は、S,s,s∈Sのあらゆるメンバーについて高確率で
【数1】
となるように、セットSにわたってインデックス付け写像
【数2】
を推論するためにm|Tの情報を使用することを試みる。写像への近似の精度は、分類の成功率v
succ.によって定量化することができ、mと
【数3】
との衝突の数に比例する:
【数4】
【0017】
そのような学習タスクが有意義であると考えられ得る場合、セットSおよびTにわたるインデックス付け写像mの出力に相関があると仮定することができる。少なくともその理由について、原理においては両方のセットは、SおよびTのサンプル・セットT∪S⊂Ωをn次元の分布のファミリー
【数5】
から導くことにより、および分布にしたがって出力をラベル付けすることにより、構築することができると仮定することができる。学習される仮定的な分類関数mが、この方法で構築することができると仮定することができる。しかしこの例において、開発者はラベル付け関数のこれらの分布に直接アクセスしない。開発者には、大きいが有限の数のサンプル、および合致するラベルのみが与えられ得る。
【0018】
これに対するの従来の手法は、パラメータ
【数6】
のセットによってインデックス付けされた古典的に計算可能な関数
【数7】
のファミリーを構築することであり得る。この時、これらの重みは古典的なコスト関数に対する最適化手順(誤差逆伝播法による確率的勾配降下法など)によりm|Tから推論される。さらに、分類プロトコルmを、自由パラメータに応じて量子回路から生成することができるシナリオが開示され得る。
【0019】
一例において、分類関数への近似
【数8】
が構築される。自由パラメータは、測定結果を集めてそれらをコスト関数CFに結合することにより最適化手順を実施することによって、m|Tから推論される。分類プロトコルmが、自由パラメータおよび適切に選ばれた測定演算子(operator)Mに応じて、浅い量子回路
【数9】
から生成され得るというシナリオを考えることができ、演算子Mは、単一の量子ビット測定を用いることによって実装され得る。先の式において、Wは自由パラメータ
【数10】
および
【数11】
に応じた浅い量子回路である。最適なパラメータ値
【数12】
に収束するものとなる古典的な最適化ルーチンを利用することができる。適用することができるいくつかの選択肢が存在する。一例として、コスト関数
【数13】
について焼きなまし法を実施することができる。他の代替法は、Spall(すなわちSPSA)勾配降下アルゴリズム、またはNelder−Mead(すなわちNM)シンプレクス・アルゴリズムであり得る。この手法は、浅い回路
【数14】
のコスト関数を最小化することへの直接的な手法を構成することができる。
【0020】
一例において、3ステップで量子ハードウェアに量子分類器を構築することができる。初めに、データ
【数15】
からのサンプルを、初期の量子状態
【数16】
に対して非線形の特徴マップ
【数17】
を介してマッピングすることができる。次に、浅いハードウェア効率の良い量子回路を初期の量子状態に適用することができ、この量子状態は前述の自由パラメータ
【数18】
に依存しており、最後に量子測定{M
l}
l=1,...cを適用することができる。測定結果から、ラベルを構築することができる。単一の測定結果において、これを「量子状態判別」と称することができ、複数の測定サンプルの集まりから、これを「量子サブ空間タグ付け」と称することができる。プロトコルは、2つのフェーズに分離することができる。プロトコルにおける最初は、ラベル付けされたサンプルが与えられて測定結果がコスト関数に結合される、訓練フェーズであり得る。次にこのコスト関数は、回路用の最良のパラメータを見つけるために最小化することができる。いったんパラメータが見つかると、第2のフェーズ−分類フェーズに移ることができる。分類フェーズにおいて、分類されることになるラベル付けされていないサンプルが与えられる。次に、これらのラベル付けされていないパラメータは、訓練された回路の最適なパラメータにより分類される。
【0021】
いくつかの例において、開示される主題は、さらに大きな特徴空間へのアクセスを可能にする量子回路に基づく、新しい分類器を含むことができる。いくつかの例において、最適な判別測定を、少数のサンプルから学習することができる。いくつかの例において、開示される主題は、大きな特徴空間を利用する分類問題に適用することができる。いくつかの例において、浅い回路の手法は、現在およびすく先の両方の量子ハードウェアに実装することができる。いくつかの例において、関連付けられた変分パラメータを伴うテンソル・ネットワーク、およびコスト関数は、多くのタイプの最適化ルーチンで動作する。いくつかの例において、ハードウェア効率の良い回路は、デバイスの体系的かつ一貫性のあるゲート誤差を訂正する。いくつかの例において、訓練されたシステムは、素早く判断を行うことができる。いくつかの例において、タグ付けは、指数関数的に大きなヒルベルト空間内で起こる。
【0022】
コンピュータ処理システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品あるいはその組合せは、抽象的ではなく人間が一連の精神的な行為として実施することのできない、本質的に高度に技術的な(例えば、機械学習分類器と量子コンピュータとの両方に関する)課題を解決するために、ハードウェアまたはソフトウェアあるいはその両方を採用する。例えば、1人の人間、またはさらには数千人の人間は、機械学習分類器によって処理することができる膨大な量のコンテンツを、効率的に、正確に、かつ効果的に手動で分析することが(画像を分類するなどのために)できない。主題のコンピュータ処理システム、方法、装置、またはコンピュータ・プログラム製品あるいはそれらの組合せの1つまたは複数の実施形態は、浅い回路を量子分類器として利用することを可能にする。浅い回路を量子分類器として採用することにより、既存の機械学習分類器に関連付けられる処理時間または正確さあるいはその両方を実質的に改善することができる。
【0023】
これより、図面を参照して、1つまたは複数の実施形態を説明するが、同一の参照符号は、一貫して、同一の要素を参照するために使用される。以下の記載では、説明を目的として、1つまたは複数の実施形態の徹底した理解を与えるために、多くの具体的な詳細が説明される。しかしながら、様々な場合において、これらの具体的な詳細なく1つまたは複数の実施形態が実践され得ることが明らかとなり得る。
【0024】
図1は、本明細書において説明される1つまたは複数の実施形態によって実装され得る、量子分類器としての浅い回路についての、例示の非限定的な量子コンピューティング・システムを図示している。コンピューティング・システム100に描写されているが、量子コンピューティング・システム106への入力である訓練データ102および分類データ104、ならびに量子コンピューティング・システム106からの出力である出力114がある。量子コンピューティング・システム106は、例示的な量子コンピュータであり、
図2の量子コンピュータ200と
図12のオペレーティング・ハードウェア1201の古典的なハードウェアとの組合せを介して実装することができる。いくつかの例において、また
図2に関して説明されるように、
図2の量子コンピュータ200は、それ自体が量子ハードウェアと古典的なハードウェアとの組合せで実装できることに留意されたい。
【0025】
量子コンピューティング・システム106は、3つのコンポーネント:較正コンポーネント108、コスト関数コンポーネント110、および訓練コンポーネント112を備える。較正コンポーネント108は、浅い量子回路を生成するよう量子ハードウェアを較正するように構成することができ、この構成の例は、
図11の動作1102に関して説明されている。コスト関数コンポーネント110は、機械学習分類器のパラメータについての初期値に基づいて、浅い量子回路のためのコスト関数を決定するよう構成することができ、この決定の例は、
図11の動作1104に関して説明されている。訓練コンポーネント112は、浅い量子回路のためのコスト関数に基づいて、訓練中のパラメータについての初期値をパラメータについての第2の値へと変更するよう構成することができ、この変更の例は、
図11の動作1106に関して説明されている。
【0026】
訓練データ102は、量子コンピューティング・システム106に入力として与えることができ、量子コンピューティング・システム106に実装することができる機械学習分類器を訓練するために使用されるラベル付けされた訓練データであり得る。分類データ104もまた、量子コンピューティング・システムに入力として与えることができ、量子コンピューティング・システム106に実装することができる訓練された機械学習分類器データであり得、訓練データ102で構成されており、また訓練された機械学習分類器によって分類することができるデータであり得る。出力114は、分類データ104を訓練された機械学習分類器上で実行した出力結果であり得、また訓練データ102を機械学習分類器上で実行した出力結果でもあり得る。
【0027】
図2は、本明細書において説明される1つまたは複数の実施形態による、量子分類器としての浅い回路の実装を促進する、例示の非限定的なシステムのブロック図を図示している。コンピューティング・システム200は、時に量子ハードウェアと称される量子コンピュータであり得る。量子ハードウェアは、一般的に1つまたは複数の量子ビット(2状態の量子力学的な系であり、量子ビットは同時的にこれらの状態の両方を重ね合わせたものであり得る)を利用するため、複数の動作を同時的に評価することができる。量子ハードウェアは、1状態の力学系である古典的なコンピュータに相対するものとして考えることができる。
【0028】
より具体的には、コンピューティング・システム200は、超電導量子コンピュータの簡素化した例であり得る。本開示の態様は様々な量子コンピューティング・ハードウェアに実装できること、またこの例示のコンピューティング・システム200の量子ハードウェアは本開示の態様を実装するために利用できるそのような一例に過ぎないことを理解されたい。いくつかの例において、コンピューティング・システム200を使用して、量子コンピューティング・システム106の態様を実装することができる。
【0029】
コンピューティング・システム200は、入力202、機械学習分類器制御ロジック204、制御信号206、量子ビット208、相互作用210、読み出し信号212、機械学習分類器読み出し制御ロジック214、および出力216を備える。入力202は、訓練データ102または分類データ104とすることができ、出力216は、出力114とすることができる。機械学習分類器制御ロジック204および機械学習分類器読み出し制御ロジック214は、いくつかの例において、古典的な制御ロジックを使用して実装することができる。機械学習分類器制御ロジック204は、制御信号206を量子ビットに与えることによって、量子ビット208などの量子ビットに対して作用するための一連のゲート演算を供給することができる。機械学習分類器読み出し制御ロジック214は、読み出し信号212の形態で量子ビットからの出力を受信し、これらの出力を処理して出力216を生じることができる。相互作用210などの描写されている相互作用は、量子ビット208などの量子ビット同士の相互作用である。
【0030】
量子ビットは、2状態の量子力学的な系であり、量子ビットは同時的にこれらの状態の両方を重ね合わせたものであり得る。量子ビットは、インダクタおよびキャパシタを備える回路(時にIC回路と称される)を介して構築することができる。
【0031】
図3は、本明細書において説明される1つまたは複数の実施形態による、訓練フェーズの間に量子分類器としての浅い回路の実装を促進する、例示の非限定的なコンピュータ実装方法のフロー図を図示している。いくつかの例において、フロー・チャート300は、量子コンピューティング・システム106またはコンピューティング・システム200によって実装することができる。
【0032】
フロー
図300において、コスト関数は、ラベル付けされた訓練セット・データに適用することができる機械学習プロセスに対して、提案されたパラメータについて計算することができる。このコスト関数が十分に収束すると、パラメータは十分に訓練されていると判断される。フロー
図300は、様々な異なる学習スキームのために使用することができる。そのような学習スキームの一例は、量子状態判別であり得る。そのような学習スキームの別の例は、量子サブ空間タグ付けであり得る。量子状態判別と量子サブ空間タグ付けは、一般に、測定結果を評価しコスト関数を計算できるやり方において異なり、そのため、訓練に対する同一の全体的な手法を適用することができる一方で、これらの違いが反映される。
【0033】
302において、浅い試行回路を生成するように、量子ハードウェアを(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)較正することができる。次いで、304において、変分パラメータの初期値が、(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)ハードウェア効率の良い回路用に選ばれる。
【0034】
訓練データは、ラベルにしたがってグループ化することができ、次いで、以下の4つの演算(308〜314)が、(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)訓練データのサンプルのそれぞれに適用される−すなわち、これらの演算が結果ラベル324について繰り返される。特徴マッピング308を実施することができ、その場合、サンプルとそのラベルが与えられると、特徴マップは浅い回路用に単純な入力状態を準備する。
【0035】
量子回路において、特徴マップは、古典的情報
【数19】
の量子状態|Φ〉(ここでは量子ビットレジスタ):
【数20】
【数21】
への単射的なエンコードであり得る。
ここで
【数22】
は、単一の量子ビットのヒルベルト空間であり得、ここで
【数23】
はヒルベルト空間を表し、
【数24】
は複素数を表している。積状態の特徴マップを利用することができるが、この特徴マップは、特徴マップを実装する量子回路(いくつかの例において)上のすべての量子ビット上で、単一の量子ビット回転U(θ)∈SU(2)から構成され得る。そのような回転は、単一の量子ビット・ゲートを駆動するように適切に設定されたマイクロ波パルスを送信することにより、単一のトランズモン量子ビット上に実装することができる。量子ビットの角度は、個々の量子ビットについてのオイラー角の空間への非線形関数
【数25】
とすることができ、その結果、特徴マップ全体は、個々の量子ビットについて
【数26】
にしたがって実装することができ、ゆえに、すべての量子ビット状態について
【数27】
である。
【0036】
そのような実装形態の一例は、StoudenmireとSchwabによる古典的な分析において使用される特徴マップのユニタリ実装形態であり得、ここでN=n量子ビットが使用されるよう、量子ビットは
【数28】
の単一のコンポーネントxiをエンコードする。いくつかの例において、
【数29】
の各コンポーネントは、「グレースケール」値xiに局所的に対応し得る。この単一の値は、量子状態:
【数30】
によって表すことができる。
【0037】
この例では、
【数31】
は、すべての量子ビットについて同一のマップであり得、単一のコンポーネントに依存し、ゲートは
【数32】
に対応し、式中、Yは、従来のパウリY演算子であり得、単一の量子ビット回転として直接的に実装できることに留意されたい。
【0038】
特徴マッピング308の後に、最初に選定されたいくつかの変分パラメータを用いて、ハードウェア効率の良い回路ファミリーから、浅い回路を適用することができる310(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。結果は、測定することができ312(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)、ここでは、回路の出力統計が測定されて、適切なコスト関数に割り当てられる(ここでは複数のコスト関数が使用できる場合であるが、または単一のコスト関数を使用できる場合は単一のコスト関数に割り当てられる)。次いで、結果は、コスト関数に追加することができる314(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。
【0039】
演算が結果ラベルについて繰り返されること324に加えて、演算はまた、訓練データについて繰り返されてもよい322(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。ラベル付けされた訓練データ306は、複数のラベル付けされた訓練データを含むことができ、データを特徴マッピング308に与えることができ(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)、対応するラベル情報を与えてコスト関数を更新すること314ができる(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。
【0040】
314においてコスト関数が更新された後、コスト関数が適切に収束したかどうかに関して判断を行うこと316ができる(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。コスト関数が適切に収束していると判断される場合、現在訓練で使用されているパラメータが、訓練320を通じて判断されたパラメータとして指定される320(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。代わりに、コスト関数が適切に収束していないと判断される場合、更新規則が適用されて、新しいパラメータを決定することができる318。この更新規則は、古典的な最適化ルーチンに基づくものであってもよい。演算304、および308〜318は、描写されるように、318において十分な収束に達するまでループし得る。
【0041】
図4は、本明細書において説明される1つまたは複数の実施形態による、分類フェーズの間に量子分類器としての浅い回路の実装を促進する、例示の非限定的なコンピュータ実装方法のフロー図を図示している。いくつかの例において、フロー・チャート400は、量子コンピューティング・システム106またはコンピューティング・システム200によって実装することができる。
【0042】
フロー・チャート400の分類フェーズは、フロー・チャート300の訓練フェーズが実装された後に、実装することができる。訓練フェーズが完了した後、訓練フェーズの間に決定された変分パラメータを、次いで分類フェーズで入力データ用のラベルを決定するために使用することができる。フロー・チャート300と同じように、フロー・チャート400は、量子状態判別および量子サブ空間タグ付けの両方を含む様々な異なる学習スキームに適用することができる。分類フェーズでは、量子サブ空間タグ付けスキームは、ラベルを決定するために複数の測定結果が結合されるという点において、一般的に量子状態判別スキームとは異なっている。
【0043】
分類するサンプルを決定することができ、分類するデータ402を特徴マッピングに供給することができる404(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。特徴マッピング404は、データを入力量子状態として準備する(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。次いで、浅い量子回路406を実行することができ、フロー・チャート300の訓練フェーズで決定された変分パラメータを用いて実行することができる(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。回路の出力を測定することができ408(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)、分類ラベルをデータに割り当てることができ、そのラベルを報告することができる412(例えば、量子コンピューティング・システム106またはコンピューティング・システム200によって)。いくつかの例において、404〜408が複数の結果ラベルについて繰り返される414。
【0044】
量子状態判別および量子サブ空間判別に関して、利用する判別器(量子状態判別の場合)または分離平面(量子サブ空間タグ付けの場合)を決定するために以下の手法を用いることができる。
【0045】
いくつかの例において、最適な状態判別器を決定するために、古典的な分散pc(x)のラベル付けされたファミリーのいずれかから導かれる、ラベル付けされたアンサンブルを考えることができる。サンプルは、特徴マップ
【数33】
を使用してマッピングすることができ、式中、Nは、量子コンピュータのヒルベルト空間の次元であり得、古典的な情報をサンプルについての量子状態へ圧縮している。結果では、C
Nに関する以下の状態のセットの複数のコピーがアクセスされ得る:
【数34】
【0046】
アンサンブルを受信した後、対応するラベルm|Tもまた受信され得る。そのように、2つのアンサンブル
【数35】
(訓練)および
【数36】
(テスト)の多くのコピーがアクセスされ得るが、ここでテスト・セットは、もはやラベル:
【数37】
【数38】
を有していない。
【0047】
ここで、最終的なラベル付けマップ
【数39】
を決定するための一般的な戦略は、訓練セットに対して一連の測定を行い、統計を収集し、アンサンブルをラベル付けする判別規則を思いつくことであり得る。訓練サンプル|y
c〉∈Tについて、POVM{Mc’}c’は、結果c’を確率:
P(c’|y
c):=Tr(M
c’|Φ(y
c)〉〈Φ(y
c)|
Φ)=〈Φ(y
c)|M
c’|Φ(y
c)〉
で取得するために適用することができ、この確率分散にしたがってラベル付けすることができる。2つの例示の分類シナリオが考えられ、一方は、結果をラベルについて推定される確率分布にしたがって導くことができるものである−これは標準的な量子状態判別と等価であり得る。代替的な例示の分類シナリオも考えることができ、その場合、結果を最大の確率で導くことができ、ひいてはアンサンブルが置かれているサブ空間を区別(また「タグ付け」)しようと試みる。両方のシナリオは、例示のフレームワークにおいてよくフィットし、測定戦略およびコスト関数の観点で異なっている。
【0048】
シングル・ショットの2値判別器の、第1の例示の分類シナリオに戻ると、ここで直交する2結果測定値M={M
0,M
1|M
0+M
1=1}を使用して例えば、
【数40】
および
【数41】
などの2つの状態ρ
0ρ
1を判別することができる。釣り合ったセットの平均の量子状態は
【数42】
と書くことができる。回路の出力分散から導かれるシングル・ショットの測定値、または等価的に
【数43】
の仮定される使用を、次いで2結果測定値Mを構築するために使用することができる。出力分散から得られる単一の結果によって、2つのアンサンブルρ
0ρ
1を区別する確率P
distは、
【数44】
で与えられる。理想的な分散p
0/1の完全な情報を有することの理論上の限界において、結果として得られる状態を区別する確率P
distは、
【数45】
によって束縛することができ、
=式中、(p
0≧p
1)であれば特性関数I
p0≧p1は1であり、そうでなければ0である。そして:
【数46】
である。したがってP
distはp
0とp
1の合計の変動距離に関して束縛することができ:
【数47】
となり、上式は、基本的な分解限界(resolution limit)を与える。有限な数のサンプルが受信されるシナリオにおいて(各クラスのうち等価な数)、実際の訓練セットTは
【数48】
で与えられるρ
0、ρ
1の近似値であり得る。
【0049】
測定W
†MWが適用されると仮定し、
【数49】
が浅い量子回路とする。さらに、この例において、Mは、計算基底における単純な2値結果測定値に対応するよう選ばれる。これは例えば、i∈{0,1}についての
【数50】
によるパリティ測定、または最も近くの2つのコード・ワードに合致しうる古典的なデコーダであり得る。多くの他の単純な測定値が構築され得る。次いで、以下の等式が得られ:
【数51】
これは
【数52】
と書き直すことができる。
【0050】
2結果のシングル・ショットのシナリオについての最適な判別手順は、上記の確率を最小化することによって与えられ得る。
【0051】
これらの項は非負であるため、誤差確率P
errの最小値は、以下のコスト関数の最小値に一致する:
【数53】
これは手持ちの分類タスクについての自然なコスト関数を構成する。
【0052】
以下の例は、シングル・ショットの多値ラベル判別器を伴う。この例において、またシングル・ショットの2値判別器に関連して、最終的な測定値Mを、複数の区画に対応するよう変更することができる。この変更は、複数のやり方で達成することができる。例えば、ある場合は、やはり計算基底で、すなわちパウリ−Zが対角的である基底で測定することを選ぶことができ、次いで、M
lがまた計算基底において対角的であるCl=|z|modcを法とするハミング重みにしたがって、結果z∈{0,1}
Nをラベル付けすることなど、測定サンプルから古典的なラベルを構築する。代替的に、ある場合は、N量子ビットのパウリ群の要素である
【数54】
についての量子スタビライザ(quantum stabilizer)
【数55】
などの交換測定値(commuting measurement)を構築することができ、これは[g
i,g
j]=0を変換し、次いで誤差訂正スキームにしたがって測定することができる。
【0053】
次いで、結果として得られる測定演算子は、
【数56】
によって与えられ、ここでl
iは、lのi表現バイナリi=1におけるi番目のビットを表している。いずれかの手法において、結果として得られる最小化されるコスト関数は、次いで、古典的な最適化ルーチンを使用して、ファミリー
【数57】
の全ての浅い回路にわたって
【数58】
であり得る。
【0054】
次に量子サブ空間タグ付けに戻ると、分離平面を決定するために以下の手法を利用することができる。ゴールは、上で議論した2つの密度行列同士の最適な分離平面を見つけることであり得る。換言すると、目的は、適切なサブ空間をサポートするそれぞれの状態を正しいラベルに割り当てることができるように、2
nのサブ空間それぞれを0と1で示す(またはタグ付けする)ことであり得る。同一状態の複数のコピーへのアクセスが存在し得るため、「勝者独り勝ち」のシナリオを考えることができ、その場合、結果を最大の確率で次のように導くことができる(ここでargmaxは複数の値の最大値を特定する):
【数59】
【0055】
これは、l=1,...,cについての測定値M
lの結果の統計から最大の結果の確率を推定するために、複数のサンプルを取ることに対応している。cでラベル付けされたサンプルTのサブセットT
cをラベル付けすると、全体の期待される誤分類率は
【数60】
によって与えられ得る。この分類スキームのための適切なコスト関数を決定することができる。
【0056】
次に2値ラベル分類の例に戻ると、2つのラベルおよび奇数Nに対して第1の分類を実施することができる。サンプルs∈T
cについての誤差確率
【数61】
は、有限のサンプル数を導くことによって推定することができる。ラベルにわたる出力分散PからR個のサンプルを取り、r
c個のサンプルをラベルcで導くことを仮定する。この時、argmax規則にしたがってラベルcを誤分類する確率は
【数62】
によって与えられ得る。
【0057】
Rが大きいものと仮定すると、これを正確に計算することは困難なことがある。R
pc=a、R
pc(1−pc)=b
2を設定し、かつ変数
【数63】
(式中、γはガンマである)を定義すると、二項式のCDFを誤差関数erf:
【数64】
として近似することができる。
【0058】
グラフ600は、これをさらに図示している。誤差関数は結果的にシグモイド:
【数65】
で近似することができ、
【数66】
を与える。
【0059】
したがって、{Mc}cPOVMの適切な選択により我々が最小化を目指すコスト関数は、この時
【数67】
によって与えられ、式中、p
cはラベルc=0、lであるTにおけるすべてのsについてのNにわたって推定される。
【0060】
複数のラベル分類について、いくつかの例において、以下の誤差が最適化され:
【数68】
式中、
【数69】
である。
【0061】
出力の確率分布から独立して導かれる度数{n
0,n
1,n
2}を有するN個のサンプルについて、argmaxによるサンプルs∈T0の誤分類の確率は
【数70】
によって与えられ得、式中、最後の不等式は次のように導出することができる:
2n
0<2max(n
1,n
2)=|n
1−n
2|+n
1+n
2=|n
1−n
2|+N−n
0
したがって、
【数71】
と設定すると:
【数72】
となる。
【0062】
現在の例では、これはn
1、n
2に依存している。追加的に、一般的なkラベルのケースを含む例において、γについて単純な分析的な解がない場合がある。したがってこの理由のため、上述の確率は単純に
γ=max
c’({n
c’}
c’/c)
を取ることにより推定することができる。そうして、kラベルのケースについて、コスト関数の項は
【数73】
によって近似することができる。
【0063】
図5は、本明細書において説明される1つまたは複数の実施形態による、量子分類器としての浅い回路を実装するために使用することができる、例示の非限定的なハードウェア効率の良い浅い量子回路の回路表現を図示している。いくつかの例において、回路500を利用して量子コンピューティング・システム106またはコンピューティング・システム200の態様を実装することができる。
【0064】
いくつかの例の浅い量子回路は、N個のトランズモン量子ビットを有する超電導チップなどの一貫的に制御可能な量子力学的システムを利用して、以下の単一の量子ビットおよび複数の量子ビットのゲート
【数74】
から構成されうる浅い量子回路
【数75】
を、回路500に描かれるようなd回繰り返されるドリフトステップの回路を適用することによって準備するが、これは
【数76】
によってパラメータ化された局所的な単一の量子ビット回転
【数77】
から構成されうる。さらには、いくつかの例において、もつれあう相互作用502a、もつれあう相互作用502b、およびもつれあう相互作用502cを次のように適用することができ:
【数78】
式中、
【数79】
であり、すべての
【数80】
について、いくつかの実パラメータ
【数81】
に依存している。もつれあうユニタリ
【数82】
について、複数の選択が存在することがある。例として、手法を図示するために、交差共鳴ゲートが適用され、これは量子ビットkとlとの間のもつれあうユニタリが2つの局所的に有効なハミルトニアンによって生成され得ることを含意し、
h
k.l=aZ
k+bZ
l+c
k.lZ
kZ
l+d
k,l(1−e
k,l)X
k+d
k,le
k,lX
kZ
l
により、XとZの単一の量子ビットのパウリ演算子の組合せとして与えることができる。パラメータa、b、c
k.l、d
k,l、e
k,lは、超電導回路のハードウェアによって決定することができる。これは、自然なドリフト進化(natural drift evolution)Kが、例えば、
【数83】
によって与えられ得、式中、
【数84】
は実験により微調整され得ることを意味する。初期の積状態|0〉
Nに適用されると、単一の量子ビット回転の第1のセットを使用して、そのデータを実装するための単一の量子ビット特徴マップを実装することができる。次に、結果として得られる状態を取得することができ:
【数85】
上式は、回路500の図示的な表現に対応している。このバンバン(bang-bang)制御される浅い回路は、もつれを生成するために制御パルスと許可されたドリフト回数とを適用するKの以後の繰り返しの最大セットに限定されている場合、物理的な量子ハードウェア上に準備され得る一般状態に対応することができる。一般的な手法におけるいくつかの例において、もつれあうユニタリは、バンバン制御パルスを適用することにより、h
k,lから効果的に生成することができるが、これは回路深度を拡大し、制御パラメータにわたって変動を制限することにより追加的なコヒーレント誤差の導入を可能にする。したがって、制御パルスは、固有のドリフト・ハミルトニアンの存在において直接的に最適化され得る。ドリフトのセット{h
kl}は、単一の制御パルスU
loc(θ)ともに、ユニバーサルとすることができ、いくつかの例において、あらゆる状態をこのやり方で十分な回路深度で準備することができる。
【0065】
回路500において、ハードウェア効率の良い浅い量子回路の回路表現が提案され得る。単一の量子ビット回転U(θ
i,t)∈SU(2)は、角度θ
iによってパラメータ化される単一の線の四角によって描かれ、一方、固有のもつれあう演算
【数86】
502a、502bおよび502cは、超電導チップの交差共鳴ゲートによって決定され得る。単一の量子ビット回転の第1のレイヤは、純粋状態の準備の後、量子ビットの第1の行について
【数87】
となるように、典型的には分類されるデータをエンコードするために使用することができることに留意されたい。
【0066】
図6は、説明される1つまたは複数の実施形態による、量子分類器としての浅い回路についてショット数に関してコスト関数がどのように変化するかをプロットした例示の非限定的なグラフを図示している。このコスト関数は、コンピューティング・システム100またはコンピューティング・システム200を使用して実装され得る機械学習分類器に関連付けられるコスト関数であり得る。
【0067】
グラフ600は、マルチ・ショットのサブ空間判別に対するシングル・ショットを描いている。決定関数は、線形(Helstrom)から対数正規CDF(近似的にシグモイド)へ補間する。対数正規CDFは、最適化の改善のためにANNにおいて使用され、これが使用に許容可能であり得ることを示している。グラフ600は、Pr(m=1)を表すy軸602、およびp1を表すx軸604を有する。
【0068】
図7は、説明される1つまたは複数の実施形態による、サンプルが3つの良好に分離されたガウシアンから導かれる3ラベルの例において、量子分類器としての浅い回路のパフォーマンスをプロットした、例示の非限定的なグラフを図示している。このパフォーマンスは、コンピューティング・システム100またはコンピューティング・システム200を使用して実装され得る、機械学習分類器に関連付けられるパフォーマンスであり得る。グラフ700は、3ラベルの例を描いている。ここで、グラフ702に示すようにサンプルが3つの良好に分離されたガウシアンから導かれ、シミュレーションが1ラベル当たり1訓練サンプルおよび25テスト・サンプルで実行され得、グラフ704に示すような結果となる場合の、パフォーマンスを考えることができる。グラフ702は、サンプル・データ用の値の1つを表すy軸706、およびサンプル・データ用の第2の値を表すx軸708を有する。グラフ704は、成功率を表すy軸710、およびレイヤの数を表すx軸712を有する。
【0069】
この以下の例において、計算基底での測定値への、および有限数のショットにわたって測定結果をc個の異なるカテゴリにグループ化することによる分類器への、アクセスがあると仮定することができる。実数値のパラメータセット
【数88】
、
【数89】
、
【数90】
によってパラメータ化された量子回路Wを用いて分類測定値を制御することを決定することができる。この例において、W回路のファミリーは、任意の単一の量子ビットのユニタリを許容し、また総じて入力を相互作用グラフEに相関させることができる。これらの考慮に基づき、以下の浅い回路を使用することができ:
【数91】
式中、
【数92】
は、単一の量子ビットのオイラー回転であり、Lは、もつれあうレイヤの数を制御する。この例において、テスト・セットからの入力状態にあるWM
cW
†のargmaxが高確率のcであるように、古典的なブラック・ボックス最適化(例えば、SPSA)プロセスを使用して最適なパラメータを見つけることができる。この例において、数値的な単純性について、
U
ent=Π
(i,j)∈ECA(i,j)
がすべてのステップでモデル化され、Eのトポロジーをibmqx4超電導チップの相互作用グラフまたはその適切なサブグラフとして選び、E内でリンクによって接続された量子ビットi、jの間の制御されたフェーズ・ゲートCZで機能する。
【0070】
図8は、説明される1つまたは複数の実施形態による、サンプルが3つのばらつきのあるガウシアンから導かれる3ラベルの例において、量子分類器としての浅い回路のパフォーマンスをプロットした、例示の非限定的なグラフを図示している。このパフォーマンスは、コンピューティング・システム100またはコンピューティング・システム200を使用して実装され得る機械学習分類器に関連付けられるパフォーマンスであり得る。グラフ800は、グラフ700の3ラベルの例に対する別の3ラベルの例を描写している。ここで、グラフ802に示すようにサンプルがばらつきのあるガウシアンから導かれ、シミュレーションが1ラベル当たり1訓練サンプルおよび25テスト・サンプルで実行され得、グラフ804に示すような結果となる場合の、パフォーマンスを考えることができる。グラフ802は、サンプル・データ用の値の1つを表すy軸806、およびサンプル・データ用の第2の値を表すx軸806を有する。グラフ804は、成功率を表すy軸810、およびレイヤの数を表すx軸812を有する。
【0071】
図9は、説明される1つまたは複数の実施形態による、サンプルが3つのばらつきのあるガウシアンから導かれ、かつ
図8に対して追加的なレイヤが使用される3ラベルの例において、量子分類器としての浅い回路のパフォーマンスをプロットした、例示の非限定的なグラフを図示している。このパフォーマンスは、コンピューティング・システム100またはコンピューティング・システム200を使用して実装され得る機械学習分類器に関連付けられるパフォーマンスであり得る。グラフ900は、グラフ700およびグラフ800の3ラベルの例に対する別の3ラベルの例を描写している。ここで、グラフ902に示すようにサンプルがばらつきのあるガウシアンから導かれ、1ラベル当たり1訓練サンプルおよび25テスト・サンプルのシミュレーションを実行し、グラフ904に示す結果となる場合の、パフォーマンスを考えることができる。分類器のパフォーマンスを比較することができ、第1のプロット中のレイヤおよび、第2のプロット中のさらなるレイヤもプロットされている。グラフ902は、成功率を表すy軸906、およびレイヤの数を表すx軸908を有する。グラフ904は、成功率を表すy軸910、およびレイヤの数を表すx軸912を有する。
【0072】
図10は、説明される1つまたは複数の実施形態による、サンプルが非ガウシアンである3ラベルの例において、量子分類器としての浅い回路のパフォーマンスをプロットした、例示の非限定的なグラフを図示している。このパフォーマンスは、コンピューティング・システム100またはコンピューティング・システム200を使用して実装され得る機械学習分類器に関連付けられるパフォーマンスであり得る。グラフ1000は、グラフ1002内のデータセット(ここでは、2つの主軸に対して特定のタイプのドリンクを分類している)を描いている。パフォーマンスは、2まで減らされた特徴で再スケーリングされたデータセットに対するナイーブなベイジアン分類器と比較可能にテストすることができ、グラフ1004に結果を示す。データセットは、3種類のドリンクの約180サンプルを含む。等しい数のサンプルが、訓練セットにおける各概念クラスから導かれ、各クラスからのサンプルの数は48に制限することができる。データセットは、元々13次元であり得、特徴の数は、前処理により2まで減らすことができる。1ラベル当たり16サンプルが使用される。グラフ1002は、サンプル・データ用の値の1つを表すy軸1006、およびサンプル・データ用の第2の値を表すx軸1008を有する。グラフ1004は、成功率を表すy軸1010、およびレイヤの数を表すx軸1012を有する。
【0073】
図11は、本明細書において説明される1つまたは複数の実施形態による、量子分類器としての浅い回路の実装を促進する、例示の非限定的なコンピュータ実装方法のフロー図を図示している。例において、この非限定的なコンピュータ実装方法の態様は、コンピューティング・システム100またはコンピューティング・システム200を使用して実装することができる。フロー
図1100に描かれるよりも多いもしくは少ない演算が描かれること、またはフロー
図1100に描かれる演算はここで描かれるのとは異なる順序で実装されること、あるいはその両方の例があり得ることが理解されよう。
【0074】
フロー
図1100において、動作1102は、コンピューティング・システム(例えば、量子コンピューティング・システム106またはコンピューティング・システム200)によって浅い量子回路を生成するよう量子ハードウェアを較正することを描いている。いくつかの例において、浅い量子回路は、量子ハードウェア上で自然にアクセス可能である少なくとも1つのゲートを利用する。いくつかの例において、動作1102は、訓練情報に基づいて、浅い量子回路のための単純な入力状態を準備する特徴マップを決定することを含む。いくつかの例において、動作1102は、ハードウェア効率の良い回路のファミリーから浅い量子回路を選択することを含む。いくつかの例において、動作1102は、特徴マップにより入力量子状態として分類されるサンプルを準備することを含む。
【0075】
動作1104は、コンピューティング・システム(例えば、量子コンピューティング・システム106またはコンピューティング・システム200)によって、機械学習分類器のパラメータについての初期値に基づいて、浅い量子回路のためのコスト関数を決定することを描いている。いくつかの例において、動作1104は、量子の2値状態判別のための測定を示す第2のコスト関数を決定することを含む。いくつかの例において、動作1104はk−aryの量子状態判別のための高確率の多値ラベル分類スキームを特定する第2のコスト関数を決定することを含む。いくつかの例において、動作1104は、ヒルベルト空間および2値データ分類用の特徴空間分割を特定する第2のコスト関数を決定することを含む。いくつかの例において、動作1104はk−aryのデータ分類のためのヒルベルト空間および特徴空間分割を特定する第2のコスト関数を決定することを含む。
【0076】
いくつかの例において、動作1104は、浅い量子回路の出力統計を測定することと、出力統計に基づいて、複数のコスト関数の第2のコスト関数を決定することと、出力統計を第2のコスト関数に割り当てることとを含む。いくつかの例において、動作1104は、第2のコスト関数に基づいて総コスト関数を決定することを含む。
【0077】
動作1106は、コンピューティング・システム(例えば、量子コンピューティング・システム106またはコンピューティング・システム200)によって、浅い量子回路のためのコスト関数に基づいて、訓練中のパラメータについての初期値をパラメータについての第2の値へと変更することを描いている。いくつかの例において、動作1106は、ラベル付けされた訓練情報を量子特徴マップを介して少なくとも1つの量子ビットにエンコードすることを含む。いくつかの例において、動作1106は、訓練情報の2値ラベル分類用の測定スキームを実装することを含む。
【0078】
いくつかの例において、動作1106は、訓練情報の多値ラベル分類を促進する交換測定スキームを実装することを含む。いくつかの例において、動作1106は、パラメータの第2の値に基づいて、機械学習分類器の活性化関数の出力を決定することを含む。いくつかの例において、動作1106は、パラメータの第2の値により浅い量子回路を動作させることを含む。いくつかの例において、動作1106は、浅い量子回路を動作させることによる出力を測定することと、浅い量子回路を動作させることによる出力に基づいてサンプル用の分類ラベルが分類されるように割り当てることとを含む。
【0079】
開示される主題の様々な態様についてのコンテキストを与えるために、
図12ならびに以下の議論は、開示される主題の様々な態様が実装され得る適切な古典的なコンピューティング環境の一般的な説明を与えるよう意図されている。いくつかの例において、この古典的なコンピューティング環境を使用して、機械学習分類器制御ロジック204または機械学習分類器読み出し制御ロジック214を実装することができる。
図12は、本明細書において説明される1つまたは複数の実施形態が促進され得る、例示の非限定的な動作環境のブロック図である。本明細書において説明される他の実施形態において採用される類似の要素の繰り返しの説明は、簡略化のために省略する。
【0080】
図12を参照すると、本開示の様々な態様を実装するための適切な動作環境1201はまた、コンピュータ1212を含むことができる。コンピュータ1212は、処理ユニット1214、システム・メモリ1216、およびシステム・バス1218を含むことができる。システム・バス1218は、システム・メモリ1216を含むがそれに限定されないシステムコンポーネントを、処理ユニット1214に結合する。処理ユニット1214は、様々な利用可能なプロセッサのうちの任意のものとすることができる。デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャもまた、処理ユニット1214として採用され得る。システム・バス1218は、メモリ・バスもしくはメモリ・コントローラ、周辺バスもしくは外部バスを含むいくつかのタイプのバス構造、またはインダストリアル・スタンダード・アーキテクチャ(ISA)、マイクロチャネル・アーキテクチャ(MSA)、拡張ISA(EISA)、インテリジェント・ドライブ・エレクトロニクス(IDE)、VESAローカル・バス(VLB)、ペリフェラル・コンポーネント・インターコネクト(PCI)、カードバス、ユニバーサル・シリアル・バス(USB)、アドバンスト・グラフィックス・ポート(AGP)、ファイヤワイヤ(IEEE1094)、およびスモール・コンピュータ・システム・インターフェース(SCSI)を含むがそれに限定されない任意の多様な利用可能なバス・アーキテクチャを使用するローカル・バス、あるいはその組合せのうちの任意のものとすることができる。システム・メモリ1216はまた、揮発性メモリ1220および非揮発性メモリ1222を含むことができる。スタートアップの間など、コンピュータ1212内の要素間で情報を伝送するための基本的なルーチンを含んでいる基本入出力システム(BIOS)は、非揮発性メモリ1222に記憶される。例示として、限定ではなく、非揮発性メモリ1222は、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または非揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電RAM(FeRAM))を含むことができる。揮発性メモリ1220はまた、外部キャッシュ・メモリとして作用するランダム・アクセス・メモリ(RAM)を含むことができる。例示として、限定ではなく、RAMは、静的RAM(SRAM)、動的RAM(DRAM)、同期DRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ランバスRAM(DRRAM)、ダイレクト・ランバス・ダイナミックRAM(DRDRAM)、およびランバス・ダイナミックRAMなどの多くの形態で利用可能である。
【0081】
コンピュータ1212はまた、リムーバブル/非リムーバブルの、揮発性/非揮発性のコンピュータ記憶媒体を含むことができる。例えば、
図12はディスク・ストレージ1224を図示している。ディスク・ストレージ1224は、磁気ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックのようなデバイスを含むことができるがそれに限定されない。ディスク・ストレージ1224はまた、記憶媒体を別個に、またはコンパクト・ディスクROMデバイス(CD−ROM)、CD書き込み可能ドライブ(CD−Rドライブ)、CD書き換え可能ドライブ(CD−RWドライブ)もしくはデジタル多用途ディスクROMドライブ(DVD−ROM)などの光学ディスク・ドライブを含むがそれに限定されない他の記憶媒体と組み合わせて、含むことができる。システム・バス1218へのディスク・ストレージ1224の接続を容易にするために、典型的にはインターフェース1226などのリムーバブルまたは非リムーバブルのインターフェースが使用される。
図12はまた、ユーザと適切な動作環境1201内で説明される基本的なコンピュータ・リソースとの間で、媒介として機能するソフトウェアを描写している。そのようなソフトウェアはまた、例えばオペレーティング・システム1228を含むことができる。オペレーティング・システム1228は、ディスク・ストレージ1224に記憶することができ、コンピュータ1212のリソースを制御して割り当てるよう機能する。システム・アプリケーション1230は、例えばシステム・メモリ1216またはディスク・ストレージ1224のいずれかに記憶されるプログラム・モジュール1232およびプログラム・データ1234を通じて、オペレーティング・システム1228によるリソースの管理を活用する。本開示は様々なオペレーティング・システムまたはオペレーティング・システムの組合せにより実装することができることを理解されたい。ユーザは、コマンドまたは情報を、入力デバイス1236を通じてコンピュータ1212に入力する。入力デバイス1236は、マウスなどのポインティング・デバイス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、TVチューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラなどを含むがそれに限定しない。これらのおよび他の入力デバイスは、インターフェース・ポート1238を介してシステム・バス1218を通じて処理ユニット1214に接続する。インターフェース・ポート1238は、例えばシリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含む。出力デバイス1240は、入力デバイス1236と同一のタイプのポートのうちいくつかを使用する。したがって、例えばUSBポートは、コンピュータ1212に入力を与えるために、およびコンピュータ1212から出力デバイス1240に情報を出力するために、使用することができる。出力アダプタ1242は、他の出力デバイス1240の中でもとりわけ特別なアダプタを必要とする、モニタ、スピーカ、およびプリンタなどのいくつかの出力デバイス1240があることを図示するために示されている。出力アダプタ1242は、例示として、限定ではなく、出力デバイス1240とシステム・バス1218との間の接続の手段を提供するビデオおよびサウンド・カードを含む。他のデバイスまたはデバイスのシステムあるいはその両方は、リモート・コンピュータ1244などの入力機能および出力機能の両方を提供することに留意すべきである。
【0082】
コンピュータ1212は、リモート・コンピュータ1244などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモート・コンピュータ1244はコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの電化製品、ピア・デバイス、もしくは他の共通のネットワーク・ニューロンなどであってもよく、また典型的にはコンピュータ1212に対して説明される要素の多くまたはすべてを含むことができる。簡略化のため、メモリ・ストレージ・デバイス1246のみをリモート・コンピュータ1244とともに図示する。リモート・コンピュータ1244は、ネットワーク・インターフェース1248を通じてコンピュータ1212に論理的に接続されており、次いで、通信接続1250を介して物理的に接続されている。ネットワーク・インターフェース1248は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、セルラ・ネットワークなど有線または無線あるいはその両方の通信ネットワークを包含している。LAN技術は、ファイバ分散データ・インターフェース(FDDI)、銅分散データ・インターフェース(CDDI)、イーサネット(登録商標)、トークン・リングなどを含む。WAN技術は、ポイントツーポイント・リンク、サービス総合デジタル網(ISDN)などの回路交換ネットワークおよびそれらの変形例、パケット交換ネットワーク、ならびにデジタル加入者線(DSL)を含むがそれに限定されない。通信接続1250とは、ネットワーク・インターフェース1248をシステム・バス1218に接続するために採用されるハードウェア/ソフトウェアを称する。通信接続1250は、明瞭に図示するためにコンピュータ1212の内部に示されているが、コンピュータ1212の外部とすることもできる。ネットワーク・インターフェース1248への接続のためのハードウェア/ソフトウェアとしてはまた、例示的な目的に過ぎないが、一般電話機グレード・モデム、ケーブル・モデム、およびDSLモデム、ISDNアダプタ、ならびにイーサネット(登録商標)・カードを含む、モデムなどの内部技術および外部技術を含むことができる。
【0083】
本発明の実施形態は、統合のあらゆる可能な技術的詳細レベルにおいてシステム、方法、装置、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは前述のあらゆる適切な組合せであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙としてはまた、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、命令を記録されて有するパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる適切な組合せ、を含む。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を介して送信される電気的信号など、一過性の信号そのものであると解釈されてはならない。
【0084】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、個別のコンピューティング/処理デバイスに、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せなどのネットワークを介して、外部のコンピュータもしくは外部のストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅の送信ケーブル、光学送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。それぞれのコンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。本発明の様々な態様の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語などの手続き型プログラミング言語もしくは類似するプログラミング言語、を含む1つまたは複数のプログラミング言語のあらゆる組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、すべてユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして、一部はユーザのコンピュータ上かつ一部はリモート・コンピュータ上で、またはすべてリモート・コンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は外部のコンピュータ(例えば、インターネット・サービス・プロバイダを使用するインターネットを介して)に対してなされてもよい。一部の実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路をカスタマイズすることができる。
【0085】
本発明の態様は本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフロー・チャート図またはブロック図あるいはその両方を参照しながら本明細書において説明される。フロー・チャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフロー・チャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が、フロー・チャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装する手段を作成すべく、汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作るものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶して有するコンピュータ可読記憶媒体が、フロー・チャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定のやり方で機能するように指示するものであってもよい。コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、フロー・チャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装するように、コンピュータ実装処理を作るべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作可能な機能を実施させるものであってもよい。
【0086】
図面中のフロー・チャートおよびブロック図は、本発明の様々な実施形態にしたがって、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フロー・チャートまたはブロック図のそれぞれのブロックは、指定される論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。一部の代替的な実装形態において、ブロックにおいて示した機能は図面で示した順とは異なって発生してもよい。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、またはブロックは、関与する機能性によっては、時に逆の順で実行されてもよい。ブロック図またはフロー・チャート図あるいはその両方のそれぞれのブロック、およびブロック図またはフロー・チャート図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実施するかまたは特殊目的ハードウェアおよびコンピュータ命令の組合せを実行する、特殊目的ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【0087】
コンピュータで実行するコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的なコンテキストにおいて、主題を上で説明してきたが、当業者であれば本開示はまた他のプログラム・モジュールと組み合わせて実装することができるか、または実装され得ることを理解されよう。一般的に、プログラム・モジュールは、特定のタスクを実施するか、または特定の抽象的なデータ・タイプを実装するか、あるいはその両方のルーチン、プログラム、コンポーネント、データ構造などを含む。さらには、当業者であれば、本発明のコンピュータ実装方法は、単一プロセッサまたはマルチプロセッサのコンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、ならびにコンピュータ、ハンドヘルド・コンピューティング・デバイス(例えば、PDA、電話機)、マイクロプロセッサベースまたはプログラマブルの家庭用または業務用の電子機器など、を含む、他のコンピュータ・システム構成で実践できることを了解されよう。図示した態様はまた、タスクが通信ネットワークを通じてリンクされたリモート処理デバイスによって実施される分散コンピューティング環境において実践することができる。しかしながら、本開示の、すべてでないにしても一部の態様は、スタンドアロンのコンピュータで実践することができる。分散コンピューティング環境において、プログラム・モジュールはローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置することができる。
【0088】
本出願で使用される場合、用語「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」などは、コンピュータ関連の実体、または1つもしくは複数の特別な機能性を有して動作可能な機械に関連する実体を称することができるか、または含むことができるか、あるいはその両方である。本明細書において開示される実体は、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかとすることができる。例えば、コンポーネントは、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、実行可能なもの、実行のスレッド、プログラムまたはコンピュータあるいはそれらの組合せとすることができるが、それに限定しない。例示として、サーバ上で実行中のアプリケーションおよびサーバの両方をコンポーネントとすることができる。1つまたは複数のコンポーネントは、プロセスまたは実行のスレッドあるいはその両方の中に存在することができ、また、コンポーネントは1つのコンピュータに集中してもよく、または2つ以上のコンピュータ間で分散されてもよく、あるいはその両方であってもよい。別の例において、個々のコンポーネントは、様々なデータ構造を記憶して有する様々なコンピュータ可読媒体から実行することができる。コンポーネントは、1つまたは複数のデータ・パケットを有する信号にしたがうなど、ローカルまたはリモートあるいはその両方のプロセスを介して通信することができる(例えば、1つのコンポーネントからのデータは、ローカル・システム内で、分散システム内で、または信号を介して他のシステムとのインターネットなどのネットワークを横断して、あるいはその組合せで、別のコンポーネントと相互作用する)。別の例として、コンポーネントは、電気的または電子的な回路によって動作する機械的な部品によってもたらされる特別な機能性を有する装置とすることができ、プロセッサによって実行されるソフトウェアまたはファームウェア・アプリケーションによって動作する。そのような場合、プロセッサは、装置に対して内部または外部にあるものとすることができ、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部を実行することができる。さらに別の例として、コンポーネントは、機械的な部品無しに電子機器部品を通じて特別な機能性を提供する装置とすることができ、この場合、電子機器部品は、電子機器部品の機能性を少なくとも一部付与するソフトウェアまたはファームウェアを実行するためのプロセッサまたは他の手段を含むことができる。一態様において、コンポーネントは例えば、クラウド・コンピューティング・システム内で仮想機械を介して電子機器部品をエミュレートすることができる。
【0089】
加えて、用語「または(or)」は、排他的「or」ではなく包括的「or」を意味することが意図されている。すなわち、特に明記しない限り、またはコンテキストから明らかでない限り、「Xは、AまたはBを採用する」とは、自然な包括的並べ替えのうちの任意のものを意味することが意図されている。すなわち、XがAを採用する場合、XがBを採用する場合、またはXがAおよびBの両方を採用する場合、「XがAまたはBを採用する」は、任意の前述の事例の下で満たされる。さらには、本主題の明細書および添付される図面内で使用される場合の冠詞「1つの(a)」および「1つの(an)」は、単数形を対象とすると特に明記しない限り、またはコンテキストから明らかでない限り、一般的に「1つまたは複数の」を意味するものと解釈されるべきである。本明細書において使用される場合、用語「例(example)」または「例示の(exemplary)」あるいはその両方は、例、事例、または図示として機能することを意味するよう利用される。疑わしさを避けるために、本明細書において開示される主題はそのような例によって限定されない。加えて、本明細書において「例」または「例示の」あるいはその両方として説明されるあらゆる態様または設計は、必ずしも他の態様もしくは設計より好ましい、または有利であるとして解釈される必要はなく、また当業者に既知の等価な例示の構造および技法を排除することを意味しない。
【0090】
主題の明細書で採用されるように、用語「プロセッサ」は実質的に、シングルコア・プロセッサ、ソフトウェア・マルチスレッド実行機能を有するシングルプロセッサ、マルチコア・プロセッサ、ソフトウェア・マルチスレッド実行機能を有するマルチコア・プロセッサ、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサ、並列プラットフォーム、および分散共有メモリを有する並列プラットフォームを含むがこれらに限定されない、あらゆるコンピューティング処理ユニットまたはデバイスを称することができる。追加的に、プロセッサとは、集積回路、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、複合プログラマブル・ロジック・デバイス(CPLD:Complex Programmable Logic Device)、個別ゲートもしくはトランジスタ・ロジック、個別ハードウェア・コンポーネント、または本明細書において説明される機能を実施するために設計されるそれらのあらゆる組合せを称することができる。さらには、プロセッサは空間使用を最適化するためまたはユーザ機器のパフォーマンスを向上させるために、例えば、限定されないが、分子および量子ドットベースのトランジスタ、スイッチ、ならびにゲートなどのナノスケールのアーキテクチャを活用することができる。プロセッサはまたコンピューティング処理ユニットの組合せとして実装され得る。本開示において、「記憶する」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」ならびにコンポーネントの動作および機能性に関連する実質的に任意の他の情報記憶コンポーネントなどの用語は、「メモリ」内に具現化された実体である「メモリ・コンポーネント」またはメモリを含むコンポーネントを称するために利用される。本明細書において説明されるメモリまたはメモリ・コンポーネントあるいはその両方は、揮発性メモリまたは非揮発性メモリのいずれかであることができるか、または揮発性メモリおよび非揮発性メモリの両方を含むことができることが理解されよう。例示として、限定ではなく、非揮発性メモリとしては、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュ・メモリ、または非揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電RAM(FeRAM))を挙げることができる。揮発性メモリは、例えば外部キャッシュ・メモリとして動作できるRAMを含むことができる。例示として、限定ではなく、RAMは、同期RAM(SRAM)、動的RAM(DRAM)、同期DRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ランバスRAM(DRRAM)、ダイレクト・ランバス・ダイナミックRAM(DRDRAM)、およびランバス・ダイナミックRAM(RDRAM)などの多くの形態で利用可能である。追加的に、本明細書におけるシステムまたはコンピュータ実装方法の開示されるメモリ・コンポーネントは、これらのおよび任意の他の適切なタイプのメモリを限定なく含むことが意図されている。
【0091】
上で説明してきたことは、システムおよびコンピュータ実装方法の単なる例を含む。もちろん、本開示を説明することを目的として、コンポーネントまたはコンピュータ実装方法のすべての考えられる組合せを説明することは不可能だが、当業者であれば本開示の多くのさらなる組合せおよび並べ替えが可能であることを理解されよう。さらには、発明を実施するための形態、特許請求の範囲、付録および図面において用語「含む(includes)」、「有する(has)」、「所有する(possesses)」などが使用される範囲では、そのような用語は、請求項の移行句として採用される場合に「を備える(comprising)」が解釈される際の用語「を備える(comprising)」と類似するやり方で、包括的であることが意図されている。例示を目的として様々な実施形態の説明を提示してきたが、網羅的であること、または開示された実施形態に限定することは意図されていない。説明された実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者にとって明らかとなろう。本明細書において使用される用語法は、実施形態の原理、実践的な用途もしくは市場で見られる技術に対する技術的な改善を最良に説明するため、または当業者の他の者が本明細書において開示される実施形態を理解できるように選ばれたものである。