(58)【調査した分野】(Int.Cl.,DB名)
前記比較例ニューラルネットワークが、前記比較例の前記数値埋め込みを生成するために、前記比較セット内の前記比較例からの比較例のシーケンスの文脈において、前記比較例を処理するように構成される、双方向長短期記憶(LSTM)ニューラルネットワークである、請求項3または4に記載の方法。
前記新規例ニューラルネットワークが、前記比較例の前記数値埋め込みを生成するために、前記新規例のK個のインスタンスを含むシーケンスを処理するように構成される前記複数の比較例に対する前記数値埋め込みにわたる読み取り注意を有するLSTMニューラルネットワークである、請求項3から5のいずれか一項に記載の方法。
前記新規例ニューラルネットワークおよび前記比較例ニューラルネットワークが、少なくともいくつかのパラメータを共有する、請求項3から8のいずれか一項に記載の方法。
前記ニューラルネットワーク注意機構が、前記比較セットと異なる例のトレーニングセット上のトレーニングによって学習されている、請求項1から9のいずれか一項に記載の方法。
1つまたは複数のコンピュータと、命令を記憶する1つまたは複数の記憶デバイスとを含むシステムであって、前記命令が、前記1つまたは複数のコンピュータによって実行されたとき、請求項1から10のいずれか一項に記載の方法を前記1つまたは複数のコンピュータに実行させるように動作可能である、システム。
命令によって符号化されるコンピュータ記憶媒体であって、前記命令が、1つまたは複数のコンピュータによって実行されたとき、請求項1から10のいずれか一項に記載の方法を前記1つまたは複数のコンピュータに実行させる、コンピュータ記憶媒体。
【発明を実施するための形態】
【0012】
様々な図における同様の参照番号および記号は、同様の要素を示す。
【0013】
本明細書は、一般に様々なデータ、すなわち1つまたは複数のカテゴリーに属するとして分類されてもよい任意の種類のデータオブジェクトのいずれかを分類するように構成されるデータ分類システムを説明する。
【0014】
たとえば、入力データが画像である場合、データ分類システムは、入力画像がオブジェクトカテゴリーの所定のセットからのオブジェクトカテゴリーに属するオブジェクトの画像を含むかどうかを判定する視覚認識システムである場合がある。別の例として、入力データがビデオまたはビデオの一部である場合、データ分類システムは、入力ビデオまたはビデオの一部がどの(1つまたは複数の)トピックに関連するかを決定するビデオ分類システムである場合がある。別の例として、入力データがオーディオデータである場合、データ分類システムは、所与の話された発声に対して、発声が表す(1つまたは複数の)用語を決定する音声認識システムである場合がある。別の例として、入力データがテキストデータである場合、データ分類システムは、入力テキスト区分がどの(1つまたは複数の)トピックに関連するかを決定するテキスト分類システムである場合がある。
【0015】
図1は、例示的なデータ分類システム100を示す。
【0016】
データ分類システム100は、以下で説明するシステム、構成要素および技法が実装される1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されたシステムの一例である。
【0017】
データ分類システム100は、入力例102を受信することと、入力例102を分類する、たとえば入力例102が属するカテゴリーまたは入力例102が関連するトピックを決定する出力116を生成することとを行うように構成される。
【0018】
データ分類システム100は、比較セットを含む比較例データ104を記憶する。比較セットは、比較例と比較例の各々に対するそれぞれのラベルベクトルとの数を含む。各ラベルベクトルは、所定のラベルセット内の各ラベルに対するそれぞれのスコアを含む。一般に、所与のラベルベクトル内のラベルスコアは、対応する比較例に対する知られている(1つまたは複数の)ラベルを識別する。
【0019】
データ分類システム100は、入力として比較例データ104および入力例102を取る分類器112を含む。分類器112は、ニューラルネットワーク注意機構114を使用して比較例データおよび入力例102の関数として出力116を生成する。ニューラルネットワーク注意機構114を使用して出力116を生成するためのプロセスは、
図2および
図3を参照しながら以下でより詳細に説明する。
【0020】
データ分類システム100からの出力116は、多くのアプリケーションにおいて使用されてもよい。1つの例示的なアプリケーションとして、データ分類システム100からの出力116は、環境内のエージェントを制御するための1つまたは複数の行動の選択に使用されてもよい。たとえば、データ分類システム100の出力116は、環境内のエージェントの制御をもたらす1つまたは複数の制御入力として使用されてもよく、またはその制御入力を生成するために使用されてもよい。環境は、実世界の環境内のオブジェクトが制御される実世界の環境であってもよい。たとえば、オブジェクト/エージェントは、自律的(「自動運転」)または半自律的車両などの車両であってもよく、データ分類システム100の出力116は、車両を制御するため、たとえば車両のナビゲーションを制御するための制御入力として使用されてもよく、またはその制御入力を生成するために使用されてもよい。したがって、いくつかの態様は、入力データに基づいてエージェントの制御のための行動の効率的で効果的な選択に関連する問題に対処する。
【0021】
図2は、比較例の比較セットを使用して新規例を分類するための例示的なプロセス200のフロー図である。便宜上、プロセス200は、1つまたは複数のロケーション内に配置された1つまたは複数のコンピュータのシステムによって実行されているものとして説明する。たとえば、本明細書に従って適切にプログラムされたデータ分類システム、たとえば
図1のデータ分類システム100は、プロセス200を実行することができる。
【0022】
システムは、比較セットを維持する(ステップ202)。上記で説明したように、比較セットはk個の比較例を含むことができ、
【数1】
として示すことができ、ここでx
iは比較例であり、y
iは比較例x
iに対するそれぞれのラベルベクトルである。各ラベルベクトルy
iは、所定のラベルセット内の各ラベルに対するそれぞれのスコアを含む。所与のラベルベクトル内のラベルスコアは、一般に対応する比較例に対する知られている(1つまたは複数の)ラベルを識別する。
【0023】
いくつかの場合には、比較セットは、ニューラルネットワークをトレーニングするために使用された比較セットと異なる場合がある。すなわち、ニューラルネットワークは、ニューラルネットワークを再トレーニングすることなく、ニューラルネットワークをトレーニングするために使用されたものと異なる比較例の新しいセットを使用して新規例を分類するために使用されてもよい。これらの場合の一部において、比較例の新しいセットは、ニューラルネットワークのトレーニングにおいて使用されたいくつかの比較例といくつかの追加のまたは「見られていない」比較例とを含むことができる。これらの場合の他において、比較例の新しいセットは、「見られていない」比較例だけを含むことができ、トレーニングに使用された比較例を含むことはできない。
【0024】
システムは、新規例を受信する(ステップ204)。新規例は、
【数2】
として示すことができる。
【0025】
新規例を受信した後、システムは、ニューラルネットワーク注意機構を新規例および比較例に適用することによって、各比較例に対するそれぞれの注意の重みを決定する(ステップ206)。各比較例に対するそれぞれの注意の重みを決定するためのプロセスは、
図3を参照しながら以下でより詳細に説明する。
【0026】
次いで、システムは、新規例に対して、ラベルの各々に対するそれぞれのラベルスコアが、ラベルが新規例に対する正しいラベルである尤度を表すように、所定のラベルセット内の各ラベルに対するそれぞれのラベルスコアを生成する(ステップ208)。特に、システムは、比較例の各々に対して、比較例に対するそれぞれの注意の重みと比較例に対するそれぞれのラベルベクトル内のスコアとからラベルスコアを生成する。
【0027】
いくつかの実装形態では、ラベルスコアは、以下の
【数3】
のように計算されてもよい。ここにおいて、x
iは比較例であり、y
iは比較セット
【数4】
からの比較例に対するラベルベクトルであり、
【数5】
は新規例
【数6】
が与えられる場合の比較例x
iに対する注意の重みである。
【0028】
式1は、新規例に対する出力を比較セット内のラベルベクトルの線形結合として記述する。各比較例x
iに対して、システムは、比較例x
iに対する重み付きラベルベクトル
【数7】
を生成するために、比較例x
iに対するラベルベクトルy
iと比較例x
iに対する注意の重み
【数8】
とを乗算する。次いで、システムは、所定のラベルセット内の各ラベルに対するそれぞれのラベルスコアを含む結合されたラベルベクトル
【数9】
を生成するために、すべての重み付きラベルベクトルを合計する。ラベルの各々に対する各ラベルスコアは、ラベルが新規例に対する正しいラベルである尤度を表す。
【0029】
いくつかの実装形態では、システムは、所定のラベルセット内のラベルに対するそれぞれのラベルスコアに基づいて新規例をさらに分類してもよい。たとえば、新規例は、ラベルスコアから導出される分類を使用して分類されてもよい。さらなる例として、新規例は、正しさの最高の尤度を有するラベルを使用して/に基づいて分類されてもよく、または正しさの最高の尤度を有するn個(n>1)のラベルを使用して/に基づいて分類されてもよく、またはしきい値を超える正しさの尤度を有するすべてのラベルを使用して/に基づいて分類されてもよい。
【0030】
新規例が分類された後、システムは、所定のラベルセット内のラベル、正しさの最高の尤度を有する1つまたは複数のラベル、または両方に対するそれぞれのラベルスコアをさらなる処理のために別のシステムに与えることができる。たとえば、新規例は、エージェントのセンサによってキャプチャされたセンサデータ(たとえば、画像)であってもよく、その他のシステムは、受信されたラベルスコア、正しさの最高の尤度を有する1つまたは複数のラベル、または両方を使用して環境内のエージェントをどのように制御するかについて決定する制御システムであってもよい。
【0031】
図3は、ニューラルネットワーク注意機構を使用して、各比較例に対するそれぞれの注意の重みを決定するための例示的なプロセス300のフロー図である。便宜上、プロセス300は、1つまたは複数のロケーション内に配置された1つまたは複数のコンピュータのシステムによって実行されているものとして説明する。たとえば、本明細書に従って適切にプログラムされたデータ分類システム、たとえば
図1のデータ分類システム100は、プロセス300を実行することができる。
【0032】
システムは、比較例の数値埋め込み(numeric embedding)を決定するために、比較例ニューラルネットワークg(x
i)を使用して比較例x
iを処理する(ステップ302)。一般に、数値埋め込みは、数値(numeric value)の順序付けられた収集、たとえば浮動小数点の値または量子化された浮動小数点の値のベクトルである。
【0033】
いくつかの実装形態では、例が画像であるとき、比較例ニューラルネットワークg(x
i)は、入力比較例を受信し、比較例の埋め込みを生成するように構成される畳み込みニューラルネットワークである。いくつかの他の実装形態では、例が単語、句または他のテキスト区分であるとき、比較例ニューラルネットワークは、入力テキストをベクトルに埋め込むテキスト埋め込みニューラルネットワークである。
【0034】
いくつかの他の実装形態では、比較例ニューラルネットワークg(x
i)は、比較例の数値埋め込みを生成するために、比較セット内の比較例からの比較例のシーケンスの文脈において比較例を処理するように構成される双方向長短期記憶(LSTM)ニューラルネットワークである。すなわち、システムは、比較例をシーケンスとして配列することができ、各比較例に対して、比較例または比較例の特徴表現をたとえば畳み込みニューラルネットワークまたはテキスト埋め込みニューラルネットワークによって生成されるとき、比較例の数値埋め込みを生成するためにシーケンスに従って双方向LSTMニューラルネットワークを使用して処理することがでる。
【0035】
システムは、新規例の数値埋め込みを決定するために、新規例ニューラルネットワーク
【数10】
を使用して新規例
【数11】
を処理する(ステップ304)。いくつかの実装形態では、例が画像であるとき、新規例ニューラルネットワーク
【数12】
は、入力新規例を受信し、新規例の埋め込みを生成するように構成される畳み込みニューラルネットワークである。いくつかの他の実装形態では、例が単語、句または他のテキスト区分であるとき、比較例ニューラルネットワークは、入力テキストをベクトルに埋め込むテキスト埋め込みニューラルネットワークである。
【0036】
いくつかの他の実装形態では、新規例ニューラルネットワーク
【数13】
は、比較例の数値埋め込みを生成するために新規例または新規例の特徴表現のK個のインスタンスを含むシーケンスを処理するように構成される複数の比較例に対する数値埋め込みにわたる読み取り注意(read attention)を有するLSTMニューラルネットワークである。新規例ニューラルネットワーク
【数14】
は以下の
【数15】
のように表現されてもよく、ここでf'(x)は新規例または新規例の特徴表現であり、g(S)は比較例の数値埋め込みのセットである。すなわち、最後の時間ステップ以外のK個のステップの各時間ステップにおいて、システムは、内部状態に対する初期更新を生成するためにLSTMニューラルネットワークの現在の内部状態に従ってLSTMニューラルネットワークを使用して新規例の特徴表現を処理する。次いで、システムは、埋め込み鍵を生成するために初期更新と特徴表現とを結合し、たとえば合計し、注意ベクトルを生成するために埋め込み鍵を使用して比較例に対する数値埋め込みにわたってコンテンツベースの注意機構を適用する。次いで、システムは、更新された内部状態、すなわち次の時間ステップに対する現在の内部状態として使用されることになる内部状態を生成するために、初期更新と注意ベクトルとを結合、たとえば連結する。次いで、システムは、最後の時間ステップ、すなわちK番目のステップに対する初期更新または埋め込み鍵を、新規例の最終数値埋め込みとして使用することができる。
【0037】
いくつかの場合には、新規例ニューラルネットワークと比較例ニューラルネットワークの両方が畳み込みニューラルネットワークであるかまたはそれを含むとき、新規例ニューラルネットワークおよび比較例ニューラルネットワークは、少なくともいくつかのパラメータを共有する。
【0038】
システムは、比較例の数値埋め込みと新規例の数値埋め込みとの間の類似性メトリックを決定することによってそれぞれの注意の重みを決定する(ステップ306)。いくつかの実装形態では、類似性メトリックはコサイン距離である。いくつかの実装形態では、システムは、以下のモデル
【数16】
に基づいて新規例
【数17】
が与えられると、各比較例x
iに対するそれぞれの注意の重み
【数18】
を計算し、ここで、
【数19】
は新規例
【数20】
を埋め込む新規例ニューラルネットワークであり、g(x
i)は比較例x
iを埋め込む比較例ニューラルネットワークであり、c()はコサイン距離関数である。
【0039】
図4は、ニューラルネットワーク注意機構をトレーニングするための例示的なプロセス400のフロー図である。
【0040】
便宜上、プロセス400は、1つまたは複数のロケーション内に配置された1つまたは複数のコンピュータのシステムによって実行されているものとして説明する。たとえば、本明細書に従って適切にプログラムされたデータ分類システム、たとえば
図1のデータ分類システム100は、ニューラルネットワーク注意機構をトレーニングするためにプロセス400を実行することができる。
【0041】
システムは、可能なラベルセットにわたる分布からラベルセットをサンプリングする(ステップ402)。各ラベルセットは、可能なラベルの完全なセットとは異なるラベルの結合である。いくつかの場合には、各ラベルセットは、たとえば2つまたは3つの同じ数のラベルを含む。他の場合には、異なるラベルセットは、たとえば1つまたは2つから5つのラベルにわたる異なる数のラベルを含む。たとえば、分布は、可能なラベルセットのすべてに均等に重み付けることができ、システムは、分布を使用してラベルセットをランダムにサンプリングすることができる。
【0042】
次いで、システムは、サンプリングされたラベルセットを使用してトレーニング比較セットと入力例のバッチとをサンプリングする(404)。特に、サンプリングされたラベルセット内の各ラベルに対して、システムは、そのラベルを有する比較例のセットをサンプリングする。サンプリングされたラベルセット内のラベルのすべてに対するサンプリングされた比較例とそれらの対応するラベルとのセットが、トレーニング比較セットを形成する。バッチは、サンプリングされたラベル付けられたセット内のラベルのうちの1つを有する比較例のランダムシーケンスを含む。
【0043】
システムは、トレーニング比較セットに対して条件付けられたバッチ内の例に対するラベルを予測することのエラーを最小にするように、ニューラルネットワーク注意機構をトレーニングする(ステップ406)。特に、システムは、従来のニューラルネットワークトレーニング技法、たとえば勾配降下ベースのトレーニング技法を使用してエラーを低減するために、注意機構のパラメータの現在値を調整するように注意機構をトレーニングする。
【0044】
システムは、ニューラルネットワーク注意機構のパラメータのトレーニングされた値を決定するために、プロセス400を繰り返して、すなわちラベルセットをサンプリングし、次いでサンプリングされたラベルセットに基づいてニューラルネットワーク注意機構をトレーニングすることを繰り返すことによって実行することができる。このようにしてニューラルネットワーク注意機構をトレーニングすることによって、システムは、エラーを低減することのトレーニングオブジェクトを満足するニューラルネットワーク注意機構のパラメータのトレーニングされた値を迅速に決定することができ、トレーニングされたニューラルネットワークは、入力例を分類するために使用されている比較セットが、ニューラルネットワークのトレーニングに使用されている比較セットのいずれかとは異なるときでも良好に機能することができる。
【0045】
1つまたは複数のコンピュータのシステムが特定の動作または行動を実行するように構成されるということは、システムが、動作中に動作または行動をシステムに実行させるソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せをシステム上にインストールしているということを意味する。1つまたは複数のコンピュータプログラムが特定の動作または行動を実行するように構成されるということは、1つまたは複数のプログラムが命令を含み、その命令は、データ処理装置によって実行されたとき、装置に動作または行動を実行させるということを意味する。
【0046】
本明細書で説明する主題および関数演算の実施形態は、本明細書で開示する構造およびそれらの構造的等価物を含めて、ディジタル電子回路、明確に具現化されたコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェア、またはそれらのうちの1つまたは複数の組合せの中に実装されてもよい。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわちデータ処理装置による実行のためにまたはデータ処理装置の動作を制御するために、有形の非一時的プログラム担体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されてもよい。代替または追加として、プログラム命令は、データ処理装置による実行に好適なレシーバ装置に送信するための情報を符号化するために生成される、人工的に生成された伝播信号、たとえば機械的に生成された電気、光、または電磁信号上に符号化されてもよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つまたは複数の組合せであってもよい。コンピュータ記憶媒体は、しかしながら伝播信号ではない。
【0047】
「データ処理装置」という用語は、例としてプログラム可能な1つのプロセッサ、1つのコンピュータ、または複数のプロセッサもしくはコンピュータを含むデータを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、問題となっているコンピュータプログラムに対する実行環境を生成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。
【0048】
コンピュータプログラム(それはまた、プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、もしくはコードと呼ばれるかまたは記述されることがある)は、コンパイラ型もしくはインタプリタ型の言語、または宣言型もしくは手続き型の言語を含む任意の形態のプログラミング言語で書かれてもよく、コンピュータプログラムは、スタンドアローンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するのに好適な他のユニットとして、任意の形態で配布されてもよい。コンピュータプログラムは、ファイルシステム内のファイルに相当する場合があるが、必須ではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部、たとえばマークアップ言語文書内、問題となっているプログラムに専用の単一のファイル内、あるいは1つまたは複数のモジュール、サブプログラムまたはコードの部分を記憶するファイルのような複数の協調的ファイル内に記憶される1つまたは複数のスクリプトの中に記憶されてもよい。コンピュータプログラムは、1つのサイトに配置される1つのコンピュータか、または複数のサイトにわたって分配されて通信ネットワークで相互接続される複数のコンピュータ上で実行されるように配布されてもよい。
【0049】
本明細書で使用される「エンジン」または「ソフトウェアエンジン」は、入力とは異なる出力を提供するソフトウェア実装入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット("SDK")、またはオブジェクトなど、符号化された機能ブロックであってもよい。各エンジンは、任意の適切なタイプのコンピューティングデバイス、たとえばサーバ、モバイルフォン、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、イーブックリーダー、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または1つもしくは複数のプロセッサおよびコンピュータ可読媒体を含む他の固定もしくはポータブルデバイス上に実装されてもよい。加えて、2つ以上のエンジンが、同じコンピューティングデバイス上、または異なるコンピューティングデバイス上に実装されてもよい。
【0050】
本明細書で説明するプロセスおよび論理フローは、入力データに対して動作して出力を生成することによって機能を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なコンピュータによって実行されてもよい。プロセスおよび論理フローはまた、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されてもよく、装置はまた、その専用論理回路として実装されてもよい。たとえば、プロセスおよび論理フローは、グラフィックス処理ユニット(GPU)によって実行されてもよく、装置はまた、GPUとして実装されてもよい。
【0051】
コンピュータプログラムの実行に好適なコンピュータは、例として、汎用もしくは専用のマイクロプロセッサ、または汎用および専用のマイクロプロセッサ、あるいは任意の他の種類の中央処理装置に基づくことができる。一般的に、中央処理装置は、リードオンリーメモリもしくはランダムアクセスメモリ、または両メモリから命令およびデータを受信することになる。コンピュータの必須要素は、命令を実行または実施するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般的に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば磁気ディスク、磁気光ディスクもしくは光ディスクを含むか、またはその記憶デバイスからデータを受信するかその記憶デバイスにデータを伝達するかもしくはその両方を行うように動作可能に結合されることになる。しかしながら、コンピュータは、必ずしもそのようなデバイスを有する必要があるとは限らない。その上、コンピュータは、別のデバイス、たとえば数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、あるいはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイスの中に組み込まれてもよい。
【0052】
コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体は、例として、EPROM、EEPROMおよびフラッシュメモリなどの半導体メモリデバイスと、内部ハードディスクもしくはリムーバブルディスクなどの磁気ディスクと、磁気光ディスクと、CD ROMおよびDVD-ROMディスクとを含む、すべての形態の不揮発性メモリ、メディアおよびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されてもよいか、または専用論理回路内に組み込まれてもよい。
【0053】
ユーザとのインタラクションを提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどの表示デバイスと、ユーザがコンピュータに入力を与えることができるマウスまたはトラックボールなどのキーボードおよびポインティングデバイスとを有するコンピュータ上に実装されてもよい。他の種類のデバイスは、同様にユーザとのインタラクションを提供するために使用されてもよく、たとえばユーザに与えられるフィードバックは任意の形態の知覚フィードバック、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響、音声または触覚の入力を含む任意の形態で受信されてもよい。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信すること、およびそのデバイスから文書を受信することによって、たとえばウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザとインタラクションすることができる。
【0054】
本明細書で説明する主題の実施形態は、たとえばデータサーバとしてバックエンド構成要素を含むか、またはアプリケーションサーバなどのミドルウェア構成要素を含むか、またはユーザが、本明細書で説明する主題の実装形態とインタラクションしてもよいグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含むか、または1つもしくは複数のそのようなバックエンド、ミドルウェアもしくはフロントエンドの構成要素の任意の組合せを含むコンピューティングシステム内に実装されてもよい。システムの構成要素は、任意の形態または媒体のディジタルデータ通信、たとえば通信ネットワークによって相互接続されてもよい。通信ネットワークの例には、ローカルエリアネットワーク("LAN")と、ワイドエリアネットワーク("WAN")、たとえばインターネットとが含まれる。
【0055】
コンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントおよびサーバは、一般に互いに離れており、通常通信ネットワークを介してインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作し、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0056】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、発明のまたは請求されるものの範囲を限定するものと解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴を説明するものと解釈されるべきである。個別の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態の中で組み合わせて実装されてもよい。反対に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において個別に、または任意の適切なサブコンビネーションにおいて実装されてもよい。その上、特徴は、特定の組合せにおいて働くように上記で説明され、最初にそのようなものとして請求されるが、いくつかの場合には、請求される組合せからの1つまたは複数の特徴は、その組合せから削除されてもよく、請求される組合せは、サブコンビネーション、またはサブコンビネーションのバリエーションに移されてもよい。
【0057】
同様に、動作は特定の順序で図に示されるが、これは、望ましい結果を達成するために、そのような動作が図示の特定の順序で、または一連の順序で実行されること、あるいは図示の動作のすべてが実行されることを必要とするものと理解されるべきではない。いくつかの状況では、多重タスク処理および並列処理が有利である場合がある。その上、上記で説明した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものと理解されるべきではなく、説明したプログラム構成要素およびシステムは、一般に単一のソフトウェア製品中に一緒に一体化されてもよく、または複数のソフトウェア製品中にパッケージ化されてもよいものと理解されるべきである。
【0058】
主題の特定の実施形態が説明された。他の実施形態は、以下の特許請求の範囲の中にある。たとえば、特許請求の範囲に記載される行動は、異なる順序で実行されても、依然として望ましい結果を達成することができる。一例として、添付の図に示すプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または一連の順序を必要とするとは限らない。いくつかの実装形態では、多重タスク処理および並列処理が有利である場合がある。