(57)【要約】機械学習モデルを効率的にトレーニングするためのシステムと方法が提示される。より具体的には、トレーニングデータの集合体内のターゲットノードの関連する近傍に関する情報を使用して、トレーニングデータは、トレーニングデータの初期状態が機械学習モデルで区別するのが比較的容易であるように編成することができる。最初の学習データで学習した後は、マッチングノードと非マッチングノードの区別がより困難になるように、学習データを更新する。実際、訓練データの難易度を反復的に更新し、更新された訓練データ上で機械学習モデルを訓練することで、機械学習モデルが所望の精度レベルに到達する速度が大幅に向上し、結果として、機械学習モデルの訓練にかかる時間と労力を削減することができる。【選択図】図７
2021517295.tif 000002
【特許請求の範囲】
【請求項１】
コーパスグラフ内のターゲットノードに関するマッチングノードを識別するために、機械学習モデルを効率的に訓練するコンピュータ実行方法であって、
トリプレットの入力ノードを含む訓練レコードを処理するために、機械学習モデルを初期化することであって、前記トリプレットの入力ノードが、ターゲットノード、対応するマッチングノード、および対応する非マッチングノードを含む、前記初期化すること、
訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別するための前記機械学習モデルを訓練する訓練データの集合体にアクセスして、前記ターゲットノードの対応する前記マッチングノードを正しく識別することであって、前記訓練データの集合体が複数の訓練レコードを含む、前記識別すること、
前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、前記訓練データの集合体を使用して前記機械学習モデルを訓練すること、
ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新すること、
更新された前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、前記しきい値レベルの精度が達成されるまで、更新された前記訓練データの集合体を使用して前記機械学習モデルを訓練すること、ならびに
訓練された前記機械学習モデルから、実行可能な機械学習モデルを生成すること
を含む、前記コンピュータ実行方法。
【請求項２】
前記訓練データの集合体を更新し、更新された前記訓練データの集合体を使用して前記機械学習モデルを訓練するステップが、さらに、
所定の反復回数の間、
ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新すること、および
更新された前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、前記しきい値レベルの精度が達成されるまで、更新された前記訓練データの集合体を使用して前記機械学習モデルを訓練すること
を含む、請求項１に記載のコンピュータ実行方法。
【請求項３】
前記所定の反復回数は、少なくとも２回である、請求項２に記載のコンピュータ実行方法。
【請求項４】
前記訓練データは、最初に、対応するマッチングノードまたは対応する非マッチングノードの少なくとも１つが欠落しているような不完全な訓練レコードを含み、
前記方法は、さらに、各訓練レコードが、ターゲットノードと、対応する非マッチングノードとを含むトリプレットの入力値を含むように、前記訓練データを完成させることを含む、請求項２に記載のコンピュータ実行方法。
【請求項５】
前記訓練データを完成させることが、
前記訓練データの集合体の各訓練レコードに対して、
前記訓練レコードの前記ターゲットノードの関連する近傍にアクセスすること、および
前記関連する近傍のうちの最も関連する近隣ノードを、前記訓練レコードの対応するマッチングノードとして選択すること
を含む、請求項４に記載のコンピュータ実行方法。
【請求項６】
前記訓練データを完成させることが、さらに、
前記訓練データの集合体の各訓練レコードに対して、
前記コーパスグラフからターゲットノードをランダムに、前記訓練レコードの対応する非マッチングノードとして選択することを含む、請求項５に記載のコンピュータ実行方法。
【請求項７】
ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新することは、
前記訓練データの集合体の各訓練レコードに対して、
前記訓練レコードの前記ターゲットノードの関連する近傍にアクセスすること、および
前記関連する近傍の近隣ノードを、以前の対応する前記マッチングノードよりも前記ターゲットノードと弱く関連している、前記訓練レコードの対応するマッチングノードとして選択すること
を含む、請求項４に記載のコンピュータ実行方法。
【請求項８】
前記訓練データの集合体の各訓練レコードに対して、
前記関連する近傍の近隣ノードを、以前の対応する前記非マッチングノードよりも前記ターゲットノードと強く関連している、前記訓練レコードの対応する非マッチングノードとして選択することをさらに含む、請求項７に記載のコンピュータ実行方法。
【請求項９】
ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新することは、
前記訓練データの集合体の各訓練レコードに対して、
前記訓練レコードの前記ターゲットノードの関連する近傍にアクセスすること、および
前記関連する近傍の近隣ノードを、以前の対応する前記非マッチングノードよりも前記ターゲットノードと強く関連している、前記訓練レコードの対応する非マッチングノードとして選択すること
をさらに含む、請求項４に記載のコンピュータ実行方法。
【請求項１０】
コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、前記媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステムで実行されると、コーパスグラフ内のターゲットノードに関するマッチングノードを識別するために、機械学習モデルを効率的に訓練する方法を実行する、前記コンピュータ可読媒体であって、前記方法が、
トリプレットの入力ノードを含む訓練レコードを処理するために、機械学習モデルを初期化することであって、前記トリプレットの入力ノードが、ターゲットノード、対応するマッチングノード、および対応する非マッチングノードを含む、前記初期化すること、
訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別するための前記機械学習モデルを訓練する訓練データの集合体にアクセスして、前記ターゲットノードの対応する前記マッチングノードを正しく識別することであって、前記訓練データの集合体が複数の訓練レコードを含む、前記識別すること、
前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、前記訓練データの集合体を使用して前記機械学習モデルを訓練すること、
所定の反復回数の間、
ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新すること、および
更新された前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、前記しきい値レベルの精度が達成されるまで、更新された前記訓練データの集合体を使用して前記機械学習モデルを訓練すること、ならびに
訓練された前記機械学習モデルから、実行可能な機械学習モデルを生成することを含む、前記コンピュータ可読媒体。
【請求項１１】
前記訓練データは、最初に、対応するマッチングノードまたは対応する非マッチングノードの少なくとも１つが欠落しているような不完全な訓練レコードを含み、
前記方法は、さらに、各訓練レコードが、ターゲットノードと、対応するマッチングノードと、対応する非マッチングノードとを含むトリプレットの入力値を含むように、前記訓練データを完成させることを含む、請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記訓練データを完成させることが、訓練レコードごとに、
前記訓練データの集合体の各訓練レコードに対して、
前記訓練レコードの前記ターゲットノードの関連する近傍にアクセスすること、および
前記関連する近傍のうちの最も関連する近隣ノードを、前記訓練レコードの対応するマッチングノードとして選択すること
を含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
コーパスグラフ内のノード間の関連性を識別するために、機械学習モデルを効率的に訓練するように構成されたコンピュータシステムであって、前記コンピュータシステムは、プロセッサとメモリとを備えており、前記プロセッサは、前記コーパスグラフ内の前記ノード間の関連性を識別するために、追加構成要素の一部として、または前記追加構成要素と組み合わせて前記メモリに格納された命令を実行する、前記コンピュータシステムであって、前記追加構成要素は、
アイテムのコーパスグラフを格納するデータストアと、
前記コンピュータシステムで実行の際に、ターゲットノードの関連する近傍を識別する、実行可能な関連近傍識別構成要素と、
実行可能モデル訓練構成要素であって、前記コンピュータシステムで実行の際に、
トリプレットの入力ノードを含む訓練レコードを処理するために、機械学習モデルを初期化することであって、前記トリプレットの入力ノードが、ターゲットノード、対応するマッチングノード、および対応する非マッチングノードを含む、前記初期化すること、
訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別するための前記機械学習モデルを訓練する訓練データの集合体にアクセスして、前記ターゲットノードの対応する前記マッチングノードを正しく識別することであって、前記訓練データの集合体が複数の訓練レコードを含む、前記識別すること、
前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、前記訓練データの集合体を使用して前記機械学習モデルを訓練すること、
所定の反復回数の間、
ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新すること、および
更新された前記訓練データの集合体の前記ターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、前記しきい値レベルの精度が達成されるまで、更新された前記訓練データの集合体を使用して前記機械学習モデルを訓練すること、ならびに
訓練された前記機械学習モデルから、実行可能な機械学習モデルを生成することを行う、
前記実行可能モデル訓練構成要素と
を備える、前記コンピュータシステム。
【請求項１４】
前記コンピュータシステムは、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードの前記ターゲットノードに関する対応する前記マッチングノードと対応する非マッチングノードとを区別する難しさが増すように、前記訓練データの集合体を更新する際に、さらに、
前記訓練データの集合体の各訓練レコードに対して、
前記訓練レコードの前記ターゲットノードの関連する近傍にアクセスすること、および
前記関連する近傍の近隣ノードを、以前の対応する前記マッチングノードよりも前記ターゲットノードと弱く関連している、前記訓練レコードの対応するマッチングノードとして選択することを行う、請求項１６に記載のコンピュータ実行方法。
【請求項１５】
前記コンピュータシステムは、さらに、
前記訓練データの集合体の各訓練レコードに対して、
前記関連する近傍の近隣ノードを、以前の対応する前記非マッチングノードよりも前記ターゲットノードと強く関連している、前記訓練レコードの対応する非マッチングノードとして選択する、請求項１９に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
レコメンダシステムは、一般に、オンラインの、ネットワークアクセス可能なシステムまたはサービスであって、ユーザインタラクションおよびユーザクエリに応答して、ユーザ／個人に対してコンテンツのレコメンデーションを作成するものである。一般的に言って、レコメンドされるコンテンツは、オンラインサービスへのユーザクエリの主題に、類似している、関連している、および／または相補的であると見なされる。例えば、ピンタレスト（登録商標）というオンラインサービスでは、そのユーザは、コンテンツをユーザの「ピンボード」に「ピン」することができる。コンテンツをボードにピンすることは、通常はユーザインタラクションと見なされ、「クエリ」とも見なされる。このクエリに応答して、ピンタレストレコメンダシステムは、対象とするピンボードのユーザのピンまたはコンテンツに、類似している、関連している、および／または相補的であり、推定上、好ましいと見なされる更なるピン／コンテンツをユーザに提案する。
【０００２】
多くの場合、コンテンツのレコメンデーションを作成するために、レコメンダシステムは、アイテムおよびデータの大規模なコーパスの多数の分析を実行して、アイテムのコーパス内の他のどのようなコンテンツが、その特定のアイテムクエリに対して、そのコンピュータユーザにとって、類似している、相補的である、関連している、および／または好ましい可能性があるかを判定する。これらの分析は、ディープニューラルネットワークによって行われ、および／または実施されることが増えている。たいてい、これらの分析は、サービスで認知されているコンテンツの埋め込みベクトル（特徴ベクトルともいう）または他のアイテムに基づいて行われる。各埋め込みベクトルは、コンテンツの対応するアイテムの様々な態様を表す。一般的に言って、「クエリ」の埋め込みベクトルを、既知コンテンツの他のアイテムの埋め込みベクトルと比較することにより、レコメンダサービスは、類似したコンテンツ、および／または相補的なコンテンツを提供することができる。
【０００３】
既知のコンテンツの集合体が大きくなる場合には、アイテムの大規模なコーパスの埋め込みベクトルの要素を、クエリアイテムの埋め込みベクトルと単純に比較することは実際的ではない。たとえば、ピンタレストのコンテンツのコーパスには、数十億のピンが含まれており、ピンの間には数百億もの接続がある。クエリアイテムの埋め込みベクトルを、その他の数十億ものコンテンツのアイテムの埋め込みベクトルと比較することは、到底、実行不可能である。しかも、（何十億というアイテムのコーパスから、いかにして関連性の高いコンテンツをレコメンドすべきかという）スケールの問題は、何億人ものユーザが、コンテンツのアイテムを投稿し、またはピンしており、コーパスグラフ内のコンテンツのアイテム間の関係を毎日、および／または毎時ごとに確立している場合と同じように、アイテムのコーパスが絶えず進化し、成長しているときには、さらに悪化する。
【０００４】
レコメンダシステムのフロントエンドでは、類似アイテム、相補的アイテム、および／または関連アイテムを正確に識別できるようにディープニューラルネットワークを訓練する（これは、当業者に十分理解されるように、機械学習モデルの特定の構成／実施の状態にある）には、かなりの時間と労力とがかかる。この場合の訓練とは、機械学習モデル／ディープニューラルネットワークに訓練データを与え、１つ以上の入力値が与えられると、正しい結果を予測できるような目標を実現することを意味する。
【０００５】
開示された主題の上記の態様と、付随する利点の多くとは、以下の図面と併せて以下の説明を参照することによって一層理解されるため、より容易に十分理解されるようになる。
【図面の簡単な説明】
【０００６】
【図１】開示された主題に関する説明に使用するためのデータの例示的なコーパスグラフを示す絵図である。
【図２】クエリノードの関連する近傍の埋め込み値を含む、クエリノードの集約埋め込みベクトルを生成するのに適した、開示された主題の態様による、例示的なルーチンを示す流れ図である。
【図３】開示された主題の態様による、ターゲットノードの関連する近傍を識別するのに適した例示的なルーチンを示す流れ図である。
【図４Ａ】開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、サブグラフが、コーパスグラフのノードの関連する近傍に対応する絵図である。
【図４Ｂ】開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、サブグラフが、コーパスグラフのノードの関連する近傍に対応する絵図である。
【図４Ｃ】開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、サブグラフが、コーパスグラフのノードの関連する近傍に対応する絵図である。
【図４Ｄ】開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、サブグラフが、コーパスグラフのノードの関連する近傍に対応する絵図である。
【図４Ｅ】開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、サブグラフが、コーパスグラフのノードの関連する近傍に対応する絵図である。
【図４Ｆ】開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、サブグラフが、コーパスグラフのノードの関連する近傍に対応する絵図である。
【図５】開示された主題の態様による、ターゲットノードの近傍埋め込み情報に近傍埋め込みベクトルを集約するための例示的なルーチンを示す流れ図である。
【図６】開示された主題の態様による、各再帰レベルの集約埋め込みベクトルの生成プロセスを示す絵図である。
【図７】開示された主題の態様による、ターゲットノードの集約埋め込みベクトルの例示的な生成を示す絵図である。
【図８】開示された主題の態様による、埋め込みベクトルを生成するのに適した深層学習／機械学習モデルの要素を示す絵図である。
【図９】開示された主題の態様による、ますます難しくなる訓練データを利用して機械学習モデルを訓練するのに適した例示的なルーチンを示す流れ図である。
【図１０】開示された主題の態様による、機械学習モデルを訓練するのに適した例示的なルーチンを示す流れ図である。
【図１１】本明細書に開示されたルーチンに関して記述される、ターゲットノードの集約埋め込みベクトルを判定するための命令で符号化された例示的なコンピュータ可読媒体を示すブロック図である。
【図１２】開示された主題の態様によるコンテンツレコメンダシステムを実施するために好適に構成された例示的なコンピューティングシステム（またはコンピューティングデバイス）を示すブロック図である。
【図１３】クエリの受信にコンテンツのレコメンデーションを伴って応答するための例示的なレコメンダルーチンを示す流れ図である。
【図１４】開示された主題の態様を実施するのに適した例示的なネットワーク環境を示すブロック図である。
【図１５】開示された主題の態様による、プロデューサとコンシューマとの間に分布している例示的な論理処理を示すブロック図である。
【図１６】開示された主題の態様による、近傍データ／埋め込みベクトルキューを介した、プロデューサの集団とコンシューマの集団との間の例示的な交換を示すブロック図である。
【図１７】開示された主題の態様による、コーパスグラフ内の複数のノードの集約埋め込みベクトルを生成するための実行可能なＭａｐＲｅｄｕｃｅフレームワークの構成および実行を示す流れ図である。
【発明を実施するための形態】
【０００７】
開示された主題の態様によれば、関連する近傍の要素とノード畳み込みとを組み合わせて、グラフのノードの拡張埋め込みベクトルを生成する、データ効率の良い、グラフベースの畳み込みネットワーク（ＧＣＮ）システムが開示される。より具体的には、集約埋め込みベクトルと呼ばれるこれらの拡張埋め込みベクトルは、ターゲットノードの（埋め込みベクトル形式の）埋め込み情報を、サブグラフ／関連する近傍埋め込み情報と組み合わせて、コーパスグラフのノードの集約埋め込みベクトルを形成する。これらの集約埋め込みベクトルは、コーパスグラフ内の所与のノードの関連する特徴についての更なる洞察を与え、それによって、クエリに応答してユーザにレコメンドするための、グラフ内の関連するノードの識別性が向上する。
【０００８】
分かりやすくする目的で、明確にするために、「例示的」という用語は、本明細書で使用するとき、あるものの例証または実例として機能するものと解釈されなければならず、そのようなものの理想的または主要な例証として解釈されてはならない。文体的に、単語または用語の後に「（複数可）」が続く場合、その意味は、用語／アイテムの具体例が１つあるかどうか、もしくは用語／アイテムの具体例が１つ以上あるかどうかに応じて、その単語または用語の単数形または複数形を示すものと解釈すべきである。たとえば、「ユーザ（複数可）」という用語は、１人以上のユーザと解釈されなくてはならない。さらに、複数のアイテムに関して「および／または」の組み合わせを使用することは、一方または両方のアイテムを指すものとされるべきである。
【０００９】
埋め込み（または埋め込み情報）、埋め込みベクトル、近傍埋め込みベクトル、および集約埋め込みベクトルという用語に言及する。分かりやすく、はっきりさせるために、「埋め込み」または埋め込み値は、コンテンツのアイテムのある特定の態様に対応しており、この態様を記述している。一般に、限定されるものではないが、埋め込み情報（コンテンツのアイテムの埋め込み値のセット）は、好適に構成されたディープニューラルネットワークによるコンテンツのアイテムの畳み込みの結果として判定される。一般に、コンテンツのアイテムへの埋め込み情報は、ディープニューラルネットワークによって埋め込みベクトルの形式で出力される。
【００１０】
コンテンツのアイテムの埋め込み情報の生成に関しては、コンテンツのアイテムに対応する埋め込みベクトルは、コンテンツのアイテムと、そのコンテンツのアイテムに関連付けられ得るメタデータとの両方から生成される。メタデータは、限定ではなく実例として、コンテンツタイプ（例えば、画像、オーディオ、ビデオ、データタイプなど）およびテキストコンテンツ（例えば、アイテムの説明、タイトル、ユニフォームリソース識別データなど）に関する情報を含み得る。
【００１１】
埋め込みベクトルは、埋め込みデータの集まりであり、特徴ベクトルと呼ばれることもある。埋め込みベクトルは、コンテンツの対応するアイテムの複数の態様を表す、埋め込み（各埋め込みは、処理および分析を容易にするために、通常は数値で表される）のｎ次元ベクトルである。上記の通り、一般に、ただしこれに限定されないが、コンテンツのアイテムの埋め込みベクトルは、機械学習モデルであるディープニューラルネットワークによる畳み込みによって判定される。示唆されるように、埋め込みベクトル（コーパスグラフ内のコンテンツのクエリアイテムと他のアイテムとの両方）は、関連するコンテンツ／関係性があるコンテンツを識別するために使用される。当業者に理解されるように、これらの埋め込みベクトルに関連する埋め込みベクトル空間は、しばしば特徴空間と呼ばれる。さらに、開示された主題の態様によれば、埋め込み空間の次元を低減させるために、コンテンツのアイテムに対する埋め込みベクトルを生成する際に、いくつかの次元縮退手法を使用してもよい。
【００１２】
コンテンツアイテム、およびそれに対応するメタデータから導出される埋め込みベクトルとは対照的に、近傍埋め込みベクトルは、ターゲットアイテムの関連する近傍にあるコンテンツアイテムの埋め込みベクトルから導出される埋め込みベクトルの特徴の組み合わせまたは集約のことを指す。アイテム自体の埋め込みベクトルと近傍埋め込みベクトルとの組み合わせ／集約は、コンテンツアイテムの集約埋め込みベクトルと呼ばれる。開示された主題の実施形態によれば、限定ではなく例示のために、集約埋め込みベクトルは、２０４８個の浮動小数点値を含み得、これらの「浮動小数」のうち１２２４個は、ターゲットノードの埋め込みベクトル用に予約され、１２２４個の浮動小数は、ターゲットノードの近傍埋め込みベクトル用に予約される。
【００１３】
本明細書で使用される「関連する近傍」という用語に関しては、関連する近傍とは、コーパスグラフ内のノードのサブグラフであって、その要素（ノード）が、コーパスグラフ内の他のノードとは対照的に、ターゲットノードに最も関連しているとされるノードのサブグラフであると解釈すべきである。コーパスグラフ内の各ノードは、それ自体の関連する近傍を持つことになり、典型的には、ただし限定されないが、第１の所与のノードの関連する近傍が、第２の所与のノードの関連する近傍に特有のものであるようになる。
【００１４】
分かりやすく、はっきりさせるために、「クエリ」という用語は、１つ以上のレコメンデーションがそれに対して作成され得るコンテンツのアイテムを指す。この関連で、ユーザは、コンテンツのアイテムをオンラインシステムに提出することに関して、追加情報を積極的に求めている場合もあれば、またはそうではない場合もある。たとえば、ユーザのクエリは、コンピュータユーザが、要求を直接的に開始することなく、コンテンツのアイテムとインタラクトすることに応答して開始されてもよい。
【００１５】
容易に認められるように、多くのオンラインシステムは、ユーザが提供したコンテンツ、および／またはユーザが作成したコンテンツを大量に保持しており、この多数のコンテンツは、多くの場合、コンテンツのグラフ（コーパスグラフとも呼ばれる）として編成され、グラフノードはコンテンツのアイテムに対応し、グラフノード間のエッジはコンテンツのアイテム間の関係を表す。これらのコンテンツのグラフは、（ソーシャルネットワーキングサービスによって維持され得る）ユーザ／人々の関係、人とトピックとの間の関心グラフ、データの集まりなどを表すことができる。人気のあるオンラインサービスでは、これらのグラフデータの集合体が非常に大きく複雑になることがよくある。上記の通り、ピンタレスト（登録商標）では、何百万ものユーザによって生成された、数十億というボード上にまとめ上げられた、数十億のピンを含むコンテンツ／データのグラフを維持している。容易に認められるように、このコンテンツ／データのコーパスは、コーパスグラフと呼ばれ、非常に複雑で相互に関連するものになる。
【００１６】
ピンタレスト（登録商標）に関しては、一般に、ユーザからのコンテンツを維持する多くのソーシャルネットワーキングサービスに適用可能であり、ユーザは、多くの場合、関連したコンテンツを編成し、コーパスグラフ中の関係接続は、これらの密接な関係を反映している。したがって、コーパスグラフの中には、内部凝集力の高い領域が多く存在する。開示された主題の目的上、これらの領域は、コーパスグラフ内の近傍と呼ばれる。コーパスグラフ内の各コンテンツアイテムは、両方のアイテムがそれぞれ他方の関連する近傍にある場合でも、第１のアイテムの関連する近傍が、第２のアイテムの関連する近傍と同じく合致する場合もあれば、または合致しない場合もあるように、固有の関連する近傍を有することになる。
【００１７】
上記の通り、深層学習ニューラルネットワーク（すなわち、グラフ畳み込みネットワークまたはＧＣＮ）は、コーパスグラフのさまざまなアイテムに対して埋め込みベクトルを生成するために、コーパスグラフ全体に依拠せざるを得ない。これらの埋め込みベクトルは、「リクエスト」に関して、類似したコンテンツ、および／または関連したコンテンツを識別するのに使用される。ただし、データポイントおよび関係の数が増えるにつれて、コーパスグラフ全体の埋め込みベクトルの処理および再処理にますます多くの時間がかかるようになり、膨大な処理帯域幅を必要とする。コーパスグラフの埋め込みベクトルを最新の状態に保ち、何十億もの埋め込みベクトルの中から関連したコンテンツを検索することは、不可能ではないにしても、実用的ではないと考えられている。
【００１８】
開示された主題の態様によれば、コーパスグラフ内のターゲットノードの関連する近傍を選択することにより、ターゲットノードの埋め込みだけでなく、関連する近傍の埋め込みも反映した埋め込みベクトル、すなわち、集約埋め込みベクトルを、コーパスグラフ全体の処理／畳み込みを行わずに判定することができる。当然ながら、レコメンダシステムでは、コンテンツのアイテムの埋め込みと、コンテンツのアイテムに対する関連する近傍の集約された埋め込みとの両方を活用することで、コンテンツをユーザにレコメンドする際にレコメンダシステムによって使用され得る関連したコンテンツおよび／または関連するコンテンツの識別性を強化することにつながる。
【００１９】
コーパスグラフ内のノードの集約埋め込みベクトルの生成を説明するために、図を参照する。図１は、開示された主題に関する説明および例証に使用するための例示的なコーパスグラフ１００を示す絵図である。コーパスグラフ１００は、グラフ１００内に円として示された様々なノード（各ノードがコーパスグラフのコンテンツのアイテムに対応する）と、ノード間の関係を示すノード間の接続またはエッジとを含む。限定ではなく実例として、これらの関係は、コンテンツアイテムのコレクションにおける共起、第１のコンテンツアイテムの第２のコンテンツアイテムへの参照などに対応し得る。説明および例証のために、コーパスグラフ１００内の様々なノードには、ノードＡ〜Ｚを含むラベルが付けられている。
【００２０】
数百億の相互接続を有する数十億のコンテンツのアイテムを含む実際のコーパスグラフとは対照的に、コーパスグラフ１００は非常に単純である。しかしながら、コーパスグラフ１００は、開示された主題の態様に従って、所与のノードの集約埋め込みベクトルを計算するための関連する近傍の選択範囲を例示することを含むので、開示された主題の態様を説明するのに適している。
【００２１】
さらに、図２を参照する。図２は、クエリノードの関連する近傍の埋め込み値を含む、クエリノードの集約埋め込みベクトルを生成するのに適した、開示された主題の態様による、例示的なルーチン２００を示す流れ図である。例示の目的で、コーパスグラフ１００のノードＪが「ターゲットノード」または「クエリノード」として識別されること、特に、ノードＪの集約埋め込みベクトルを生成することに関して参照が行われる。
【００２２】
ルーチン２００に関しては、このルーチンは、再帰的ルーチン、すなわち、その完全な機能を実行するために必要に応じてそのルーチン自体を「呼び出す」ルーチンとして記述されている。ルーチン２００に関しては、開示された主題の態様によれば、ルーチン２００は、「入力レベル」および「最大スタッキングレベル」に依拠して、行われる再帰的反復の回数を制限する。開示された主題の態様によれば、この最大スタッキングレベルは、ターゲットノードの集約埋め込みベクトルの近傍部分を生成する際に使用され得る近傍レベルの数に相当する。開示された主題の様々な実施形態では、使用される近傍レベルの数は、有利には２または３に設定される。最大スタッキングレベルは、実際には２に設定され得、これは、関連する近傍が、（関連する近隣を識別するためのランダムウォーク中に発生したカウントによって判定され、その関連する近隣がコーパスグラフ内の直近の近隣であるかどうかによらない）ターゲットノードの最も重要で関連性がある近隣のみを使用して、ターゲットノードに対する近傍埋め込みを形成することを意味する。しかし、最大スタッキングレベルが２というのは、あまりにも限定的で、関連性のある情報を見逃してしまうと考えられている。対照的に、最大スタッキングレベル５を使用することもできるが、経験的なデータによれば、第５のレベルの近傍情報は非常に発散するので、近傍埋め込み値の範囲内で、あるとしても限定的な影響を与えるようになることが示唆されている。最大スタッキングレベルが３と４の場合には、同様に良好な結果が得られるようであるが、効率性の面からは、スタッキングレベル（すなわち、最大スタッキングレベル）を３に制限することが示唆され得る。
【００２３】
ルーチン２００に関しては、ルーチン２００への最初の呼び出しの一環として、初期入力レベルに０が与えられる。さらに、ターゲットノードは、また、再帰的ルーチン２００への入力パラメータである。次いで当業者に理解されるように、ルーチン２００への最初の呼び出しは、集約埋め込みベクトルＡＥＶｔｎが求められるターゲットノードの両方を識別し、入力レベルを０に設定する（これが最初の呼び出しであることを示す）。
【００２４】
ブロック２０２で開始すると、コーパスグラフ１００内のターゲットノード（例えば、ノードＪ）がアクセスされる。ブロック２０４では、ターゲットノードに対応する埋め込みベクトルＥＶｔｎが生成される。開示された主題の態様によれば、この埋め込みベクトルは、ターゲットノード自体と、ターゲットノードに関連付けられ得る任意のメタデータとから生成される。たとえば、ノードＪ（ターゲットノード）が画像であるとすれば、画像のディープニューラルネットワークの畳み込みに基づいて、さらにノードＪに関連付けられ得る任意のメタデータに基づいて、埋め込みベクトルＥＶＪが生成される。ディープニューラルネットワークを介してコンテンツのアイテムを畳み込み、それによって埋め込みベクトルを生成する方法については、図８に関連して以下に詳しく記載されている。
【００２５】
決定ブロック２０６では、入力レベルが最大スタッキングレベルに達しているかどうか判定が行われる。このチェックは、ターゲットノードの集約埋め込みベクトルに収集され含められる近傍情報の量、特に、ターゲットノードの関連する近傍を識別する際に考慮される近隣の距離に関して制限する働きをする。実際に、再帰呼び出しのたびに、入力レベルを最大スタッキングレベルまで１ずつ増加させた。決定ブロック２０６において、入力レベルが（近傍埋め込み情報のスタッキングレベル数に達したことを示す）最大スタッキングレベル以上である場合、ルーチン２００はブロック２２２に進む。近傍埋め込み情報のスタッキングの限界に達したので、ブロック２２２では、このターゲットノードについての追加の近傍埋め込み情報は生成されない。したがって、ブロック２２２において、カレントターゲットノードの埋め込みベクトルＥＶｔｎが、近傍埋め込み情報のＮＵＬＬ値表示と連結され、ブロック２２０において、結果として得られた連結が、カレント入力レベルでのこのカレントターゲットノードの集約埋め込みベクトルＡＥＶｔｎとして返される。その後、ルーチン２００は終了する。
【００２６】
決定ブロック２０６に関して、入力レベルが（近傍埋め込み情報のスタッキングレベル数にまだ達していないことを示す）最大スタッキングレベル未満である場合、ルーチン２００はブロック２０８に進む。ブロック２０８では、入力されたターゲットノードの関連する近傍が識別される。コーパスグラフ１００などのコーパスグラフでは、関連する近傍は、少なくとも１つの関係／エッジを介してターゲットノードに直接的または間接的に接続されたノードであって、ターゲットノードに対して最大の関係および／または影響を有するノードをコーパスグラフ内に含む。コレクション内で頻繁にターゲットノードと共起する隣接ノードは、コレクション内で共起する頻度が低いノードに比べて、ターゲットノードにより関連性があり、ターゲットノードとの関係性が高いとされる。一般的に言えば、ターゲットノードとの関係性（例えば、共起の頻度、参照の頻度、特徴の類似性など）の強い隣接ノードが、ターゲットノードの関連する近傍と見なされる。カレントターゲットノードの関連する近傍を判定することは、図３のルーチン３００に関して記載されており、ターゲットノードの関連する近傍を識別するために、ランダムウォークと呼ばれる新規のデータ処理に依拠する。
【００２７】
開示された主題の態様によれば、「ランダムウォーク」は、コーパスグラフに記録された、あるノードから別のノードへの参照の頻度に依拠することにより、ターゲットノードの関連する近隣を識別する。このランダムウォークは、関連する近隣を識別する際に、ターゲットノードの関連する近傍の距離／範囲を制限し、さまざまなエッジの頻度／強度に依拠するような仕方で、エッジ／関係のトラバーサルのランダムな選択を利用して、コーパスグラフのサブグラフを識別し、その場合、サブグラフがターゲットノードの関連する近傍に相当する。このようにして、コーパスグラフの所与のサブグラフ内で、より強い関係を持つノードが、所与のノードの関連する近傍として識別される。
【００２８】
図３に移ると、図３は、コーパスグラフ内のターゲットノードの関連する近傍を識別するためのランダムウォークの態様を実施するのに適した例示的なルーチン３００であって、開示された主題の態様による例示的なルーチン３００を示す流れ図である。ルーチン２００と同様に、ターゲットノードはルーチン３００への入力パラメータである。
【００２９】
ブロック３０２では、コーパスグラフ１００内のターゲットノードが識別される。ブロック３０４では、「カレントノード」と呼ばれる、ルーチン３００で使用するためのテンポラリ変数が、入力されたターゲットノードで初期化される。説明のために、ターゲットノードがコーパスグラフ１００のノードＪであると仮定する。
【００３０】
ブロック３０６では、カレントノードから始まる反復ループが開始される。この反復内のさまざまなステップは、ターゲットノードにとって重要で関連性があるノードを識別するために実行される。ターゲットノードにとって重要な近傍ノードが識別されるようにするには、重要で関連性があるノードの正確な表示を生成するために、十分な数の反復が選択されなければならない。多くの実行可能な反復回数があるが、一実施形態では、１００００回の反復が効率的にかつオンデマンドで実行され得る。
【００３１】
ブロック３０８では、ランダムウォークの最初のデータ処理として、カレントノードをターゲットノードに戻すかどうか判定が行われる。カレントノードをターゲットノードに戻すことで、「次の」カレントノードの選択がターゲットノードから極端に離れて分岐しないようにする。開示された主題の態様によれば、ターゲットノードに戻す判定は、ランダムな判定である。例えば、一実施形態では、３つの選択肢のうちの１つのランダムな選択が行われ、その場合、３つの選択肢のうちの１つがカレントノードをターゲットノードに戻すリセットを生じさせ、一方、他の２つの選択肢はリセットを生じさせない。もちろん、ターゲットノードの識別された近傍の所望の幅および深さに応じて、リセットするための他の多くの比率（たとえば、４のうち１、５のうち２、７のうち２など）を使用することができる。ブロック３０８でのこのランダムな選択に関して、ランダムな判定がカレントノードをターゲットノードに戻すことである場合、ブロック３１０では、カレントノードがターゲットノードに戻るようにリセットされる。あるいは（リセットしないで）、ルーチン３００はブロック３０８から直接ブロック３１２に進む。
【００３２】
ブロック３１２において、カレントノードを参照して、カレントノードと他の接続されたノードとの様々な接続の中から、接続の選択が行われる。この選択は、カレントノードとその他のノードとの接続の中からのランダムな選択として行われ、カレントノードと別のノードとの接続の頻度を考慮して行われる。例えば、図１のコーパスグラフ１００を参照すると、ノードＦはノードＤおよびＨの両方に接続されている。任意のノード間の頻度を考慮せずに、ノードＦから次のカレントノードをランダムに選択すると、ノードＤまたはノードＨのいずれかを選択する確率は５０％になる。また一方、ノードＦとノードＤとの関係の頻度が、ノードＦとノードＨとの関係の頻度の３倍であるとすれば、ノードＦからノードＤが選択される確率は７５％になる。ブロック３１２の次の／新しいカレントノードをランダムに選択する一環として、選択されたノードは新しいカレントノードになる。
【００３３】
ブロック３１４では、新しいカレントノードが、カレントノードの「訪問済みリスト」に既に存在するかどうか判定が行われる。この訪問済みリストは、カレントノードに対するランダムウォークの一環として訪問されたノードを追跡し、さらに、このランダムウォーク中にリスト内の各ノードが訪問された回数を追跡し、および／または表示するものである。したがって、ブロック３１４で、新しいカレントノードが訪問済みリストにおいてまだ識別されていないと判定された場合、ブロック３１６で、カレントノード（たとえば、ノードＩ）が、訪問済みリストに追加され、ゼロ（以前の訪問なし）に初期化される。
【００３４】
ブロック３１８では、この新しいカレントノードに対する訪問済みリスト中の訪問カウントがインクリメントされ、ランダムウォークの一環として新しい訪問を指示する。ブロック３２０では、上記の反復のステップを完了した後に、実行すべき反復がさらにある場合、ルーチン３００は、次の反復のためにブロック３０６に戻る。実行すべき追加の反復がない場合、ルーチン３００はブロック３２２に進む。
【００３５】
ブロック３２２において、訪問リストが検査されて、どのノードがターゲットノードに最も関連しているかを、様々な訪問カウントに応じて判定する。このターゲットノードの関連する近傍の選択は、例えば（限定ではなく実例として）、訪問カウントが最も多い上位ｎ個のノード（例えば、最も頻繁に訪問される上位２００個のノード）、訪問カウントが最も多い上位ｎパーセントのノード（たとえば、訪問された上位１０パーセントのノード）、閾値訪問回数を持つ上位ｎ個のノード（たとえば、少なくとも２０回訪問されたノード）、すべての訪問の少なくとも閾値パーセンテージを集合的に占める上位ｎ個のノード（たとえば、訪問の少なくとも１５％を集合的に構成する上位訪問済みノード）など、様々なノードにおける訪問回数に基づく幾つもの基準に従って行うことができる。多くの場合、訪問されたノードの総数は、閾値の数および／またはパーセンテージを判定する際の要因となり得る。
【００３６】
図４Ａ〜図４Ｆは、開示された主題の態様による、図１のコーパスグラフの例示的なサブグラフを示し、各サブグラフが、コーパスグラフのターゲットノードの関連する近傍を表す絵図である。これらのサブグラフ（サブグラフ４００〜４１０を含む）のそれぞれにおいて、それぞれのサブグラフの影付きノードはターゲットノードを表し、影なしノードはランダムウォークプロセスによって判定された近隣ノードを表す。図４Ａ〜図４Ｆを参照すると、サブグラフ４００は、ＲＮ（Ｊ）＝｛Ｇ，Ｈ，Ｉ，Ｌ，Ｐ｝と表記されるノードＧ、Ｈ、Ｉ、Ｌ、およびＰの集合を構成するものとして、ターゲットノードＪの関連する近傍を例示する。以下のリストは、ルーチン３００のランダムウォークプロセスによって判定され得る、コーパスグラフ内の様々なノードの例示的な関連する近傍を示す。
【００３７】
ＲＮ（Ｊ）＝｛Ｇ，Ｈ，Ｉ，Ｌ，Ｐ｝、
ＲＮ（Ｇ）＝｛Ｅ，Ｊ，Ｑ，Ｓ｝、
ＲＮ（Ｈ）＝｛Ｄ，Ｆ，Ｉ｝、
ＲＮ（Ｉ）＝｛Ｄ，Ｆ，Ｈ，Ｊ，Ｌ｝、
ＲＮ（Ｌ）＝｛Ｈ，Ｉ，Ｊ，Ｎ，Ｐ，Ｕ｝、および
ＲＮ（Ｐ）＝｛Ａ，Ｂ，Ｌ，Ｕ｝
【００３８】
開示された主題の態様によれば、図４Ａ〜図４Ｆに示すように、ノードＪなどのターゲットノードの関連する近傍ノードは、ターゲットノードに直接接続されなくてもいい。例えば、サブグラフ４０６のノードＤ、Ｆ、およびＪは、ターゲットノードＩに間接的にのみ接続されながらも、ターゲットノードＩの関連する近傍に含まれている。近傍埋め込み情報のための近傍ノードの処理の際に、ルーチン３００のこの部分では、ターゲットノードと近傍ノードとの間のリンク距離は影響しない。
【００３９】
ターゲットノードの関連する近傍のノードを識別した後、ルーチン３００は終了する。
【００４０】
再びルーチン２００に戻り、カレントターゲットノードの関連する近傍を識別した後、ブロック２１０において、カレントターゲットノードの関連する近傍から近傍埋め込み情報を生成する目的で、反復ループが開始される。この反復プロセスは、カレントターゲットノードの関連する近傍のノードのそれぞれのために繰り返し適用される。ターゲットノードＪに対しての例を参照すると、反復ループは、ノードＧ、Ｈ、Ｉ、Ｌ、およびＰの集合のために繰り返し適用される。
【００４１】
ブロック２１２では、近傍ノードを反復することの一環として、この同じルーチン２００への再帰呼び出しは、ターゲットノードが現在反復中の近隣ノードであり、インクリメント／増加された入力レベルで行われる。上記の例を続けると、ルーチン２００は、入力レベルが１のターゲットノードＧに対して呼び出され得る。
【００４２】
近隣ノードの集約埋め込みベクトルを判定した後、ブロック２１４で、処理すべき追加の隣接ノードがある場合、ルーチン２００は、追加の処理／反復のためにブロック２１０に戻る。あるいは、すべての近隣ノードが処理されると、つまり、カレントターゲットノードの近隣ノードのそれぞれの集約埋め込みベクトルが生成されたことを意味し、ルーチン２００はブロック２１６に進む。
【００４３】
ブロック２１６では、近隣ノードの集約埋め込みベクトルが集められ、近傍埋め込み情報に結合される。図５を参照すると、図５は、ターゲットノードの近隣の近傍埋め込みベクトルを近傍埋め込み情報に集約するための、開示された主題の態様による、例示的なルーチン５００を示す流れ図である。
【００４４】
ブロック５０２で開始すると、反復ループが開始されて、ターゲットノードの近隣のそれぞれのために繰り返される。上記の例に関しては、ターゲットノードがノードＪであるとすれば、これは、ルーチン５００が、ノードＧ、Ｈ、Ｉ、Ｌ、およびＰのそれぞれのために繰り返し適用されることを意味する。ブロック５０４で、（ルーチン２００の反復によって判定される）現在反復中の近隣ノードの集約埋め込みベクトルがアクセスされる。ブロック５０６では、反復は、近傍ノードの集約埋め込みベクトルにさらにアクセスするためにブロック５０２に戻るか、または近傍ノードの集約埋め込みベクトルがアクセスされた後、ブロック５０８に戻る。
【００４５】
ブロック５０８で、近傍ノードのそれぞれに対して重要度値が決定される。重要度値は、ターゲットノードの関連する近傍内の特定のノードが、この関連する近傍内の他のノードよりもターゲットノードとの関係性または適合性が強いことを反映している。このステップ（ブロック５０８）は、この重要度を取得するために使用される。開示された主題の態様によれば、ノードの重要度値は、ターゲットノードに対応する（ルーチン３００に関して上記で説明した）訪問リストに載っている様々な近傍ノードの訪問カウントに応じて決定され、関連する近傍の識別時に決定される。
【００４６】
ブロック５１０において、開示された主題の一実施形態によれば、近傍ノードの合計された訪問カウントは、それらがまとめて合計で１００になるように、ノード間で比例的にスケール変更され、または正規化される。次に、これらの比例スケールは、近傍埋め込み情報を生成する際に適用され、ここで、近傍埋め込み情報の埋め込み／特徴ごとに、ノードのスケール変更された値に応じて、ノードの埋め込みのランダムな選択の確率を決定して、さまざまな近傍ノードの埋め込みベクトルの中からランダムな選択が行われる。たとえば、上記のように、近傍ノードにノードＧ、Ｈ、Ｉ、Ｌ、およびＰが含まれていると仮定する。また、これらのノードの訪問カウントが、それぞれ、２０、１０、１５、３５、および２０であると仮定する。この例で分かるように、ノードＬは、他のノードよりもターゲットノードＪに関連性が高いと見なされるだろう。この例では、これらのカウントを合計すると１００になるため、これらのカウントを１００にスケール変更することは簡単である。したがって、近傍埋め込み情報の各埋め込みに関して、所与の近傍ノードから埋め込みを選択する確率は、ノードＧに対しては２０％、ノードＨに対しては１０％、ノードＩに対しては１５％、ノードＬに対しては３５％、ノードＰに対しては２０％に相当する。
【００４７】
代替の実施形態では、様々な近傍ノードの重要度に応じて、近傍ノードからの近傍埋め込み情報の値を集約することは、同じ態様／特徴を対象とするそれらの埋め込み値を識別すること、およびその態様／特徴のための結果として生じる値を選択することを含む。さまざまな実施形態では、競合が生じる場合、現在の近隣の値がその近隣の近隣よりも影響力が大きいと仮定して、埋込みベクトルの態様／特徴が、ネットワーク埋め込み情報にわたって選択される。埋め込みベクトルからの態様／特徴の値がない場合は、ネットワーク埋め込み情報からの値を使用してもよい。
【００４８】
さらに別の実施形態では、近傍埋め込み情報のさまざまな要素に、対応する近傍ノードの重要度値が乗算される。その後、平均（ここでは加重平均）が各要素の近傍ノード間で決定される。
【００４９】
ブロック５１２では、さまざまな近傍ノードのノード重要度に従って、近傍埋め込み情報の埋め込み値が選択されて集約される。一例として上記で説明したように、近傍埋め込み情報の各埋め込みに関して、所与の近傍ノードから埋め込みを選択する確率は、ノードのスケール変更された値に相当する。その後、ブロック５１４において、カレントターゲットノードについての集約された近傍埋め込み情報が返され、ルーチン５００は終了する。
【００５０】
図２のルーチン２００に戻ると、カレントターゲットノードについての近傍埋め込み情報を生成した後、ブロック２１８で、カレントターゲットノードの埋め込みベクトルと、カレントターゲットノードについての近傍埋め込み情報とが連結され、ターゲットノードの集約埋め込みベクトルを形成する。ブロック２２０では、ターゲットノードの集約埋め込みベクトルが返される。その後、ルーチン２００は終了する。
【００５１】
ルーチン２００の再帰的性質に関して、当業者が理解するように、再帰呼び出しはコーディングの目的に有利であり得るが、再帰呼び出しは、機能性の範囲から逸脱することなく、非再帰的な様式で実装されてもよい。したがって、ルーチン２００は再帰的ルーチンとして記述されているが、これは例示的なものであり、開示された主題を限定するものではない。
【００５２】
ルーチン２００に記載された再帰的プロセスに関して、当業者は、再帰呼び出しの性質と同様に、各レベルで同様のプロセスが実行されることを理解するであろう。このプロセスには、ターゲットノードの畳み込みによる埋め込みベクトルの生成、ターゲットノードの近隣の埋め込みベクトルの集約による近傍埋め込み情報の生成、およびこの両方の連結によるターゲットノードの集約埋め込みベクトルの形成が含まれる。図６は、各再帰レベルに対して実行され、開示された主題の態様による、集約埋め込みベクトル６１２の生成プロセス６００を示す絵図である。
【００５３】
このプロセス６００は、ターゲットノード６０４へのアクセスと、ターゲットノードの畳み込み６０８とを含む。さらに、図５のルーチン５００に関して先に述べたように、集約埋め込みベクトル６２２〜６２６などの、ターゲットノードの近隣の集約埋め込みベクトルは、近傍埋め込み情報に結合／集約（６０６）される。次に、埋め込みベクトルと近傍埋め込み情報とは、ターゲットノードの集約埋め込みベクトル６１２に連結（６１０）される。
【００５４】
上記の通り、このプロセス６００は、特に、ターゲットノードの近隣の集約埋め込みベクトルを生成することに関して、再帰的なプロセスである。さらに、上記のように、再帰的性質は、最大スタッキングレベル（すなわち、複数のレベルからの近傍埋め込み情報の積み重ね）と呼ばれる、ある所定の固定レベルに制限されている。これによって、局部的な近傍を識別し、これらの近傍がターゲットノードに与える影響を識別することが可能となる。
【００５５】
図７は、開示された主題の態様による、コーパスグラフ１００のターゲットノードであるノードＪの集約埋め込みベクトル７０２の例示的な生成７００を示す絵図である。図に示すように、生成プロセスは、集約埋め込みベクトル７０２を生成するためのノードＪに関するプロセス６００の適用を含む。図に示すように、ノードＪの近隣の組み合わせ／集約６０６への入力には、ノードＧ、Ｈ、Ｉ、Ｌ、およびＰの集約埋め込みベクトルが含まれる。
【００５６】
図に示すように、ノードＪの近隣のそれぞれが同様に処理されて、集約埋め込みベクトルを生成する。それぞれには、畳み込まれた埋め込みベクトルと近傍埋め込み情報との連結に加えて、ノードの畳み込みが含まれる。ターゲットノードＪの処理との違いは、ノードＪの近隣の埋め込みベクトルを処理する際に、入力レベルが他の近隣まで到達せず、各再帰的プロセスにおいて毎回制限されるという事実である。図に示すように、ノードＧの集約埋め込みベクトルを処理する際に、ノードＥ、Ｊ、Ｑ、およびＳを含むノードＧの近隣の埋め込みベクトルも処理される。しかし、入力レベルはノードＥ処理時に達せられるので、ノードＥの近隣は、ノードＥの埋め込みベクトル７０６には織り込まれていない。また、例示の目的で、最終レベルのノードの処理７０８は簡略化され、ノードの畳み込みのみを示し、ＮＵＬＬ近傍埋め込み情報の集約を示さない。また、増加した各レベルの集約埋め込みベクトルは、より少ない近傍埋め込み情報に基づくものであるため、図７の様々なレベルの集約埋め込みベクトルは、若干異なる形状で示されている。より具体的には、（ターゲットノードＪの）レベル０の集約埋め込みベクトルを八角形で示し、（例えば、ノードＧの）レベル１の集約埋め込みベクトルを六角形で示し、（例えば、ノードＥの）レベル２の集約埋め込みベクトルを五角形で示す。
【００５７】
当然ながら、コーパスグラフが数十億のノードを含む場合、コーパスグラフ内の各ノードの集約埋め込みベクトルの処理には、かなりの処理帯域幅と処理時間とが必要とされ得る。実際、大規模なコーパスグラフにおけるノードの、こうした集約埋め込みベクトルの生成は、オフラインおよび／またはバッチ方式で行うことができるが、それでも相当な処理リソースと時間とを必要とする。そのような状況では、多くのＩＴ専門家が、コンピュータシステムのアレイを利用してベクトルの処理／生成を行うために、ＡｐａｃｈｅのＨａｄｏｏｐなど、ＭａｐＲｅｄｕｃｅの実装に目を向けることを当業者は理解するであろう。
【００５８】
当業者が理解するように、ＭａｐＲｅｄｕｃｅは、クラスタ上で並列分散アルゴリズムを用いてビッグデータセットの処理および生成を行うためのプログラミングモデルおよび関連実装である。ＭａｐＲｅｄｕｃｅの実装は、「マッパー」と「リデューサ」とを含む。マッパーは、所与の入力値に対して出力を生成するアルゴリズムに相当する。リデューサは、マッパーおよび／または他のリデューサの出力値を集約するアルゴリズムである。「ＭａｐＲｅｄｕｃｅ」は、分散サーバをマーシャリングすること、さまざまなタスクを並行して実行すること、システムのさまざまな部分間のすべての通信とデータ転送とを管理すること、およびリダンダンシとフォールトトレランスとを提供することにより、処理を統制する。
【００５９】
開示された主題に関して、また図６および図７に関しては、畳み込み６０８などの畳み込み演算は、所与の入力、すなわちターゲットノードを取り込み、その入力をさまざまな演算で変換し、出力値、すなわちターゲットノードの埋め込みベクトルを生成するという点でマッパーと見なされる。その一方、集約６０６は、他のマッパーおよび／またはリデューサの出力を受け入れるリデューサの一例である。ブロック６００は、ターゲットノードの畳み込みを、集約６０６から得られるネットワーク埋め込み情報と組み合わせて、集約埋め込みベクトル６１２を生成するための組み合わせ６１０を示しているが、この区別は、例示目的のための論理的な区別であった。ただし、開示された主題の様々な実施形態では、集約６０６および組み合わせ６１０は、集約埋め込みベクトル６１２を生成するための単一のリデューサ演算に含まれる。
【００６０】
コーパスグラフ内のノードの結果（たとえば、集約埋め込みベクトル）を生成することへの一般的なアプローチは、すべてのノードを反復し、各ノードに対して、集約埋め込みベクトルを生成することである。さまざまな入力は、コーパスグラフ内の所与のターゲットノードについて、ターゲットノードの埋め込みベクトル、ターゲットノードの近傍埋め込み情報を判定し、終段のリデューサの一環として、２つの値を集約埋め込みベクトルにまとめるＭａｐＲｅｄｕｃｅインプリメンテーションに送られる。このアプローチは、所望の結果を達成する一方で、処理帯域幅の面で著しく非効率的であり、処理の際の非効率性のために多大な時間を必要とする可能性がある。図７の図７００について説明するために、この単純な図では、ノードＪがマッパー／畳み込みへの入力として４回現れることを考慮されたい。当然ながら、ノードＪの埋め込みベクトルを、要求されるたびに計算することは、かなりの非効率となる。
【００６１】
開示された主題の態様によれば、コーパスグラフのノードは、ＭａｐＲｅｄｕｃｅインプリメンテーションによって集約埋め込みベクトルを生成するために、コーパスグラフにわたって２回の「パス」を行うだけでよいように、独特の方法で処理される。この新規のアプローチにおいては、各ターゲットノードを完全に処理する（つまり、その集約埋め込みベクトルを生成する）のではなく、コーパスグラフ内の各ノードに対して埋め込みベクトルが（畳み込みマッパーを介して）生成される。最初のパス／ステップでは、生成された埋め込みベクトルは、少なくとも一時的に、対応するターゲットノードと共に格納される。次のパスでは、ターゲットノードが利用可能であるとき、ターゲットノードのうちのそれぞれのノードの関連する近傍がアクセスされ、対応する集約埋め込みベクトルに（集約マッパーを介して）集約される。実際に、図６および図７では、近傍埋め込み情報を判定する際に使用されるスタッキングのレベルに応じて、１つ以上の中間パスを提案しているが、これらは論理的なステップであり、単一の集約リデューサが、中間の集約（すなわち、第１のレベルの集約埋め込みベクトル）を含む、埋め込みベクトルの集約および組み合わせを行うことができる。
【００６２】
開示された主題の更なる実施形態によれば、コーパスグラフのノードの関連する近傍がまだ生成されていない場合、第１の実施形態では、コーパスグラフのノードの集約埋め込みベクトルを生成するようにＭａｐＲｅｄｕｃｅフレームワークを構成することに加えて、コーパスグラフのノードを反復し、各ノードについて、ノードの関連する近傍を判定して、その関連する近傍をノードに関連付けるために、プロセスが実行され得る。あるいは、ＭａｐＲｅｄｕｃｅフレームワークのマッパー関数を、ノードの埋め込みベクトルを生成するとともに、各ノードの関連する近傍を生成するように、追加として構成してもよい。さらには、追加のマッパー関数をフレームワークに追加し、この追加のマッパー関数を、コーパスグラフのノードを反復し、各ノードに対して、コーパスグラフ内のノードの関連する近傍を生成して、その関連する近傍をノードに関連付けるように構成してもよい。
【００６３】
図１７を参照すると、図１７は、コーパスグラフ内の複数のノードのうちのそれぞれのノードの集約埋め込みベクトルを効率的に生成するのに適した例示的なルーチン１７００を示す流れ図である。ブロック１７０２で開始すると、コーパスグラフ（コーパスグラフ１００など）がアクセスされる。
【００６４】
ブロック１７０４において、実行可能な様々な呼び出しが行われて、処理すべき様々なノードのうちのそれぞれのノードの関連する近傍を生成し、および／または判定する。開示された主題の態様によれば、任意の所与のノードの関連する近傍を生成することは、図３のルーチン３００に関して上に述べた通りである。もちろん、多くの場合、所与のノードの関連する近傍が既に判定されて、キャッシュされていることがあり、その場合、そのノードの近傍は単にキャッシュされる。一実施形態では、ノードは、複数の処理コア、例えば、１２８個の処理コアを有する１つ以上のコンピュータによってバッチ方式で処理される。
【００６５】
ブロック１７０６では、ＭａｐＲｅｄｕｃｅフレームワークは、実行時にコーパスグラフのさまざまなノードの埋め込みベクトルを生成する１つ以上のマッパー関数で構成される。これらの埋め込みベクトルは、それらの関連する近傍にではなく、ノード自体に基づいている。
【００６６】
ブロック１７０８では、実行可能なＭａｐＲｅｄｕｃｅフレームワークは、実行時に、マッパー関数の生成されたデータを（埋め込みベクトルの生成の際に）集約して、コーパスグラフ内の対応する複数ノードの複数の集約埋め込みベクトルを生成する１つ以上のリデューサ関数で構成される。
【００６７】
ＭａｐＲｅｄｕｃｅフレームワークが適切に構成されていると、例示的なルーチン１７００によって、コーパスグラフへのアクセスがＭａｐＲｅｄｕｃｅフレームワークに提供され、さらにＭａｐＲｅｄｕｃｅフレームワークが実行される。当然ながら、当業者が理解するように、その場合、この実行は、コーパスグラフのノードの集約埋め込みベクトルを生成するために、協調構成要素の指示の下で、コーパスグラフのさまざまなノードのために繰り返される。
【００６８】
実例および一例として、開示された主題の態様によれば、ブロック１７０４に関しては、コーパスグラフのノードに対して、以下の表１などの情報テーブルが生成され得る。
【表１】
2021517295.tif 000003
表１−ノードおよび関連する近隣データ
【００６９】
ブロック１７０６に関しては、ＭａｐＲｅｄｕｃｅフレームワークは、１つ以上のマッパー関数で構成されている。一例では、マッパー関数は、所与のノード（またはそれを構成する要素）を取り込み、ノードの埋め込みベクトルを生成するように作用し、以下の表２に示すように、キー（ノード）および値（埋め込みベクトル）を持つデータの表を生成する。
【表２】
2021517295.tif 000004
【００７０】
ＭａｐＲｅｄｕｃｅフレームワーク内の別のマッパー関数（または一連のマッパー関数）は、例えば表１に示すように、ノード／関連する近隣データを、１つ以上のリデュース関数によって容易に処理できるデータに取り込むように構成される。この関連で、ノードをその関連する近傍に関連付けるデータセットは、以下の表３に示すように、ノード、近隣ノード、および近隣ノードの埋め込みベクトルを有するデータセットにマッピングされている。
【表３】
2021517295.tif 000005
表３−マッパー関数の結果：ノード／近隣／埋め込みベクトルデータ
【００７１】
処理を完了するために、これら（および場合によっては、利用されているＭａｐＲｅｄｕｃｅフレームワークに応じて必要となり得る他のテーブル）を用いて、ＭａｐＲｅｄｕｃｅフレームワークの１つ以上のリデューサ関数、または一連のリデューサ関数は、以下の表４に示すように、コーパスグラフ内のノードのうちのそれぞれのノードの集約埋め込みベクトルに情報を集約するように構成されている。
【表４】
2021517295.tif 000006
表４−リデューサ関数（複数可）の結果：ノード／集約埋め込みベクトルデータ
【００７２】
理解されるように、これらのＭａｐＲｅｄｕｃｅ関数は、マッパーおよびリデューサの両方とも、上記のごとく図５、図６、および図７で概説されているように、コーパスグラフ内のノードのうちのそれぞれのノードの集約埋め込みベクトルの生成を効率的に実行するように構成されている。
【００７３】
ブロック１７１０で、ＭａｐＲｅｄｕｃｅフレームワークを構成した後、コーパスグラフのノードが、それらの関連する近傍とともに、ＭａｐＲｅｄｕｃｅフレームワークに渡され、フレームワークが実行されて、コーパスグラフのノードの集約埋め込みベクトルが生成される。その後、ルーチン１７００は終了する。
【００７４】
上記のように、開示された主題の様々な態様によれば、コンテンツアイテムの埋め込みベクトルは、畳み込みプロセスから生成され得る。一般に、限定されるものではないが、畳み込みプロセスは、訓練されたディープニューラルネットワークによって実行される。図８は、開示された主題の態様による、１つ以上のコンテンツアイテムおよび対応するメタデータ（コンテンツアイテム８０２など）の、１つ以上の埋め込みベクトル（埋め込みベクトル８２０など）を生成するのに適した深層学習ネットワーク８００（深層学習モデルとも呼ばれる）の要素を示す絵図である。
【００７５】
当業者は理解するであろうが、ディープニューラルネットワーク８００は、入力層８０４および出力層８１６を含む複数の実行層、ならびに１つ以上の隠れ層を含む。実例として、実行可能モデル８００は、隠れ層８０６および８１８を含む、ｍ個の隠れ層を含む。入力層８０４は、モデル８００が、対応する結果（例えば、埋め込みベクトル８２０）を生成する入力データ（例えば、コンテンツアイテム８０２およびそのメタデータ）を受け入れる。
【００７６】
入力層８０４は、入力データ（この場合、コンテンツアイテム８０２と、コンテンツアイテムに関連付けられ得る任意のメタデータ）を受け入れ、１つ以上の所定のアルゴリズムおよび／またはヒューリスティックに従って、入力データから、１つ以上の態様、特徴、および／またはファセットに対する複数の値を生成する。これらの値（図示していないが、入力層８０４から第１の隠れ層８０６の別々の処理ノードまで延びる、エッジ８１４などの個々のエッジによって暗に示される）は、第１の層の出力であり、実行可能モデル８００の第１の隠れ層にある処理ノード８１０および８１２などの処理ノードに、入力データとして分配される。
【００７７】
一般に、限定されるものではないが、入力層８０４から、第１の隠れ層の第１の処理ノード（隠れ層８０６のノード８１０など）に渡される入力データの値／ファセットは、その同じ隠れ層の第２の処理ノード（隠れ層８０６のノード８１２など）に渡される値／ファセットとは異なる。
【００７８】
各隠れ層は、複数の処理ノードを含む。限定ではなく実例として、隠れ層８０６は、ｎ個の処理ノードＮ１〜Ｎｎを含む。第１の隠れ層８０６の処理ノードは、一般に、限定されるものではないが、入力層からの単一の入力を有するが、次の隠れ層の処理ノードは、一般に、前の入力層の、１つ以上の処理ノードからの入力値を有する。実行可能モデル８００に示すように、各隠れ層（第１の隠れ層８０６を除く）は、「上位」隠れ層（例えば、層８０６）の処理ノードから「下位」隠れ層に進むエッジによって指し示されるように、先行する隠れ層の処理ノードのそれぞれからの入力データ／入力信号を受け入れる。
【００７９】
各処理ノードは、（処理ノードが、単一のアイテムの入力データを受け取るか、複数のアイテムの入力データを受け取るかにかかわらず）受け取る入力データに対する１つ以上の「畳み込み」または「計算」を実施して、単一の出力を生成する。これらの畳み込み／計算は、（限定ではなく実例として）集約、クラスタリング、変換、組み合わせ、選択および／またはフィルタ、数学的操作、線形回帰および多変数回帰、統計的判定および統計的予測など、出力データを生成するための幾つもの関数を含み得る。さらに、入力データの個々のアイテムは、任意の処理ノードの全体的な計算において、入力データの所与のアイテムが、多かれ少なかれ役割を果たすように重み付けされてもよい。入力データのアイテムは、畳み込みで無視されるように重み付けされてもよい。ハイパーパラメータ（前の入力レベルの処理ノードの外部にあるソースから入力されるデータ／値）は、また、隠れ層の全部または一部の処理ノードで利用されてもよい。
【００８０】
当業者には理解されるように、機械学習の興味深い態様の１つは、機械学習モデルの様々なレベルが自己学習であることであり、つまり、フィードバックが与えられると、より良い結果を得るために、様々な層のノードの重み、パラメータ、および処理に修正が加えられることを意味している。したがって、機械学習プロセスの訓練段階で最初に設定されたさまざまな処理ノードの計算を別にすれば、隠れ層の特定の処理ノードが利用できる正確な計算に関して、人が特定の洞察または知識を持つことはほとんどない。代わりに、機械学習プロセスの訓練プロセスの間に、機械学習プロセスは、受け取る入力値に対してより望ましい／優れた結果を生み出すために、各計算をどのように修正するかについて、独自の判定を行う。
【００８１】
最終の隠れた入力層、例えば層８１８において、処理ノードは、それらの出力データを出力層８１６に供給する。出力層８１６は、モデルの出力値を生成するために、入力データの様々なアイテムのあらゆる集約、計算、正規化、および／または解釈を実行する。図示の例では、出力層８１６は、コンテンツアイテム８０２および対応するメタデータのための埋め込みベクトル８２０を生成する。開示された主題の一実施形態によれば、コンテンツアイテムの埋め込みベクトルを生成するために、出力層８１６は、最終の隠れ層８１８からの出力データの各アイテムを、埋め込みベクトルの次元として集約する。
【００８２】
機械学習モデルの訓練に関して、開示された主題の態様によれば、ターゲットノードの関連する近傍に関する情報を利用して、ますます難しくなる訓練データを生成することによって、結果として得られる訓練済みモデルの精度の更なる向上とともに、機械学習モデルを訓練する時間の効率を高める（反復を減らす）ことができる。
【００８３】
図９は、開示された主題の態様による、ますます難しくなる訓練データを利用して機械学習モデルを訓練するのに適した例示的なルーチン９００を示す流れ図である。ブロック９０２で開始すると、機械学習モデルの訓練では典型的であるが、機械学習モデルは、様々な畳み込みルーチン、集約ルーチン、変換ルーチン、ハイパーパラメータなどで初期化される。
【００８４】
ブロック９０４では、機械学習モデルを訓練するための訓練データにアクセスされる。当業者が理解するように、機械学習モデルは、訓練データを使用して訓練される。この訓練データは、一般的には、処理用のレコードを含むようにキュレート（または編成）され、実際の結果／正しい結果を示すように編成される。開示された主題の態様によれば、レコードは、ターゲットノード、（ターゲットノードにマッチさせる）マッチングノード、および非マッチングノードを含むトリプレットである。処理中に、機械学習モデルに提示されるマッチングノードと非マッチングノードとの順序はランダム化されており、機械学習モデルのタスクは、マッチングノードと非マッチングノードとの間で、どちらをターゲットノードにマッチさせるかを選択することである。機械学習モデルの出力結果は、その後、機械学習モデルがマッチングノードを正しく識別したかどうかに関して、訓練レコードの情報と比較され得る。
【００８５】
関連する近傍に関する情報を活用するには、この訓練データは不完全な場合がある。この点で、不完全な訓練データとは、機械学習モデルによる処理が完了するために、追加情報を必要とする訓練レコードを意味するものと理解すべきである。適宜に、ブロック９０６において、（訓練データが不完全ということが起こる場合の）任意選択のステップが、訓練データを完全なものにするために実行される。
【００８６】
開示された主題のある実施形態によれば、不完全な訓練データは、訓練レコードのセットを含み、各レコードが、コーパスグラフ内からのターゲットノードのみを含んでもよい。この実施形態では、ノードの関連する近傍を識別するために、ターゲットノードに対してランダムウォークが実施される。関連する近傍が識別されると、ターゲットノードとの（訪問カウントによって判定される）適合性が最も高い関連する近傍内の近隣ノードが特定され、マッチングノードとしてレコード内に含められる。さらに、コーパスグラフ内のランダムノードが識別され、または選択され、非マッチングノードとして訓練レコードに含められる。コーパスグラフが、例えば、何十億もの相互接続されたノードであり、十分に大きい場合、ランダムに非マッチングノードとしてノードを選択すると、特に識別されたマッチングノードと比較して、ターゲットノードにマッチしないノードを識別する可能性が高くなる。
【００８７】
開示された主題の代替実施形態によれば、不完全な訓練データは、各レコードがターゲットノードとマッチングノードの両方を含む訓練レコードのセットを含んでもよい。訓練レコードは、コーパスグラフからランダムに選択されたノードを、訓練レコードのそれぞれに対して、非マッチングノードとして追加することで完成する。当然ながら、ある実施形態では、訓練データは完全であってもよい。
【００８８】
この初期の完全な訓練データに関して、対応するターゲットノードのマッチングノードとして最も関連する近隣ノードを選択するか、またはターゲットノードとマッチングノードとの間にキュレートされたマッチングを有し、さらにランダムノードを非マッチングノードとして選択する目的は、比較的容易に処理できる初期の訓練データのセットを提供することである。この比較的簡単な訓練データにより、機械学習モデルの訓練期間が比較的短くなり、精度しきい値を比較的高く保つことができるため、精度が向上する。
【００８９】
ブロック９０８において、当業者が理解するように、訓練データは、確率的に訓練セットと検証セットとに編成される。このうち、訓練データは、（上記のように）機械学習モデルの訓練に使用され、検証セットは、モデルが、訓練セットでの訓練において、精度のしきい値レベルであるとされるレベルに達したときに、機械学習モデルの精度を判定するために使用される。
【００９０】
ブロック９１０で、機械学習モデルは、初期訓練データに従って訓練される。機械学習モデルの訓練については、図１０に関連してより詳細に説明する。実際に、図１０を参照すると、この図は、開示された主題の態様による、機械学習モデルを訓練するのに適した例示的なルーチン１０００を示す流れ図である。
【００９１】
ブロック１００２で、反復ループが開始されて、訓練データの訓練セットのために繰り返される。ブロック１００４で、機械学習モデルは、現在反復中の訓練レコードを処理する。当業者が理解するように、訓練レコードの処理は、図８に関連して一般的に上に述べたように、そこで情報が処理される機械学習訓練モデルに情報を提供することを含む。提案されているように、処理は、機械学習モデルが、マッチングノード／非マッチングノードの提供される順序に基づいて結果を学習しないように、マッチングノードと非マッチングノードとの順序をランダム化することを含んでもよい。
【００９２】
訓練レコードの処理に関して、特にターゲットノードを対応するマッチングノードにマッチさせることに関して、一実施形態では、この「マッチング」は、３つのノードの埋め込みベクトルに従って実行されてもよい。より具体的には、機械学習モデルは、ターゲットノードの埋め込みベクトルのさまざまな要素を、マッチングノードおよび非マッチングノードの埋め込みベクトルの対応する要素と照合して、どちらがマッチングノードであるかを判定する。開示された主題の態様によれば、マッチングは、埋め込みベクトルのコサイン類似度に従って判定される。この関連で、Ｑをターゲットノードの集約埋め込みベクトル、Ｍをマッチングノードの集約埋め込みベクトル、ＮＭを非マッチングノードの集約埋め込みベクトルとする。「マッチ」は、ＱとＭのコサイン類似度が、ＱとＮＭのコサイン類似度に、あるスカラーマージンｄを加えた値よりも大きい場合に検出され、ｃｏｓ（Ｑ，Ｍ）＞ｃｏｓ（Ｑ，ＮＭ）＋ｄと表記される。
【００９３】
当業者には理解されるであろうが、機械学習モデルは、埋め込みベクトルのどの要素を比較するか、どの要素がマッチングにおいて最も重要であるか（すなわち、様々な要素に関連付けられた重み）、比較に基づいて、何がマッチングを示すか（すなわち、コサイン類似度関数）、比較に基づいて、ターゲットノードとマッチングノードとの間、およびターゲットノードと非マッチングノードとの間のマッチングの尤度が何であるかなどを「学習」する。
【００９４】
ブロック１００６では、現在反復中の訓練レコードの処理結果が追跡され、これは、実際の結果に対する訓練レコード内のアイテムに応じて（機械学習モデルによる）予測結果を記録することを含む。この追跡は、集計されると、機械学習モデルの訓練の結果を検証し、および／または機械学習モデルの訓練についての更新情報を提供するのに使用することができる。
【００９５】
さらに、ブロック１００６において、訓練セットの一部として処理すべき追加の訓練レコードがある場合、ルーチン１０００は、次の訓練レコードを処理するためにブロック１００２に戻る。あるいは、全ての訓練レコードが処理された場合、ルーチン１０００はブロック１００８に進む。
【００９６】
ブロック１００８では、機械学習モデルが完全に訓練されたかどうか判定されるよう実際の結果に応じて、機械学習モデルの（モデルの現在の訓練状態を反映する）結果が評価される。この評価／判定の結果、（現在訓練中の）機械学習モデルの総合的な精度を示すスコアが得られる。このスコアを用いて、決定ブロック１０１０では、十分なレベルの精度が機械学習モデルによって達成されたかどうか（すなわち、スコアが許容可能なしきい値レベルを満たすか、またはそれを超えるか）の判定が行われる。
【００９７】
機械学習モデルの現在の精度が許容可能なしきい値を満たさない場合、ルーチン１０００はブロック１０１２に進む。ブロック１０１２では、（実際の結果に応じて）追跡された結果が、機械学習モデルの態様を更新するか、または訓練するのに使用される。これらの更新は、さまざまな処理層への変更、および／またはさまざまな層で使用されるさまざまなハイパーパラメータへの変更を含んでもよい。追跡された結果に応じて機械学習モデルを更新した後、次いでルーチン１０００は、次に、訓練セットの反復がリセット／再初期化され、訓練レコードが再び機械学習モデルによって処理されるようにするブロック１００２に戻る。
【００９８】
決定ブロック１０１０を参照すると、上記の結果が許容可能なしきい値レベルを満たしていると判定された場合、ルーチン１０００はブロック１０１４に進む。ブロック１０１４で、反復ループが開始されて、検証セット内の検証レコードのために繰り返される。この検証レコードの反復は、ここで、機械学習モデルが訓練セットの訓練レコードの中のパターンを単に学習しただけでなく、実際に満足できる／許容可能なレベルの精度が達成されたことを検証するためのものである。当業者が理解するように、機械学習モデルは、訓練されている過程では、訓練セット上で許容可能な結果（精度のしきい値レベル）を生成するが、検証セットでその許容可能なレベルを達成できない結果となるのは珍しいことではない。
【００９９】
ブロック１０１６において、検証セットの現在反復中の検証レコードは、機械学習モデルによって処理され、この処理は、マッチングノード／非マッチングノードの入力順序をランダム化することを含んでもよい。ブロック１０１８では、処理の結果が追跡され、処理すべき追加の検証要素がある場合、ルーチン１０００はブロック１０１４に戻る。あるいは、処理すべき追加の検証レコードがない場合、ルーチンはブロック１０２０に進む。
【０１００】
ブロック１０２０では、機械学習モデルが完全に訓練されたかどうか判定されるよう実際の既知の結果に応じて、機械学習モデルによる検証セットの（モデルの現在の訓練状態を反映する）処理結果が評価される。この評価／判定の結果、（現在訓練中の）機械学習モデルの総合的な精度を示すスコアが得られる。このスコアを用いて、決定ブロック１０２２では、十分なレベルの精度が機械学習モデルによって達成されたかどうか（すなわち、スコアが許容可能なしきい値レベルを満たすか、またはそれを超えるか）の判定が行われる。
【０１０１】
決定ブロック１０２２において、精度しきい値が満たされない場合、ルーチン１０００はブロック１０２４に進む。ブロック１０２４では、（実際の結果に応じて）追跡された結果が、機械学習モデルの態様を更新するか、または機械学習モデルを訓練するのに使用される。上記のように、これらの更新は、さまざまな処理層への変更、および／またはさまざまな層で使用されるさまざまなハイパーパラメータへの変更を含んでもよい。検証セットの追跡された結果に応じて機械学習モデルを更新した後、次いでルーチン１０００は、ブロック１００２に戻って、訓練セットを始めとして全プロセスを開始し、その場合、訓練セットの反復がリセット／再初期化され、訓練レコードが再び機械学習モデルによって処理されるようにし、続いて検証セットも同様に処理される。
【０１０２】
再び決定ブロック１０２２を参照すると、検証セットの結果が許容範囲内であるか、または許容範囲を超えると判定された場合、機械学習モデルを許容可能なレベルの精度まで十分に訓練したので、ルーチン１０００は終了する。
【０１０３】
再び図９に戻ると、ブロック９１０において、初期訓練データに基づいて機械学習モデルを訓練した後、ルーチン９００はブロック９１２に進む。
【０１０４】
上記の通り、開示された主題の態様は、ますます難しくなる訓練データのセットに基づいて機械学習モデルを訓練することを含む。ブロック９１２で、反復ループが開始されて、訓練し、訓練データの難易度を上げることの繰り返しが実行される。一実施形態では、この反復は（２）回実行されるが、任意数の反復を使用してもよい。さらに、増加した難しい訓練データのセットを生成するという後続の説明は、訓練データの初期セットとの関連で行われるが、各難易度では、新たに生成された訓練データのセットを利用できる。
【０１０５】
現在の反復に伴い、ルーチン９００はブロック９１４に進む。ブロック９１４で、訓練データは、難易度の高いレベルに更新される。ランダムウォークを含む（初期訓練データに基づく）訓練データの難易度を上げるために使用できるいくつかの戦略がある。それぞれにおいて、ターゲットノードの関連する近傍を識別するために、ターゲットノードに対してランダムウォークが実行される。このランダムウォークは、近傍ノードの選択がターゲットノードからさらに延びることができるように（すなわち、リセットする判定の可能性が低下するように）、含むべきあるしきい値量を下回る訪問カウントを有する近傍ノードを含み、および／または近傍に含めることができる近隣ノードの数を切り捨てないように、変更されてもよい。この拡張された関連する近傍の有無にかかわらず、１つのオプション／戦略は、関連する近傍にアクセスし、非マッチングノードを、ターゲットノードからそれほど遠くない関連する近傍からのノードで置き換えることである。この距離は、連続する反復のたびに、非マッチングノードが、更新されていない非マッチングノードよりもターゲットノードに近くなる（訪問カウントが高くなる）ような、実施された反復の数の関数である。別のオプションは、マッチングノードを、ターゲットノードにあまり近くない関連する近傍からのノードで置き換えることである。ここで、「あまり近くない」は、訪問カウントの関数である。この点で、更新されたマッチングノードは、置換するマッチングノードよりもターゲットノードから離れている（訪問カウントが少ない）。さらに別のオプションまたは戦略は、マッチングノードおよび非マッチングノードの両方を置き換えることである。これらのいずれも、マッチングノードは、非マッチングノードに比べると、ターゲットノードまで遠くない（訪問カウントが少ない）という制限がある。
【０１０６】
訓練データを更新した後、ブロック９１６で、更新された訓練データは確率的にセット、すなわち訓練セットと検証セットとに分割される。その後、ブロック９１８で、機械学習モデルは、図１０のルーチン１０００に関して上に述べたように、更新された訓練データに基づいて、さらに訓練される。一旦、更新された訓練データで機械学習モデルが訓練されると、ブロック９２０でルーチンを実行するための追加の反復がある場合、ルーチン９００はブロック９１２に戻り、ますます難しくなる訓練データで機械学習モデルの訓練の反復ループを継続する。あるいは、所定の反復が実行された場合、ルーチン９００はブロック９２２に進む。
【０１０７】
ブロック９２２では、現在訓練されている機械学習モデルの実行可能な最適化されたバージョンが生成される。その後、ルーチン９００は終了する。
【０１０８】
上記のルーチン２００、３００、５００、９００、１０００、および１７００、ならびにルーチン１３００および１５００を含む、本明細書に記載されまたは示唆されている他のルーチンおよび／またはプロセスに関して、これらのルーチン／プロセスは離散的なステップに関して表現されているが、これらのステップは本質的に論理的であると見なすべきであり、所与の実施態様の任意の特定の実際の実行ステップ、および／または離散的な実行ステップに対応している場合もあれば、対応していない場合もある。また、これらのステップがさまざまなルーチンおよびプロセスにおいて提示される順序は、別段の指定がない限り、ステップが実行され得る唯一または最良の順序として解釈されるべきではない。さらに、場合によっては、これらのステップのいくつかを組み合わせ、および／または省略してもよい。ルーチンの最適化を行ってもよい。当業者は、ステップの論理的提示が、論理的命令／ステップが符号化されるいかなる特定の開発言語またはコーディング言語にも関係なく、特許請求された主題の態様を実施するのに十分に有益であることを認識するであろう。さらに、これらのルーチンのいくつかは再帰的ルーチンの関連で明示されているが、当業者であれば、そのような再帰的ルーチンが、関数または結果を実際に修正することなく、非再帰呼び出しとして容易に実装できることを理解するであろう。したがって、特定の機能性を実装するためのプログラミングおよび／または実装技術および実装ツールの特定の使用は、開示された主題を限定するものと解釈されるべきではない。
【０１０９】
もちろん、これらのルーチンおよび／またはプロセスは、開示された主題の様々な新規の特徴を含むが、他のステップ（記載されていない）もまた、これらのルーチンに記載された主題の実行に含まれ、実行されてもよく、そのうちのいくつかは上に提案されている。当業者は、これらのルーチンの論理的ステップが、共に組み合わされてもよいし、または複数のステップで構成されてもよいことを理解するであろう。上に述べたルーチンのステップは、並行して、または連続して実行されてもよい。多くの場合、さまざまなルーチンの機能性は、以下の図１１に関して説明するコンピューティングデバイスなど、コンピューティングデバイスの１つ以上のプロセッサで実行されるソフトウェア（例えば、アプリケーション、システムサービス、ライブラリなど）に具現化されるが、これに限定されるものではない。さらに、さまざまな実施形態では、さまざまなルーチンのすべてまたは一部が、システムオンチップ（ＳｏＣ）、コーデック、特別に設計されたプロセッサおよびまたは論理回路などを含むが、これらに限定されない、実行可能なハードウェアモジュール内に具現化されてもよい。
【０１１０】
上記で提案したように、これらのルーチンおよび／またはプロセスは、一般に、ルーチン、関数、ループ構造、セレクタおよびスイッチ（ｉｆ−ｔｈｅｎ文およびｉｆ−ｔｈｅｎ−ｅｌｓｅ文、割り当て、算術計算、ならびに実行時に、ルーチン／プロセスに従って動作するようにコンピューティングデバイスを構成する同類のものなど）を構成する実行可能なコードブロックおよび／またはモジュール内に具現化されている。また一方、各ルーチンの実行可能ステートメントでの正確な実装は、プログラミング言語、コンパイラ、ターゲットプロセッサ、オペレーティング環境、およびリンク操作またはバインディング操作など、さまざまな実装構成および決定に基づいている。当業者は、これらのルーチンで識別された論理的ステップが任意の数の方法で実装され得、したがって、上記の論理的記述が同様の結果を達成するのに十分に可能であることを容易に理解するであろう。
【０１１１】
開示された主題の多くの新規な態様は、アプリケーション（コンピュータプログラムとも呼ばれる）、アプリ（小さな、一般的に単一または狭い目的のアプリケーション）、および／または方法内で具現化されるルーチンで表現されるが、これらの態様はまた、製品であるコンピュータ可読記憶媒体とも呼ばれるコンピュータ可読媒体によって記憶されるコンピュータ実行可能命令として具現化されてもよい。当業者が認識するように、コンピュータ可読媒体は、後の検索および／または実行のために、コンピュータ実行可能命令およびデータをホストし、格納し、および／または再現することができる。コンピュータ可読ストレージデバイスにホストまたは格納されているコンピュータ実行可能命令がコンピューティングデバイスのプロセッサによって実行されるとき、その実行は、様々な図示されたルーチンおよび／またはプロセスに関して上に述べたステップ、方法、およびルーチンを含む様々なステップ、方法、および／または機能性を実行するように、実行中のコンピューティングデバイスにもたらされ、構成され、および／または適合される。コンピュータ可読媒体の例としては、ブルーレイディスク、デジタルビデオディスク（ＤＶＤ）、コンパクトディスク（ＣＤ）、光ディスクカートリッジなどの光学記憶媒体、ハードディスクドライブ、フロッピーディスク、磁気テープなどを含む磁気記憶媒体、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、メモリカード、サムドライブなどのメモリ記憶装置、クラウドストレージ（すなわち、オンラインストレージサービス）などが含まれるが、これらに限定されない。コンピュータ可読媒体は、搬送波および／または伝搬信号を含む様々な伝送手段および伝送媒体を介して、１つ以上のプロセッサによって実行すべきコンピュータ実行可能命令およびデータを複製し、および／またはコンピューティングデバイスに送達させることができるが、本開示の目的のために、コンピュータ可読媒体は、搬送波および／または伝搬信号を明示的に除外する。
【０１１２】
コンピュータ可読媒体に関して、図１１は、上記に開示されたルーチンおよびプロセスに関して記述される、ターゲットノードの集約埋め込みベクトルを判定するための命令で符号化された例示的なコンピュータ可読媒体を示すブロック図である。より具体的には、インプリメンテーション１１００は、コンピュータ可読媒体１１０８（例えば、ＣＤ−Ｒ、ＤＶＤ−Ｒ、またはハードディスクドライブのプラッタ）を含み、このコンピュータ可読媒体１１０８上にコンピュータ可読データ１１０６が符号化されている。このコンピュータ可読データ１１０６は、本明細書に記載されている原理の１つ以上に従って動作するように構成された１組のコンピュータ命令１１０４を含む。そのような一実施形態１１０２では、プロセッサ実行可能命令１１０４は、たとえば、例示的なルーチン２００、３００、および５００のうちの少なくとも一部などの方法を実行するように構成されてもよい。別のそのような実施形態では、プロセッサ実行可能命令１１０４は、以下で説明するように、図１２のコンピューティングデバイス１２００の例示的な実行可能構成要素の少なくとも一部などのコンピューティングデバイス上に、システムを実装するように構成され得る。本明細書に提示された技法に従って動作するように構成された、そのようなコンピュータ可読媒体の多くは、当業者によって考案され得る。
【０１１３】
次に図１２を参照すると、図１２は、開示された主題の態様によるコンテンツレコメンダシステムを実施するために好適に構成された例示的なコンピューティングシステム１２００（またはコンピューティングデバイス）を示すブロック図である。コンピューティングシステム１２００は、一般に、ＣＰＵ１２０２などの１つ以上の中央処理ユニット（またはＣＰＵ）を含み、さらに、少なくとも１つのメモリ１２０４を含む。ＣＰＵ１２０２およびメモリ１２０４、ならびにコンピューティングシステムの他の構成要素は、システムバス１２１０を介して相互接続されている。
【０１１４】
当業者には理解されるように、メモリ１２０４は、一般に（常にではないが）揮発性メモリ１２０６および不揮発性メモリ１２０８の両方を含む。揮発性メモリ１２０６は、メモリに電力が供給されている限り、情報を保持しまたは格納する。対照的に、不揮発性メモリ１２０８は、電源が利用できない場合でも情報を格納（または持続）することができる。一般的に言えば、ＲＡＭおよびＣＰＵキャッシュメモリは揮発性メモリ１２０６の例であるのに対して、ＲＯＭ、ソリッドステートメモリデバイス、メモリ記憶装置、および／またはメモリカードは、不揮発性メモリ１２０８の例である。
【０１１５】
当業者にはさらに理解されるであろうが、ＣＰＵ１２０２は、コンテンツ収集のための有望なデジタルコンテンツアイテムをレコメンドするという様々な機能を実行する際に、メモリ１２０４から、図１１のコンピュータ可読媒体１１０８などのコンピュータ可読媒体から、および／または他の実行可能な構成要素から読み出した命令を実行する。ＣＰＵ１２０２は、当技術分野で周知のシングルプロセッサ、マルチプロセッサ、シングルコアユニット、およびマルチコアユニットなどの数々の利用可能なプロセッサで構成され得る。
【０１１６】
さらに、図示されたコンピューティングシステム１２００は、一般に、図１４のネットワーク１４０８などのコンピュータネットワークを介して、このコンピューティングシステムを他のデバイス、コンピュータ、および／またはサービスと相互接続するためのネットワーク通信インタフェース１２１２をも含む。ネットワーク通信インタフェース１２１２は、ネットワークインタフェースカードまたはＮＩＣと呼ばれることもあり、物理的／有形（例えば、有線、光ファイバなど）の接続、ＷｉＦｉもしくはＢｌｕｅｔｏｏｏｔｈ通信プロトコルなどの無線接続、ＮＦＣ、またはそれらの組み合わせを介して、１つ以上の通信プロトコルを使用してネットワーク上で通信を行う。当業者であれば容易に理解されるように、ネットワーク通信構成要素１２１２などのネットワーク通信インタフェースは、典型的には、伝送媒体（すなわち、ネットワーク）を介してデジタル信号および／またはアナログ信号の送信および受信を行うハードウェアおよび／またはファームウェアの構成要素（および実行可能なソフトウェア構成要素を含むか、または構成することもできる）で構成されている。
【０１１７】
また、図示されたコンピューティングシステム１２００は、グラフィック処理ユニット（ＧＰＵ）１２１４も含む。当業者が理解するであろうように、ＧＰＵは、メモリを迅速に操作し、変更するように設計された特殊な処理回路である。当初は、大量のメモリを操作し処理する能力があるため、ディスプレイに出力すべきフレームバッファ内の画像の作成を高速化するように設計されており、ＧＰＵは、図８に関して上に述べたように、大量のデータを操作する機械学習モデル／ニューラルネットワークの畳み込みプロセスに有利に適用されている。実際、ＧＰＵ１２１４などの１つ以上のＧＰＵは、機械学習技法を実施する際に必須の処理構成要素と見なされる。また、様々な実施形態によれば、ＧＰＵは、コンピューティングシステムに含まれ、コンピューティングシステム１２００のＧＰＵ１２１４などの、機械学習モデルの畳み込みを処理するために利用可能であることが多いが、複数のＧＰＵもまた、オンラインＧＰＵサービスまたはファームとして配備されることが多く、機械学習処理は、図１４の例示的なネットワーク環境１４００に関して記載されているように、有利には、ニューラルネットワークの様々な層／畳み込みを実施することを対象とする。
【０１１８】
コンピューティングシステム１２００は、実行可能なコンテンツレコメンダ構成要素１２２０をさらに含む。コンピューティングシステム１２００上での実行において、コンテンツレコメンダ構成要素１２２０は、以下のルーチン１３００に関して説明されたのと同様の方法で動作する。実際、コンテンツレコメンダ構成要素１２２０は、ネットワーク１４０８などのネットワークを介してユーザからのクエリを受信し、コーパスグラフ１００内のコンテンツアイテム（または密接にマッチするコンテンツアイテム）を識別し、ユーザ向けの潜在的なレコメンデーションを識別し、潜在的なレコメンデーションのうちの少なくとも１つをユーザに提供する。
【０１１９】
また、コンピューティングシステム１２００には、実行可能な埋め込みベクトル生成器１２２４も含まれる。コンピューティングシステム１２００上での実行の際に、埋め込みベクトル生成器１２２４は、様々なルーチン２００、３００、および５００に関して先に述べたように、コーパスグラフ１００内の１つ以上のノードの集約埋め込みベクトルを生成するように構成されている。埋め込みベクトル生成器１２２４は、所与のターゲットノードの集約埋め込みベクトルを生成する過程で、コーパスグラフ内のノードの様々な埋め込みベクトルを畳み込みまたは生成するように動作する１つ以上の実行可能な畳み込みモジュール１２２８を含む。同様に、埋め込みベクトル生成器１２２４は、図５のルーチン５００に関して上で説明し記載したように、１つ以上の実行可能な集約モジュール１２３０を含む。
【０１２０】
上記のように、複数の処理層を含む機械学習モデルは、ＣＰＵ１２０２などの中央処理ユニット（ＣＰＵ）ではなく、ＧＰＵ１２１４などのＧＰＵによって最適に実行される。実際、ＧＰＵは大量のメモリを操作し、ＣＰＵよりも高速かつ大規模に浮動小数点演算を行うように特別に設計されている。これは、画像など、データが豊富なコンテンツのアイテムを含む大きなデータセットを処理する場合に重要である。実際、ＧＰＵの能力により、機械学習モデルは、線形代数方程式を解き、統計解析、回帰などを、特にＣＰＵ上での同じ作業と比較した場合に、効率的かつ迅速に行うことを可能にする。一方、ＧＰＵは、浮動小数点演算の処理と大量のメモリの操作とに優れているが、ＣＰＵは、１つ以上のＧＰＵが処理すべき情報および／またはデータを識別することを、効果的かつ効率的に対象とし得る。
【０１２１】
開示された主題の態様によれば、例示的なコンピューティングシステム１２００は、実行可能な協調モジュール１２３２をさらに含む。この協調モジュール１２３２は、ＣＰＵ１２０２などのプロセッサと、ＧＰＵ１２１４などのＧＰＵとの間で、集約埋め込みベクトルの生成のタスクを効率的かつ有利に分割するように動作する。実際、開示された主題の態様によれば、協調モジュール１２３２は、ターゲットノードの関連する近傍を識別するようなタスクを、ＣＰＵ１２０２などの１つ以上のＣＰＵに指示し、機械学習に対応するタスクは、ＧＰＵ１２１４などの１つ以上のＧＰＵに向けられる。
【０１２２】
開示された主題の態様によれば、協調モジュール１２３２は、関連近傍識別器１２２６の活動を、ＣＰＵ１２０２などの１つ以上のＣＰＵで働かせるように指示し、畳み込みモジュール１２２８および集約モジュール１２３０の活動を、ＧＰＵ１２１４などの１つ以上のＧＰＵに向ける。協調モジュール１２３２は、さらに、１つ以上のＣＰＵ上で実行される関連近傍識別器１２２６によって、ターゲットノードの関連する近傍の情報（関連する近傍のノードに対応する情報を含む）を識別し、マーシャリングし、編成し、その情報を１つ以上のＧＰＵ上で実行される畳み込みモジュール１２２８および集約モジュール１２３０に提供するという、両者の間の調整を行う。協調モジュールは、ＣＰＵ１２０２とは独立して実行される実行可能モジュールであってもよく、様々な実施形態では、協調モジュール１２３２は、ＣＰＵ１２０２によって、またはＣＰＵ１２０２と連携して実行するために実装されてもよい。
【０１２３】
また、例示的なコンピューティングシステム１２００には、実行可能モデル訓練構成要素１２３４および訓練データの集合体１２３６も示される。ルーチン９００および１０００に関して上記に提案したように、開示された主題の態様によれば、モデル訓練器１２３４は、訓練データが、訓練データの初期セットの後の各レベルで、機械学習モデルが処理することがより難しい反復プロセスを使用して、ディープニューラルネットワーク／機械学習モデルを効率的かつ正確に訓練するように構成されている。より具体的には、訓練の後続の反復のたびに、マッチングノードと非マッチングとを区別することが難しくなるように、訓練データの難易度が上げられる。開示された主題の態様によれば、モデル訓練器１２３４は、訓練データ１２３６（訓練レコードで構成され、各レコードがターゲットノード、対応するマッチングノード、および対応する非マッチングノードを含む）内のターゲットノードの関連する近傍を利用して、訓練データの難易度を更新する。有利には、この構造化アプローチを用いて機械学習モデルをトレーニングすること、すなわち、ますます難しくなるトレーニングデータを使用して機械学習モデルを繰り返しトレーニングすることにより、完全にトレーニングされた機械学習モデルの精度が大幅に向上し、機械学習モデルが完全にトレーニングされるまでの速度が大幅に低減される。
【０１２４】
図１３を参照すると、図１３は、開示された主題の様々な態様による、ユーザからのクエリに応答するためのレコメンダシステムの例示的なルーチン１３００を示す流れ図である。ブロック１３０２で始まり、図１４のレコメンダシステム１４１０などのレコメンダシステムが、ユーザからクエリを受け取る。上記の通り、クエリという用語は、コンテンツの１つ以上のレコメンデーションが行われることになるユーザからのコンテンツを指す。「クエリ」は、コンテンツアイテムとのインタラクションからコンピュータユーザによって生成されることもあり、必ずしも別途のコンテンツを要求するという直接的な意図によって生成されるとは限らない。
【０１２５】
ブロック１３０４で、レコメンダシステムは、コーパスグラフ１００などのコーパスグラフにおいて、受信したコンテンツアイテムまたは類似のコンテンツアイテムを識別する。コンテンツアイテムまたは類似のコンテンツアイテムを識別する際に、ブロック１３０４で、受信したコンテンツアイテムとコーパスグラフ内のアイテムとのマッチングを容易にするために、受信したコンテンツアイテムに対して埋め込みベクトルが生成されてもよい。コーパスグラフ内で類似のコンテンツアイテムを見つける場合には、さまざまな手法を用いてマッチングを行う。一実施形態では、局所性鋭敏型ハッシュ（ＬＳＨ）技法が使用されて、類似および／またはマッチするコンテンツを識別する。コーパスグラフ内の１つ以上の同様のコンテンツアイテム／ノードの位置を特定するＫ平均クラスタリングなど、他のマッチング手法を使用することもできる。
【０１２６】
ブロック１３０６では、コーパスグラフ内のコンテンツアイテム、またはコーパスグラフ内のニアマッチのいずれかを特定した後、コーパスグラフのアイテムの集約埋め込みベクトルの評価が、ニアマッチを見つけるために使用され、再び、当技術分野で知られているクラスタリングおよびマッチング手法を使用する。
【０１２７】
ブロック１３０８では、ニアマッチのセットから、少なくとも１つの潜在的なニアマッチが、ユーザへのレコメンデーションとしてユーザに提供される。その後、ルーチン１３００は終了する。
【０１２８】
図１４を参照すると、図１４は、開示された主題の態様を実施するのに適した例示的なネットワーク環境１４００を示すブロック図である。特に、このネットワーク環境は、コンピューティングデバイス１４０２〜１４０６などのコンピューティングデバイスを介して操作して、ネットワーク１４０８越しに、レコメンダサービス１４１０などの他のオンラインサービスに接続する１人以上のコンピュータユーザを含む。当業者には理解されるように、ユーザコンピュータは、限定ではなく実例として、タブレットコンピュータ（タブレットコンピュータ１４０４など）、ラップトップコンピュータ、デスクトップコンピュータ（デスクトップコンピュータ１４０６など）、スマートフォン（スマートフォン１４０２など）などの様々なコンピューティングデバイスのいずれかを含んでもよい。
【０１２９】
ユーザコンピュータ１４０２〜１４０６は、ネットワーク１４０８などの１つ以上のネットワークを介して他のコンピュータおよび／またはデバイスと通信する。当業者には理解されるように、ネットワーク１４０８は、コンピューティングデバイスおよびネットワーク対応プロセスおよび／またはサービスが、通信および／またはデータ交換を行うことができる通信ネットワークである。実例として、ネットワーク１４０８などのコンピュータネットワークは、ローカルエリアネットワークもしくはＬＡＮ、ワイドエリアネットワークもしくはＷＡＮ、またはその両方の組み合わせのいずれかを含んでもよい。開示された主題の様々な実施形態によれば、ネットワーク１４０８にはインターネットが含まれ得る。当業者は理解するように、インターネットは、世界中のデバイス（コンピュータを含む）をリンクさせるために定義されたプロトコル群を使用する相互接続されたコンピュータネットワークのグローバルシステムである。さらに、インターネットは、様々な範囲と規模のプライベートネットワーク、公共ネットワーク、学術ネットワーク、ビジネスネットワーク、および政府ネットワークで構成されるネットワークのネットワークであり、多岐にわたる電子、無線、および光ネットワーキング技術によってリンクされている。開示された主題の態様によれば、ユーザコンピューティングデバイス１４０２〜１４０６を含むパーソナルコンピューティングデバイスは、有線接続、無線接続、光接続、またはこれらの任意の組み合わせを経由して、ネットワーク１４０８と通信することができる。
【０１３０】
また、例示的なネットワーク環境１４００には、ネットワークコンピューティングシステム上のオンラインレコメンダサービス１４１０も含まれる。上記のように、オンラインレコメンダサービス１４１０は、ネットワーク１４０８を介してコンピュータユーザからクエリを受信し、それに応答して、クエリアイテムに関連するコンテンツの１つ以上のレコメンデーションをユーザに提供するように構成される。
【０１３１】
例示的なネットワーク環境１４００に示すように、開示された主題の態様によれば、レコメンダサービス１４１０は、ＧＰＵ１４１４および１４１６などの１つ以上のＧＰＵを含むクラウドベースのＧＰＵクラスタ１４１２など、ローカル、密結合、および／またはリモートのクラウドベースのＧＰＵクラスタを利用してもよい。上記のように、開示された主題の態様によれば、ノードデータと関連する近傍情報との集約埋め込みベクトルへの畳み込みを指示することは、有利には１つ以上のＧＰＵ上で実行されてもよく、一方、ターゲットノードの関連する近傍ノードを識別し、データをマーシャリングして編成すれば、１つ以上のＣＰＵで有利に実行することができる。上記で示唆したように、ＧＰＵクラスタ１４１２は、レコメンダサービス１４１０によって実行され、維持され得る。あるいは、例示的なネットワーク環境１４００に示すように、ＧＰＵクラスタ１４１２は、レコメンダサービス１４１０にアクセス可能なオンラインサービスとして実行されてもよい。
【０１３２】
ＧＰＵクラスタ１４１２による処理、および他の多くのプロセスに関して、これらのプロセスの動作は、オフラインのバッチモードで行われることが多いことを理解されたい。実際に、ＧＰＵクラスタ（例えば、ＭａｐＲｅｄｕｃｅ機能を実行するように構成されている）を介したアイテムの処理は、オンデマンド方式でユーザ要求にマッチしたまたは類似のコンテンツを識別するために、レコメンダサービス１４１０によって使用され得る前処理されたコンテンツのデータセットを生成するために、オフライン方式で行われる。
【０１３３】
１つ以上のＣＰＵと１つ以上のＧＰＵとの間のデューティの割り当てに関して、図１５を参照する。図１５は、開示された主題の態様による、協調構成要素１２３２、少なくとも１つのＣＰＵ１５０４、および少なくとも１つのＧＰＵ１５０６の間に分散された例示的な論理処理１５００を示すブロック図である。図１５に示すように、協調構成要素１２３２、およびＣＰＵ１５０４などの１つ以上のＣＰＵの作業は、プロデューサ側がターゲットノードについての情報（関連する近傍データ）を生成し、コンシューマ側（１つ以上のＧＰＵ）がそのデータを消費し、それによってターゲットノードの集約された近傍埋め込みベクトルを生成する、プロデューサ／コンシューマ関係のプロデューサ側と見なされる。
【０１３４】
図１５の例示的なプロセスでは、協調構成要素１２３２は、埋め込みベクトルが要求されたターゲットノート１５０２に関する情報を受け取る。それに応じて、開示された主題の態様に従って、協調構成要素は、１つ以上のＧＰＵ（ＧＰＵ１５０６および／または図１２のＧＰＵ１２１４など）による処理のためのデータを生成する１つ以上のＣＰＵ（ＣＰＵ１５０２および／または図１２のＣＰＵ１２０２など）にタスクを適切に割り当てる。どちらの場合も、ＣＰＵ１５０４またはＧＰＵ１５０６は、協調構成要素１２３２が動作しているコンピューティングデバイスの一部であり得る。代替的には、ＣＰＵ１５０４および／またはＧＰＵ１５０６のいずれかは、他の協調システムの一部であってもよく、および／またはネットワーク１４０８上のサービスとして利用可能な１つ以上のＣＰＵクラスタまたはＧＰＵクラスタの一部であってもよい。
【０１３５】
ＣＰＵ（プロデューサ）とＧＰＵ（コンシューマ）の間でタスクを割り当てることの一環として、協調構成要素１２３２は、ステップ１５１０で、ターゲットノードおよびターゲットノードに関連付けられた任意のデータを識別／アクセスする。これには、ターゲットノード／コンテンツアイテム、およびターゲットノードに関連付けられたメタデータへのアクセスが含まれ得る。ステップ１５１２において、協調構成要素は、ターゲットノードの集約埋め込みベクトルを（共同で）処理する際に、ＣＰＵ１５０４および／またはＧＰＵ１５０６によって使用されるターゲットノードデータ（ステップ１５１０でアクセスしたターゲットノードに関する編成されたデータ）を生成する。
【０１３６】
ターゲットノードのデータを生成して、次いで協調構成要素１２３２は、ステップ１５１４および１５１６を含む、ＣＰＵによる処理を開始する。ステップ１５１４で、ＣＰＵ１５０４は、ターゲットノードの関連する近傍を識別する。上記のように、図３のルーチン３００は、ターゲットノードの関連する近傍を識別する際のさまざまなステップを明記している。理解されるように、ターゲットノードの関連する近傍を識別することは、図４Ａ〜図４Ｆに関して上記で論じたように、様々な隣接ノードの関連する近傍を識別することも含む。次に、ステップ１５１６で、近傍データは、ＧＰＵ１５０６による処理のために整理される。
【０１３７】
開示された主題の態様によれば、ＣＰＵ１５０４によって生成され整理された関連する近傍データは、協調構成要素１２３２に論理的に戻される。それに応じて、ステップ１５２０において、協調構成要素は、ＧＰＵ１５０６への提出のために近傍データ１５１８を処理する。開示された主題の態様によれば、この処理は、ターゲットノードの近隣の数を所定の数に固定することを含む（同様に、近隣ノードの近隣の数を、その同じ所定の数に固定することも含む）。これは、ＧＰＵ１５０６による処理のために、固定された近傍データを設定することをさらに含む。
【０１３８】
特定のターゲットノードの近隣の数を固定すると、ターゲットノードの集約埋め込みベクトルを生成する際の畳み込みプロセス、すなわちＧＰＵによって実行されるコンシューマ側の処理が容易になり、効率的な仕方で動作する。より具体的には、ＧＰＵの利点は、大量のデータ、特に大量の浮動小数点データを操作する際に実現されるので、各ノードに対して何個の近傍情報を処理しなければならないかを識別するための近傍情報の処理は、ＧＰＵ上で実行される場合には、実質的な非効率性を招くことになる。代わりに、協調構成要素１２３２（典型的にはＣＰＵ上で動作する（関連する近傍を識別するＣＰＵ１５０４であるか否かにはかかわらない））が近傍データを処理して、固定サイズのデータセットにデータを配置する。たとえば、再び図４Ａ〜図４Ｆを参照すると、ターゲットノードがノードＪであると仮定すると、関連する近傍データは以下の情報になる。
【０１３９】
ＲＮ（Ｊ）＝｛Ｇ，Ｈ，Ｉ，Ｌ，Ｐ｝、
ＲＮ（Ｇ）＝｛Ｅ，Ｊ，Ｑ，Ｓ｝、
ＲＮ（Ｈ）＝｛Ｄ，Ｆ，Ｉ｝、
ＲＮ（Ｉ）＝｛Ｄ，Ｆ，Ｈ，Ｊ，Ｌ｝、
ＲＮ（Ｌ）＝｛Ｈ，Ｉ，Ｊ，Ｎ，Ｐ，Ｕ｝、および
ＲＮ（Ｐ）＝｛Ａ，Ｂ，Ｌ，Ｕ｝
【０１４０】
図に示すように、関連する隣接ノードのサイズ（すなわち、「関連する近隣」の数）は同じではなく、たとえば、ターゲットノードＪが４つの関連する近隣を有し、ノードＨが３つの関連する近隣を有し、ノードＬが６つの関連する近隣を有する。これらの関連する近隣は、必ずしもコーパスグラフでの直接の近隣ではなく、上記のランダムウォークによって判定される対応するターゲットノードの関連する近隣であることを理解されたい。
【０１４１】
協調クラスタは、処理をＧＰＵ１５０６（またはＧＰＵクラスタ）にオフロードするのではなく、各ノードの近隣の数を固定数Ｔに切り捨てる。実例として、一実施形態では、この固定数Ｔは５０に設定される。代替実施形態では、数Ｔは１００に設定される。ノードにＴ個の近隣がある場合、変更は必要ない。ただし、識別された近隣が多すぎるノードの場合、（ＧＰＵ１５０６による処理のために）その数はＴに切り捨てられる。（切り捨てられる）ノードの間の選択は、ランダムウォーク選択時に行われた近隣への訪問回数によって判定されるノードへの近隣の重要度に応じて行われてもよい。近隣が少なすぎる場合には、一実施形態ではＮＵＬＬ近隣が含まれ、ノードの近隣の数を固定量Ｔまでパディングする。代替実施形態では、利用可能なノードの数が渡され、それにより、固定数Ｔよりも少ない場合に、ＧＰＵは、実際の近隣ノード情報のみが処理されるように、渡されたデータを処理することができる。理想的には、固定量Ｔは、パディングがまれにしか発生しない可能性が最も高くなるように選択される。一旦、データが、固定セットのデータに処理されると、ＧＰＵ１５０６に渡される。
【０１４２】
ステップ１５２２では、図５のルーチン５００に関して上記で説明したように、ターゲットノードのデータとともに、近傍データの畳み込みが実行される。これらの畳み込みは、（上記で示唆されたように）ターゲットノードおよび近傍ノードの埋め込みベクトル、ならびに集約埋め込みベクトルを含む。これらの埋め込みベクトルを生成する際の畳み込みは、機械学習のディープニューラルネットワーク（図８のニューラルネットワーク８００など）によって実行されて、ターゲットノード１５０２の集約埋め込みベクトル１５２４を生成する。近傍データは、固定サイズのレコード（およびこれらのレコードの固定数）で構成されるため、この処理はＧＰＵ１５０６の強度に着目して行われる。集約埋め込みベクトルを生成した後、ステップ１５２６で、集約埋め込みベクトル１５２４が呼び出し元／要求元に返される。
【０１４３】
ＣＰＵ１５０４（またはＣＰＵのクラスタ）による処理と、ＧＰＵ１５０６（またはＧＰＵのクラスタ）による処理とは、互いに同期的に、または非同期的のいずれかで行われ得ることが理解されるべきである。非同期動作に関して、当業者が理解するように、協調構成要素１２３２は、ＣＰＵに割り当てられたタスクおよび／またはＧＰＵに割り当てられたタスクの完了のために一時停止することなく、複数のターゲットノードの処理を開始してよい。概念的には、これらの要素の、協調構成要素１２３２、ＣＰＵ１５０４、およびＧＰＵ１５０６は、メッセージに応答し、その結果を呼び出し元に返す独立したオブジェクトとして動作し得る。実際、協調構成要素は、ＧＰＵ１５０６による完了時に、集約埋め込みベクトルをターゲットノードに関連付けるように動作する。非同期的に、協調構成要素１２３２は、コーパスグラフ内の複数のターゲットノードの集約埋め込みベクトルに対する要求に関して、ＣＰＵ１５０４とＧＰＵ１５０６との間の調整を実行してもよい。このようにして、ＣＰＵ１５０４が、所与のターゲットノードの関連する近傍データの識別を完了すると、対応するメッセージが協調構成要素１２３２に返される。それに応答して、協調構成要素は、ＧＰＵ１５０６による追加の処理を引き起こして、所与のターゲットノードの集約埋め込みベクトルを生成する。同様に、非同期的に、ＧＰＵ１５０６が、対応するターゲットノードの集約埋め込みベクトルの生成を（近傍データに従って）完了させると、協調構成要素に通知される。
【０１４４】
構成要素の非同期実行、特に「プロデューサ」ＣＰＵと「コンシューマ」ＧＰＵとの間の非同期実行をさらに説明するために、次に図１６を参照する。図１６は、開示された主題の態様による、近傍データ／埋め込みベクトルキューを介した、プロデューサとコンシューマとの分類間の例示的な交換を示すブロック図である。図１５に関して上記で示したように、ＣＰＵ１６０２〜１６０８（プロデューサ１６００とされる）などの１つ以上のＣＰＵは、１つ以上の協調構成要素１２３２とともに動作して、近傍データを生成する。非同期式に、近傍データが生成されると、そのデータは、１つ以上のＣＰＵと、ＧＰＵ１６２２〜１６２６などの１つ以上の「コンシューマ」ＧＰＵとの両方にアクセス可能なデータ／埋め込みベクトルキュー１６１０内に配置される。実際、協調構成要素１２３２からデータを受信したことに応答して、ＣＰＵ１６０２などのＣＰＵは、ノードの近傍データを準備し、準備された近傍データを、データ／埋め込みベクトルキュー１６１０内の空きスロット、例えば、データスロット１６１２に配置する。非同期エンティティ間のキューの操作は、ここでは説明しない既知のプロセスである。コンシューマ側では、プロセスがデータ／埋め込みベクトルキュー１６１０の新しいエントリを監視し、新しいエントリを検出すると、コンシューマ１６２０の間の利用可能なＧＰＵに近傍データを割り当てる。例えば、データスロット１６１２内に近傍データがあるという指示を受信すると、その近傍データを処理するためにＧＰＵ１６２２が割り当てられ得る。
【０１４５】
その部分では、ＧＰＵが近傍データの処理を完了すると、結果として生じる埋め込みベクトルが、対応する埋め込みベクトルスロット内に配置される。上記の例の続きでは、ＧＰＵ１６２２が近傍データの処理を完了した後、結果として得られた集約埋め込みベクトルは、対応する埋め込みベクトルスロット１６１４内に配置される。この時点で、ＧＰＵ１６２２は、追加の近傍データを処理するために、再び自由に割り当てられる。
【０１４６】
プロデューサ側で、対応する埋め込みベクトルが生成され、その対応する埋め込みベクトルスロットに配置されたことが検出されると、ＣＰＵ（典型的には、データ／埋め込みベクトルキュー１６１０または協調モジュール１２３２に近傍データを追加したものであるが、これに限定されるものではない）は、コンシューマＧＰＵによって生成された集約埋め込みベクトルにアクセスし、埋め込みベクトルをソースノードに関連付ける。上記の例の続きでは、コンシューマＧＰＵ１６２２は、集約埋め込みベクトルを埋め込みベクトルスロット１６１４に戻し、非同期的に、ＣＰＵ１６０２は、埋め込みベクトルが生成されたことを識別し、埋め込みベクトルスロットから埋め込みベクトルを取り出し、埋め込みベクトルをソースノードに関連付ける。図１６からさらに分かるように、プロデューサＣＰＵ１６０６は、所与のトークンについての近傍データを「プロデュース」し、その情報をデータスロットに配置している。それに応じて、コンシューマＧＰＵ１６２６は、所与のトークンについての近傍データを処理しているが、集約埋め込みベクトルを生成し、生成されたベクトルを埋め込みベクトルスロット１６１６内に配置するタスクをまだ完了していない。
【０１４７】
図に示すように、データ／埋め込みベクトルキュー１６１０などの１つ以上のデータ／埋め込みベクトルキューに関して動作する、プロデューサ１６００としての複数のプロデューサＣＰＵ（およびプロデューサ協調モジュール）と、コンシューマ１６２０としての複数のＧＰＵとが存在してもよい。このようにして、各側（プロデューサおよびコンシューマ）は非同期的に動作することができ、各側の個々の要素が、ノード／アイテムのコーパスを持つノード／コンテンツアイテムの集約埋め込みベクトルの生成に対するブロックとして動作することなく、最大容量で動作することを可能にする。
【０１４８】
データがキューに送信されると、ＣＰＵは作業を継続することができる。それらのＣＰＵは単にキューの「次の」スロットを選び、対応する埋め込みベクトルを非同期で監視する。
【０１４９】
本明細書に開示される実施態様は、限定ではなく実例として、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定するためのコンピュータ実行方法を含み得る。より具体的には、ターゲットノードの集約埋め込みベクトルは、コーパスグラフ内のターゲットノードの近傍に応じて判定される。本方法は、ターゲットノードの埋め込みベクトルを判定すること、およびターゲットノードの近傍埋め込み情報をさらに判定することを含む。様々な実施形態では、近傍埋め込み情報は、コーパスグラフ内のターゲットノードの近傍についての埋め込み情報を含む。さらに、集約埋め込みベクトルがターゲットノードに対して生成され、この集約埋め込みベクトルは、ターゲットノードの近傍埋め込み情報と集約されたターゲットノードの埋め込みベクトル、および／または連結されたターゲットノードの埋め込みベクトルを含む。その後、集約埋め込みベクトルは、ターゲットノードに関連付けられる。
【０１５０】
任意選択で、本方法は、コンピュータユーザからクエリを受信すること、および受信したクエリがコーパスグラフのターゲットノードに対応することを判定することを含む。複数の潜在的レコメンデーションノードが、クエリに応じてユーザ向けのレコメンデーションであると判定され、複数の潜在的レコメンデーションノードが、ターゲットノードの集約埋め込みベクトルに従って、コーパスグラフから識別される。複数の潜在的レコメンデーションノードの少なくとも１つは、クエリに応答して、ユーザへのレコメンドされたノードとしてユーザに提供される。任意選択で、ターゲットノードの関連する近傍が、コーパスグラフ内で識別される。さらに、ターゲットノードの近傍埋め込み情報を判定することは、コーパスグラフ内の関連する近傍内のノードから近傍埋め込み情報を判定することを含む。任意選択で、コーパスグラフ内のターゲットノードの関連する近傍を識別することは、ターゲットノードからカレントノードとして始めて、さまざまな演算を繰り返し実行することを含み、これらの演算は、カレントノードから、カレントノードに接続されている別のノードへのトラバーサルをランダムに選択すること、カレントノードを別のノードに設定すること、および別のノードに関連付けられている訪問カウントをインクリメントすることを含む。任意選択で、より詳細には、コーパスグラフ内のターゲットノードの関連する近傍を識別することは、カレントノードから、カレントノードに接続された別のノードへのトラバースをランダムに選択することに加えて、カレントノードをターゲットノードにリセットするかどうかをランダムに判定すること、およびそうするためランダムに判定した時点で、カレントノードをターゲットノードにリセットすることをさらに含む。任意選択で、所定数の反復が、ターゲットノードの適合性近傍を判定する際に行われる。任意選択で、ターゲットノードの関連する近傍のノードは、最高の訪問カウントに関連付けられた、コーパスグラフのノードに従って判定される。任意選択で、ターゲットノードの近隣埋め込み情報を生成することは、ターゲットノードの近傍の近隣ノードからの集約埋め込みベクトルに従って、ターゲットノードの近傍埋め込み情報を生成することを含む。任意選択で、ターゲットノードの近隣ノードのそれぞれからの集約埋め込みベクトルは、ターゲットノードの直近の近隣ノードの近隣ノードの近傍埋め込み情報を含む。任意選択で、直近の近隣ノードの集約埋め込みベクトルは、ターゲットノードの直近の近隣ノードの直近の近隣ノードのそれぞれの集約埋め込みベクトルの集約を含む。任意選択で、ターゲットノードの直近の近隣ノードの直近の近隣ノードのそれぞれの埋め込みベクトルは、ターゲットノードへの関連する近傍の判定からの訪問カウントに応じて、ターゲットノードの直近の近隣ノードの他の直近の近隣ノードの埋め込みベクトルと集約して重み付けされる。
【０１５１】
本明細書に開示された実施態様は、限定ではなく実例として、コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステム上で実行されると、コーパスグラフ内のターゲットノードの近傍に従って、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定する方法を実行するコンピュータ実行可能命令を記録したコンピュータ可読媒体を含み得る。この方法は、コーパスグラフ内のターゲットノードに対するノードの関連する近傍を識別することを含む。本方法はさらに、ターゲットノードの埋め込みベクトルを判定すること、およびターゲットノードの近傍埋め込み情報を判定することを含み、近傍埋め込み情報は、コーパスグラフ内の関連する近傍内のノードからの埋め込み情報を含む。本方法は、さらに、ターゲットノードの集約埋め込みベクトルを生成することを含み、この集約埋め込みベクトルは、ターゲットノードの近傍埋め込み情報と連結されたターゲットノードの埋め込みベクトルを含む。集約埋め込みベクトルは、その後、ターゲットノードに関連付けられる。
【０１５２】
任意選択で、コーパスグラフ内のターゲットノードに対するノードの関連する近傍を識別することは、ターゲットノードからカレントノードとして始めて、所定の繰り返し回数だけ繰り返すこと、カレントノードから、カレントノードに接続されている別のノードへのトラバーサルをランダムに選択すること、カレントノードを別のノードに設定すること、および別のノードに関連付けられている訪問カウントをインクリメントすることを含む。繰り返されるプロセスに基づいて、ターゲットノードの関連する近傍のノードは、最高の訪問カウントに関連付けられた、コーパスグラフのノードに従って判定される。任意選択で、コーパスグラフ内のターゲットノードに対するノードの関連する近傍を識別することは、カレントノードをターゲットノードにリセットするかどうかをランダムに判定すること、およびそうするためにランダムに判定した時点で、カレントノードをターゲットノードにリセットすることをさらに含む。任意選択で、ターゲットノードの近隣埋め込み情報を生成することは、ターゲットノードの関連する近傍の近隣ノードからの集約埋め込みベクトルに従って、ターゲットノードの近傍埋め込み情報を生成することを含む。任意選択で、ターゲットノードの直近の近隣ノードのそれぞれの集約埋め込みベクトルは、ターゲットノードの近隣ノードの近隣ノードの近隣埋め込み情報を含む。任意選択で、近隣ノードの近傍埋め込み情報は、ターゲットノードの近隣ノードの近隣ノードのそれぞれの近傍埋め込み情報を含む。任意選択で、ターゲットノードの近隣ノードの近隣ノードのそれぞれの集約埋め込みベクトルは、ターゲットノードへの関連する近傍の判定からの訪問カウントに応じて、ターゲットノードの近隣ノードの他の近隣ノードの埋め込みベクトルと集約して重み付けされる。
【０１５３】
本明細書に開示された実施態様は、限定ではなく実例として、ユーザクエリに応答して、レコメンドされたコンテンツを提供するためのレコメンダシステムとして構成されたコンピュータシステムを含み得る。コンピュータシステムはプロセッサおよびメモリを含み、ここで、プロセッサは、ユーザのクエリに、レコメンドされたコンテンツを提供する際に、ユーザのクエリに応答するために、追加構成要素の一部として、または追加構成要素と組み合わせて、メモリに格納された命令を実行する。第１の追加構成要素は、コンテンツレコメンダ構成要素を含む。コンピュータシステム上での実行において、コンテンツレコメンダ構成要素は、ネットワークを介してユーザからクエリを受信し、クエリはコンテンツのアイテムを含む。コンテンツレコメンダ構成要素は、レコメンダシステムによって維持されているコーパスグラフの中から、クエリに対応するコンテンツのアイテムを識別する。コンテンツレコメンダ構成要素は、コーパスグラフ内の対応するコンテンツのアイテムに関連付けられた集約埋め込みベクトルに従って、ユーザに対する潜在的なコンテンツのレコメンデーションセットを判定する。コンテンツレコメンダ構成要素は、潜在的なコンテンツレコメンデーションのセットから少なくとも１つのコンテンツレコメンデーションを選択し、少なくとも１つのコンテンツレコメンデーションをユーザに提供する。第２の追加構成要素は、埋め込みベクトル生成器を含む。コンピュータシステム上での実行において、埋め込みベクトル生成器は、コーパスグラフ内の対応するコンテンツのアイテムの関連する近傍を判定する。さらに、埋め込みベクトル生成器は、コーパスグラフ内の対応するコンテンツのアイテムの集約埋め込みベクトルを生成する。この集約埋め込みベクトルは、対応するコンテンツのアイテムの埋め込みベクトルと、対応するコンテンツのアイテムのネットワーク埋め込みベクトルとを含む。
【０１５４】
任意選択で、埋め込みベクトル生成器は、コーパスグラフ内の対応するコンテンツのアイテムの関連する近傍内の近隣ノードからの集約埋め込みベクトルに従って、コーパスグラフ内の対応するコンテンツのアイテムの近傍埋め込みベクトルを生成する。
【０１５５】
本明細書に開示される実施態様は、限定ではなく実例として、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定するためのコンピュータ実行方法を含み得る。本方法は、コーパスグラフのターゲットノードにアクセスすること、およびターゲットノードに関連する集約埋め込みベクトルを判定することを含む。集約埋め込みベクトルを判定することは、中央処理ユニット（ＣＰＵ）による実行を通じて、コーパスグラフ内のターゲットノードの関連する近傍を少なくとも判定することを含む。さらに、集約埋め込みベクトルを判定することは、グラフィック処理ユニット（ＧＰＵ）による実行を通じて、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することを含む。集約埋め込みベクトルは、ターゲットノードの関連する近傍から判定されたターゲットノードの近傍埋め込み情報と連結されたターゲットノードの埋め込みベクトルを含む。集約埋め込みベクトルを判定することに加えて、本方法は、集約埋め込みベクトルをターゲットノードに関連付けることを含む。
【０１５６】
任意選択で、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定する本方法は、さらに、コンピュータユーザからクエリを受信すること、クエリがコーパスグラフのターゲットノードに対応することを判定すること、および複数の潜在的なレコメンデーションノードを、クエリを考慮したユーザに対するレコメンデーションとして判定することを含む。複数の潜在的なレコメンデーションノードは、ターゲットノードの集約埋め込みベクトルに従ってコーパスグラフから識別される。その後、複数の潜在的レコメンデーションノードの少なくとも１つは、クエリに応答して、ユーザへのレコメンドされたノードとしてユーザに提供される。任意選択で、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定する本方法は、さらに、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理することを含む。さらに、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することは、ターゲットノードの関連する近傍の固定数のレコードに応じて、ターゲットノードの集約埋込みベクトルを生成することを含む。任意選択で、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定する本方法は、ターゲットノードの関連する近傍データ内の各ノードの近隣の数を、所定の固定数に固定することをさらに含む。さらに、ターゲットノードの関連する近傍データを固定数のレコードに処理することは、ターゲットノードの関連する近傍データ内の各ノードの近傍数を固定した後、各ノードが対応するレコードを有するように、ターゲットノードの関連する近傍データを処理することを含む。任意選択で、固定数のレコードの各レコードは、固定サイズのレコードである。任意選択で、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理することは、固定数の近隣ノードに対する固定数の近隣よりも多くの近隣ノードを有する近傍データ内のノードの近隣ノードを切り捨てることを含む。任意選択で、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理することは、さらに、固定数の近隣ノードよりも少ない近隣データのノードを、固定数の近隣ノードに至るまで、ＮＵＬＬ近隣ノードでパディングすることを含む。任意選択で、各レコードは、少なくとも近傍データのノードの情報、そのノードの近隣ノードの情報、およびノードのヌル近隣ノードの数の表示に対応する。任意選択で、中央処理ユニットによる実行を通じてコーパスグラフ内のターゲットノードの関連する近傍を判定することは、グラフィック処理ユニットによる実行を通じて、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することと非同期で実行される。任意選択で、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理することは、中央処理ユニット（ＣＰＵ）によって実行される。任意選択で、グラフィック処理ユニットは、グラフィック処理ユニット（ＧＰＵ）のクラスタの１つである。任意選択で、グラフィック処理ユニット（ＧＰＵ）のクラスタは、中央処理ユニットに対するグラフィック処理ユニットのリモートクラスタである。
【０１５７】
本明細書に開示された実施態様は、限定ではなく実例として、コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステム上で実行されると、コーパスグラフのターゲットノードの集約埋め込みベクトルを判定する方法を実行するコンピュータ実行可能命令を記録したコンピュータ可読媒体を含み得る。本方法は、コーパスグラフのターゲットノードにアクセスすること、およびターゲットノードに関連する集約埋め込みベクトルを判定することを含む。ターゲットノードに関連する集約埋め込みベクトルを判定するステップは、中央処理ユニット（ＣＰＵ）による実行を通じて、コーパスグラフ内のターゲットノードの関連する近傍を判定することを含み、さらに、グラフィック処理ユニット（ＧＰＵ）による実行を通じて、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することを含む。さらに、集約埋め込みベクトルは、ターゲットノードの関連する近傍から判定されたターゲットノードの近傍埋め込み情報と連結されたターゲットノードの埋め込みベクトルを含む。本方法は、集約埋め込みベクトルをターゲットノードに関連付けることをさらに含む。
【０１５８】
任意選択で、コンピュータ可読媒体上で命令を実行することによって実行される本方法は、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理することをさらに含む。さらに、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することは、ターゲットノードの関連する近傍の固定数のレコードに応じて、ターゲットノードの集約埋込みベクトルを生成することを含む。任意選択で、本方法は、ターゲットノードの関連する近傍データ内の各ノードの近隣の数を、所定の固定数に固定することをさらに含む。さらに、ターゲットノードの関連する近傍データを固定数のレコードに処理することは、ターゲットノードの関連する近傍データ内の各ノードの近傍数を固定した後、各ノードが対応するレコードを有するように、ターゲットノードの関連する近傍データを処理することを含む。任意選択で、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理する際に、本方法は、さらに、固定数の近隣よりも多い近隣ノードを有する近傍データ内のノードの近隣ノードを、固定数の近隣ノードに合わせて切り捨てること、および固定数の近隣ノードよりも少ない近隣ノードを有する近隣データのノードを、固定数の近隣ノードに至るまで、ＮＵＬＬ近隣ノードでパディングすることを含む。任意選択で、中央処理ユニットによる実行を通じてコーパスグラフ内のターゲットノードの関連する近傍を判定することは、グラフィック処理ユニットによる実行を通じて、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することと非同期で実行される。任意選択で、グラフィック処理ユニット（ＧＰＵ）は、グラフィック処理ユニットのクラスタの１つであり、グラフィック処理ユニットのクラスタは、中央処理ユニットに対してリモートである。
【０１５９】
本明細書に開示された実施態様は、限定ではなく実例として、ユーザクエリに応答して、レコメンドされたコンテンツを提供するためのレコメンダシステムとして構成されたコンピュータシステムを含み得る。本コンピュータシステムはプロセッサおよびメモリを含み、ここで、プロセッサは、ユーザのクエリに応答するために、追加構成要素の一部として、または追加構成要素と組み合わせて、メモリに格納された命令を実行する。これらの追加構成要素は、コンテンツレコメンダ構成要素を含む。コンテンツレコメンダ構成要素は、本コンピュータシステム上での実行中に、ネットワークを介してユーザからクエリを受信し、クエリにはコンテンツのアイテムが含まれる。さらに、コンテンツレコメンダ構成要素は、本コンピュータシステム上で実行中に、レコメンダシステムによって維持されているコーパスグラフ内のクエリに対応するコンテンツのアイテムを識別する。コンテンツレコメンダ構成要素は、コーパスグラフ内の対応するコンテンツのアイテムに関連付けられた集約埋め込みベクトルに従って、ユーザに対する潜在的なコンテンツのレコメンデーションセットをさらに判定する。さらに、コンテンツレコメンダ構成要素は、潜在的なコンテンツレコメンデーションのセットから少なくとも１つのコンテンツレコメンデーションを選択し、少なくとも１つのコンテンツレコメンデーションをユーザに提供する。追加構成要素は、埋め込みベクトル生成器も含む。本コンピュータシステム上での実行において、埋め込みベクトル生成器は、コーパスグラフのターゲットノードにアクセスし、ターゲットノードに関連する集約埋め込みベクトルを判定する。ターゲットノードに関連する集約埋め込みベクトルを判定することは、少なくとも、中央処理ユニット（ＣＰＵ）による実行を通じて、コーパスグラフ内のターゲットノードの関連する近傍を判定すること、およびグラフィック処理ユニット（ＧＰＵ）による実行を通じて、ターゲットノードの関連する近傍に応じて、ターゲットノードの集約埋め込みベクトルを生成することを含む。集約埋め込みベクトルは、ターゲットノードの関連する近傍から判定されたターゲットノードの近傍埋め込み情報と連結されたターゲットノードの埋め込みベクトルを含む。
【０１６０】
任意選択で、本コンピュータシステム上で実行中の埋め込みベクトル生成器は、ターゲットノードの関連する近傍データを、ターゲットノードの関連する近傍の固定数のレコードに処理する。ターゲットノードの集約埋め込みベクトルは、ターゲットノードの関連する近傍に応じて生成され、ターゲットノードの関連する近傍の固定数のレコードに応じて、ターゲットノードの集約埋め込みベクトルを生成することを含む。さらに、埋め込みベクトル生成器は、ターゲットノードの関連する近傍データ内の各ノードの近隣の数を所定の固定数に固定する。ターゲットノードの関連する近傍データは、ターゲットノードの関連する近傍データ内の各ノードの近傍数を固定した後、各ノードが対応するレコードを有するように、ターゲットノードの関連する近傍データを処理することを含む、固定数のレコードに処理される。
【０１６１】
本明細書に開示される実施態様は、限定ではなく実例として、コーパスグラフのノードの集約埋め込みベクトルを効率的に生成するためのコンピュータ実行方法を含み得る。本方法は、複数のノードを含むコーパスグラフにアクセスすること、およびコーパスグラフの複数のノードを処理するための実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することを含む。実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することは、コーパスグラフの複数のノード上で実行する１つ以上の実行可能なマッパー関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することを含む。これは、コーパスグラフの複数のノードのそれぞれについて、マッパー関数が、コーパスグラフの現在処理されているノードの対応する埋め込みベクトルを生成し、生成された埋め込みベクトルをコーパスグラフの現在処理されているノードに関連付ける。実行可能なＭａｐＲｅｄｕｃｅフレームワークは、コーパスグラフの複数のノードのそれぞれに対して、コーパスグラフの複数のノードで実行される１つ以上の実行可能なリデューサ関数でさらに構成される。リデューサ関数は、現在処理されているノードの対応する埋め込みベクトルにアクセスし、現在処理されているノードのコーパスグラフ内のノードの関連する近傍にアクセスするように構成されている。さらに、リデューサ関数は、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に結合する。さらに、リデューサ関数は、現在処理されているノードの埋め込みベクトルを、現在処理されているノードの関連する近傍からの近傍埋め込み情報と組み合わせて、現在処理されているノードの集約埋め込みベクトルを形成する。さらに、リデューサ関数は、集約埋め込みベクトルをコーパスグラフ内で現在処理されているノードに関連付ける。引き続き、リデューサ関数は、集約埋め込みベクトルをコーパスグラフ内で現在処理されているノードに関連付ける。この方法は、実行可能なＭａｐＲｅｄｕｃｅフレームワークにコーパスグラフを提供して処理することをさらに含む。
【０１６２】
任意選択で、本方法はさらに、コーパスグラフの複数のノードのそれぞれについて、コーパスグラフの現在反復中のノードの関連する近傍を判定すること、および現在反復中のノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納することを含む。任意選択で、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することは、コーパスグラフの複数のノード上で実行するための第２の実行可能なマッパー関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することをさらに含む。第２の実行可能なマッパー関数は、コーパスグラフの複数のノードのそれぞれについて、第２の実行可能なマッパー関数が、コーパスグラフの現在反復されているノードの関連する近傍を判定し、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納するように構成される。任意選択で、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することは、コーパスグラフの複数のノード上で実行するための第２の実行可能なマッパー関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することをさらに含む。さらに、複数のノードで実行するように第２の実行可能なマッパー関数を構成することは、コーパスグラフの現在反復されているノードの関連する近傍を判定すること、および現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納することを含む。任意選択で、実行可能なマッパー関数は、コーパスグラフの複数のノードのそれぞれについて、マッパー関数が、コーパスグラフの現在反復されているノードの関連する近傍をさらに判定し、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納するようにさらに構成される。任意選択で、コーパスグラフの現在反復されているノードの関連する近傍を判定することは、ランダムウォークプロセスに従ってコーパスグラフの現在反復されているノードの関連する近傍を判定することを含む。任意選択で、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に組み合わせることは、関連する近傍のスタッキングレベルに従って、現在反復されているノードの関連する近傍のノードの関連する近傍ノードの埋め込みベクトルを組み合わせることを含む。任意選択で、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に組み合わせることは、現在処理されているノードに対する関連する近傍のノードの重要度に従って、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に結合することを含む。
【０１６３】
本明細書に開示された実施態様は、限定ではなく実例として、コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステム上で実行されると、コーパスグラフのノードの集約埋め込みベクトルを効率的に生成する方法を実行するコンピュータ実行可能命令を記録したコンピュータ可読媒体を含み得る。本方法は、複数のノードを含むコーパスグラフにアクセスすることを含む。実行可能なＭａｐＲｅｄｕｃｅフレームワークは、コーパスグラフの複数のノードを処理するように構成されている。実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することは、コーパスグラフの複数のノード上で実行する実行可能なマッパー関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することを含む。これに関して、コーパスグラフの複数のノードのそれぞれについて、マッパー関数が、コーパスグラフの現在処理されているノードの対応する埋め込みベクトルを生成し、生成された埋め込みベクトルをコーパスグラフの現在処理されているノードに関連付けるように構成されている。さらに、コーパスグラフの複数のノードのそれぞれについて、リデューサ関数は、現在処理されているノードの対応する埋め込みベクトルにアクセスし、現在処理されているノードのコーパスグラフ内のノードの関連する近傍にアクセスし、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍の埋め込み情報に組み合わせ、現在処理されているノードの埋め込みベクトルを、現在処理されているノードの関連する近傍からの近傍埋め込み情報とさらに組み合わせて、現在処理されているノードの集約埋め込みベクトルを形成し、集約埋め込みベクトルを、コーパスグラフで現在処理されているノードに関連付けるように構成されている。その後、本方法は、コーパスグラフを実行可能なＭａｐＲｅｄｕｃｅフレームワークに提供して処理する。
【０１６４】
任意選択で、本方法はさらに、コーパスグラフの複数のノードのそれぞれについて、コーパスグラフの現在反復中のノードの関連する近傍を判定すること、および現在反復中のノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納することを含む。任意選択で、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することは、コーパスグラフの複数のノード上で実行するための第２の実行可能なマッパー関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することをさらに含む。第２の実行可能なマッパー関数を使用してＭａｐＲｅｄｕｃｅフレームワークを構成した結果、コーパスグラフの複数のノードのそれぞれについて、第２の実行可能なマッパー関数が、コーパスグラフの現在反復されているノードの関連する近傍を判定し、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納する。任意選択で、実行可能なマッパー関数は、コーパスグラフの複数のノードのそれぞれについて、マッパー関数が、コーパスグラフの現在反復されているノードの関連する近傍をさらに判定し、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納するようにさらに構成される。任意選択で、コーパスグラフの現在反復されているノードの関連する近傍を判定することは、ランダムウォークプロセスに従ってコーパスグラフの現在反復されているノードの関連する近傍を判定することを含む。任意選択で、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に組み合わせることは、関連する近傍のスタッキングレベルに従って、現在反復されているノードの関連する近傍のノードの関連する近傍ノードの埋め込みベクトルを組み合わせることを含む。任意選択で、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に組み合わせることは、現在処理されているノードに対する関連する近傍のノードの重要度に従って、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に結合することを含む。
【０１６５】
本明細書に開示される実施態様は、限定ではなく実例として、コーパスグラフの複数のノードの集約埋め込みベクトルを効率的に生成するように構成されたコンピュータシステムを含み得る。本コンピュータシステムは、プロセッサおよびメモリを含み、プロセッサは、集約埋め込みベクトルを生成するための追加構成要素の一部として、または追加構成要素とともに、メモリに格納された命令を実行する。これらの追加の実行可能な構成要素は、例示的に、複数のノードを含むコーパスグラフを格納するデータストア、および実行可能な埋め込みベクトル生成構成要素を含む。埋め込みベクトル生成構成要素は、コンピュータシステムで実行中に、コーパスグラフにアクセスし、コーパスグラフの複数のノードを処理するための実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成する。コーパスグラフの複数のノードを処理するためのＭａｐＲｅｄｕｃｅフレームワークの構成には、コーパスグラフの複数のノードで実行する実行可能なマッパー関数を含む実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成すること、およびコーパスグラフの複数のノードで実行する実行可能なリデューサ関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することの両方が含まれる。実行可能なＭａｐＲｅｄｕｃｅフレームワークを実行可能なマッパー関数で構成することに関して、コーパスグラフの複数のノードのそれぞれについて、マッパー関数が、コーパスグラフの現在処理されているノードの対応する埋め込みベクトルを生成し、生成された埋め込みベクトルをコーパスグラフの現在処理されているノードに関連付ける。さらに、実行可能なＭａｐＲｅｄｕｃｅフレームワークを実行可能なリデューサ関数で構成する際に、コーパスグラフの複数のノードのそれぞれについて、リデューサ関数は、現在処理されているノードの対応する埋め込みベクトルにアクセスし、現在処理されているノードのコーパスグラフ内のノードの関連する近傍にさらにアクセスするように構成されている。追加的に、リデューサ関数は、さらに、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に組み合わせるように構成され、現在処理されているノードの埋め込みベクトルを、現在処理されているノードの関連する近傍からの近傍埋め込み情報と組み合わせて、現在処理されているノードの集約埋め込みベクトルを形成するように構成されている。さらにまた、リデューサ関数は、集約埋め込みベクトルをコーパスグラフで現在処理されているノードに関連付けるようにさらに構成されている。埋め込みベクトル生成構成要素は、コーパスグラフを、実行可能なＭａｐＲｅｄｕｃｅフレームワークに提供して処理するようにさらに構成されている。
【０１６６】
任意選択で、追加の実行可能な構成要素としては、関連近傍識別構成要素がある。実行時に、コーパスグラフの複数のノードのそれぞれについて、関連近傍識別構成要素は、コーパスグラフの現在反復されているノードの関連する近傍を判定し、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納する。任意選択で、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することは、コーパスグラフの複数のノード上で実行するための第２の実行可能なマッパー関数を使用して、実行可能なＭａｐＲｅｄｕｃｅフレームワークを構成することをさらに含む。第２の実行可能なマッパー関数は、コーパスグラフの複数のノードのそれぞれについて、コーパスグラフの現在反復されているノードの関連する近傍を判定するように構成されており、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納するように構成されている。任意選択で、実行可能なマッパー関数は、さらに、コーパスグラフの複数のノードのそれぞれについて、コーパスグラフの現在反復されているノードの関連する近傍を判定するように構成されており、現在反復されているノードに関連して、コーパスグラフの現在反復されているノードの関連する近傍を識別する情報を格納するように構成されている。任意選択で、コーパスグラフの現在反復されているノードの関連する近傍を判定することは、ランダムウォークプロセスに従ってコーパスグラフの現在反復されているノードの関連する近傍を判定することを含む。任意選択で、現在処理されているノードの関連する近傍からのノードの埋め込みベクトルを近傍埋め込み情報に組み合わせることは、関連する近傍のスタッキングレベルに従って、現在反復されているノードの関連する近傍のノードの関連する近傍ノードの埋め込みベクトルを組み合わせることを含む。
【０１６７】
本明細書に開示される実施態様は、限定ではなく実例として、コーパスグラフのターゲットノードの関連する近傍を判定するためのコンピュータ実行方法を含み得る。実行中、本方法は、コーパスグラフのターゲットノードにアクセスすること、および所定数の反復のそれぞれについて、複数の近隣ノードからコーパスグラフ内のカレントノードへの近隣ノードの接続をランダムに選択することを含む。さらに、本方法は、ターゲットノードの訪問リスト内の選択された近隣ノードに対応するカウントをインクリメントすることを含み、インクリメントされたカウントは、選択された近隣ノードへのランダムなトラバーサルを示し、選択された近隣ノードをカレントノードとしてさらに設定する。本方法は、さらに、訪問リストにリストされた近隣ノードの対応する訪問カウントに従って、訪問リストにリストされた近隣ノードのノードのサブセットを識別すること、およびノードのサブセットを、ターゲットノードの関連する近傍の近隣ノードとして提供することを含む。
【０１６８】
任意選択で、本方法は、さらに、所定の反復回数のそれぞれについて、コーパスグラフ内のカレントノードへの複数の近隣ノードからの近隣ノードの接続をランダムに選択する前に、ターゲットノードにリセットするかどうかをランダムに判定すること、およびターゲットノードにリセットすることをランダムに判定した後に、ターゲットノードをカレントノードとしてリセットすることを含む。任意選択で、訪問リストにリストされた近隣ノードの対応する訪問カウントに従って、訪問リストにリストされた近隣ノードのノードのサブセットを識別することは、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有する訪問リストにリストされた所定の数のノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有する訪問リストにリストされた所定の割合のノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、訪問カウントが所定のしきい値を満たすかまたは超える訪問リストにリストされたノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有し、集合的にすべての訪問の所定のしきい値パーセンテージを表す、訪問リストにリストされたノードを識別することを含む。任意選択で、本方法は、ターゲットノードの関連する近傍の近隣ノードに従って、近傍埋め込み情報を集約すること、および本方法の実行に応答して、ターゲットノードの関連する近傍の近隣ノードとしてノードのサブセットを提供し、近傍埋め込む情報を集約することをさらに含む。
【０１６９】
本明細書に開示された実施態様は、限定ではなく実例として、コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステム上で実行されると、コーパスグラフのターゲットノードの関連する近傍を判定する方法を実行するコンピュータ実行可能命令を記録したコンピュータ可読媒体を含み得る。本方法は、コーパスグラフのターゲットノードにアクセスすることを含む。所定数の反復のそれぞれについて、最初はカレントノードとしてターゲットノードから開始して、本方法はさらに、コーパスグラフ内の複数の近隣ノードからカレントノードへの近隣ノードの接続をランダムに選択すること、およびターゲットノードの訪問リスト内の選択された近隣ノードに対応するカウントをインクリメントすることであって、インクリメントされたカウントは、選択された近隣ノードへのランダムなトラバーサルを示す、インクリメントすること、選択された近隣ノードをカレントノードとして設定すること、を含む。さらに、本方法は、訪問リストにリストされた近隣ノードの対応する訪問カウントに従って、訪問リストにリストされた近隣ノードのノードのサブセットを識別することを含む。近傍埋め込み情報は、ターゲットノードの関連する近傍の近隣ノードに従って集約される。その後、ノードのサブセットは、本方法の実行に応答して、ターゲットノードの関連する近傍の近隣ノードおよび集約された近傍埋め込み情報として提供される。
【０１７０】
任意選択で、コンピュータ可読媒体から取り出されたコンピュータ実行可能命令の実行を通じて実行される本方法は、さらに、所定の反復回数のそれぞれについて、コーパスグラフ内のカレントノードへの複数の近隣ノードからの近隣ノードの接続をランダムに選択する前に、ターゲットノードにリセットするかどうかをランダムに判定すること、およびターゲットノードにリセットすることをランダムに判定した後に、ターゲットノードをカレントノードとしてリセットすることを含む。任意選択で、訪問リストにリストされた近隣ノードの対応する訪問カウントに従って、訪問リストにリストされた近隣ノードのノードのサブセットを識別することは、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有する訪問リストにリストされた所定の数のノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有する訪問リストにリストされた所定の割合のノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、訪問カウントが所定のしきい値を満たすかまたは超える訪問リストにリストされたノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有し、集合的にすべての訪問の所定のしきい値パーセンテージを表す、訪問リストにリストされたノードを識別することを含む。
【０１７１】
本明細書に開示された実施態様は、限定ではなく実例として、コーパスグラフのターゲットノードの関連する近傍を判定するように構成されたコンピュータシステムを含み得る。本コンピュータシステムは、プロセッサおよびメモリを備え、プロセッサは、追加構成要素の一部としてまたは追加構成要素と共にメモリに格納された命令を実行して、ターゲットノードの関連する近傍を判定する。これらの追加構成要素には、アイテムのコーパスグラフを格納するデータストアと、実行可能な関連近傍構成要素とがある。コンピュータシステム上での実行において、実行可能な関連近傍構成要素は、コーパスグラフのターゲットノードにアクセスし、所定数の反復のそれぞれについて、最初にカレントノードとしてのターゲットノードから開始して、コーパスグラフ内の複数の近隣ノードからカレントノードへの近隣ノードの接続をランダムに選択するように構成されている。反復の一部として、実行可能な関連近傍構成要素はさらに、ターゲットノードの訪問リスト内の選択された近隣ノードに対応するカウントをインクリメントするように構成されている。インクリメントされたカウントは、選択された近隣ノードへのランダムなトラバーサルを示す。反復の追加部分として、実行可能な関連近傍構成要素は、選択された近隣ノードをカレントノードとして設定し、または確立するようにさらに構成される。実行可能な関連近傍構成要素は、さらに、訪問リストにリストされた近隣ノードの対応する訪問カウントに従って、訪問リストにリストされた近隣ノードのノードのサブセットを識別するように構成されており、ノードのサブセットを、ターゲットノードの関連する近傍の近隣ノードとして提供するように構成されている。
【０１７２】
任意選択で、実行可能な関連近傍構成要素は、さらに、所定の反復回数のそれぞれについて、コーパスグラフ内のカレントノードへの複数の近隣ノードからの近隣ノードの接続をランダムに選択する前に、ターゲットノードにリセットするかどうかをランダムに判定すること、およびターゲットノードにリセットすることをランダムに判定した後に、ターゲットノードをカレントノードとしてリセットすることを行うように構成されている。任意選択で、訪問リストにリストされた近隣ノードの対応する訪問カウントに従って、訪問リストにリストされた近隣ノードのノードのサブセットを識別することは、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有する訪問リストにリストされた所定の数のノードを識別することを含む。任意選択で、最高の訪問カウントを有する訪問リストにリストされた近隣ノードを識別することは、最高の訪問カウントを有する訪問リストにリストされた所定の割合のノードを識別することを含む。
【０１７３】
本明細書に開示された実施態様は、限定ではなく実例として、複数のノードを含むコーパスグラフ内のターゲットノードの近傍埋め込み情報を判定するためのコンピュータ実行方法を含み得る。本方法は、コーパスグラフのターゲットノードにアクセスすること、およびコーパスグラフ内のターゲットノードの関連する近傍を判定することを含む。関連する近傍には、ターゲットノードに関連するとされたコーパスグラフの複数のノードが含まれる。さらに、関連する近傍の複数のノードのそれぞれは、ターゲットノードに対する相対的な重要度を示す重要度値に関連付けられている。本方法は、さらに、ターゲットノードの近傍埋め込み情報を生成することを含む。近傍埋め込み情報は、複数の要素を含み、各要素が、関連する近傍の複数のノードのうちのノードの埋め込みに対応する。さらにまた、ターゲットノードの近傍埋め込み情報は、関連する近傍の複数のノードの関連する重要度値の関数として生成される。
【０１７４】
任意選択で、ターゲットノードの近傍埋め込み情報を生成することは、近傍埋め込み情報の各要素について、関連する近傍の複数のノードのうちのノードを選択すること、および選択されたノードの埋め込みベクトルの対応する要素を近傍埋め込み情報の現在の要素として選択することを含む。任意選択で、本方法は、複数の埋め込みベクトルに関連付けられた重要度値を正規化することをさらに含む。また、関連する近傍の複数のノードのうちのノードを選択することは、複数のノードの正規化された重要度値に従って、関連する近傍の複数のノードのうちのノードをランダムに選択することを含む。任意選択で、コーパスグラフ内のターゲットノードの関連する近傍を判定することは、関連付けられた最高の重要度値を有するコーパスグラフの所定数までのノードを選択することを含む。任意選択で、最高の関連付けられた重要度値を有するコーパスグラフの所定数までのノードを選択することは、最高の関連付けられた重要度値を有し、所定のしきい値よりも大きいコーパスグラフの所定数までのノードを選択することを含む。任意選択で、本方法は、さらに、近傍埋め込み情報をターゲットノードの埋め込み値と組み合わせて、ターゲットノードの集約埋め込み値を形成することを含む。任意選択で、ターゲットノードの関連する近傍の複数のノードのそれぞれに関連付けられた重要度値は、コーパスグラフ内のノードのランダムトラバーサル中のターゲットノードから複数のノードへの訪問カウントに従って判定される。
【０１７５】
本明細書に開示された実施態様は、限定ではなく実例として、コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステム上で実行されると、複数のノードを含むコーパスグラフにおけるターゲットノードの近傍埋め込み情報を判定する方法を実行するコンピュータ実行可能命令を記録したコンピュータ可読媒体を含み得る。本方法は、コーパスグラフのターゲットノードにアクセスすること、およびコーパスグラフ内のターゲットノードの関連する近傍を判定することを含む。関連する近傍は、ターゲットノードに関連するとされたコーパスグラフの複数のノードを含み、関連する近傍の複数のノードのそれぞれは、ターゲットノードに対する相対的重要度を示す重要度値に関連付けられている。本方法は、さらに、ターゲットノードの近傍埋め込み情報を生成することを含む。近傍埋め込み情報は、複数の要素を含み、各要素が、関連する近傍の複数のノードのうちのノードの埋め込みに対応する。さらに、ターゲットノードの近傍埋め込み情報は、関連する近傍の複数のノードの関連する重要度値の関数として生成される。
【０１７６】
任意選択で、ターゲットノードの近傍埋め込み情報を生成することは、近傍埋め込み情報の各要素について、関連する近傍の複数のノードのうちのノードを選択すること、および選択されたノードの埋め込みベクトルの対応する要素を近傍埋め込み情報の現在の要素として選択することを含む。任意選択で、本方法は、複数の埋め込みベクトルに関連付けられた重要度値を正規化することをさらに含む。また、関連する近傍の複数のノードのうちのノードを選択することは、複数のノードの正規化された重要度値に従って、関連する近傍の複数のノードのうちのノードをランダムに選択することを含む。任意選択で、コーパスグラフ内のターゲットノードの関連する近傍を判定することは、関連付けられた最高の重要度値を有するコーパスグラフの所定数までのノードを選択することを含む。任意選択で、最高の関連付けられた重要度値を有するコーパスグラフの所定数までのノードを選択することは、最高の関連付けられた重要度値を有し、所定のしきい値よりも大きいコーパスグラフの所定数までのノードを選択することを含む。任意選択で、本方法は、さらに、近傍埋め込み情報をターゲットノードの埋め込み値と組み合わせて、ターゲットノードの集約埋め込み値を形成することを含む。任意選択で、ターゲットノードの関連する近傍の複数のノードのそれぞれに関連付けられた重要度値は、コーパスグラフ内のノードのランダムトラバーサル中のターゲットノードから複数のノードへの訪問カウントに従って判定される。
【０１７７】
本明細書で開示された実施態様は、限定ではなく実例として、コーパスグラフ内のターゲットノードの近傍埋め込み情報を判定するように構成されたコンピュータシステムを含み得る。本コンピュータシステムは、プロセッサおよびメモリを含み、プロセッサは、メモリに格納された命令を、追加構成要素の一部として、または追加構成要素とともに実行して、近傍埋め込み情報を生成する。これらの追加構成要素には、アイテムのコーパスグラフを格納するデータストアと、実行可能な関連近傍構成要素とがある。本コンピュータシステムでの実行において、関連近傍構成要素は、コーパスグラフ内のターゲットノードの関連する近傍を判定するように構成されている。関連する近傍には、ターゲットノードに関連するとされたコーパスグラフの複数のノードが含まれる。さらに、関連する近傍の複数のノードのそれぞれは、ターゲットノードに対する相対的な重要度を示す重要度値に関連付けられている。関連近傍構成要素は、さらに、ターゲットノードの近傍埋め込み情報を生成するように構成されている。この近傍埋め込み情報は、複数の要素を含み、各要素が、関連する近傍の複数のノードのうちのノードの埋め込みに対応する。さらに、ターゲットノードの近傍埋め込み情報は、関連する近傍の複数のノードの関連する重要度値の関数として生成される。
【０１７８】
任意選択で、ターゲットノードの関連近傍構成要素の近傍埋め込み情報を生成する際に、関連近傍構成要素は、さらに、近傍埋め込み情報の要素ごとに、関連する近傍の複数のノードのうちのノードを選択し、選択されたノードの埋め込みベクトルの対応する要素を、近傍埋め込み情報の現在の要素として選択するように構成される。任意選択で、関連近傍構成要素は、複数の埋め込みベクトルに関連付けられた重要度値を正規化するようにさらに構成されている。また、関連する近傍の複数のノードのうちのノードを選択する際に、関連近傍構成要素は、複数のノードの正規化された重要度値に従って、関連する近傍の複数のノードのうちのノードをランダムに選択する。任意選択で、コーパスグラフ内のターゲットノードの関連する近傍を判定する際に、関連近傍構成要素は、関連付けられた最高の重要度値を有するコーパスグラフの所定数までのノードを選択する。任意選択で、最高の関連付けられた重要度値を有するコーパスグラフの所定数までのノードを選択する際に、関連近傍構成要素は、関連付けられた最高の重要度値を有し、所定のしきい値より大きいコーパスグラフの所定数までのノードを選択する。任意選択で、関連近傍構成要素は、さらに、近傍埋め込み情報をターゲットノードの埋め込み値と組み合わせて、ターゲットノードの集約された埋め込み値を形成するように構成されている。
【０１７９】
本明細書で開示された実施態様は、限定ではなく実例として、コーパスグラフ内のターゲットノードに関するマッチングノードを識別するために、機械学習モデルを効率的にトレーニングするコンピュータ実行方法を含み得る。本方法は、トリプレットの入力ノードを含むトレーニングレコードを処理するために、機械学習モデルを初期化することを含む。この入力ノードのトリプレットには、ターゲットノード、対応するマッチングノード、および対応する非マッチングノードが含まれる。本方法はさらに、機械学習モデルを訓練するための訓練データの集合体にアクセスすることを含む。実際、機械学習モデルは、トレーニングレコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別するようにトレーニングされ、ターゲットノードの対応するマッチングノードを正しく識別する。さらに、訓練データの集合体は、複数の訓練レコードを含む。本方法は、訓練データの集合体を使用して、機械学習モデルを訓練することをさらに含む。機械学習モデルは、トレーニングデータの集合体のターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、トレーニングデータに基づいてトレーニングされる。本方法は、さらに、対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、トレーニングデータの集合体を更新することを含む。本方法の一部として、機械学習モデルは、更新されたトレーニングデータの集合体のターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、更新されたトレーニングデータの集合体を使用してさらにトレーニングする。さらにまた、本方法は、訓練された機械学習モデルから、実行可能な機械学習モデルを生成することを含む。
【０１８０】
任意選択で、所定の反復回数の間、訓練データの集合体を更新し、更新された訓練データの集合体を使用して機械学習モデルを訓練するステップは、さらに、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新すること、および更新された訓練データの集合体のターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、更新された訓練データの集合体を使用して機械学習モデルを訓練することを含む。任意選択で、所定の反復回数は、少なくとも２回である。任意選択で、訓練データは、最初に、対応するマッチングノードまたは対応する非マッチングノードの少なくとも１つが欠落しているような不完全な訓練レコードを含む。さらに、本方法は、各訓練レコードが、ターゲットノードと、対応する非マッチングノードとを含むトリプレットの入力値を含むように、訓練データを完成させることを含む。任意選択で、訓練データを完成させることが、訓練データの集合体の各訓練レコードに対して、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍のうちの最も関連する近隣ノードを、訓練レコードの対応するマッチングノードとして選択するステップを含む。任意選択で、訓練データを完成させるステップが、さらに、訓練データの集合体の各訓練レコードに対して、コーパスグラフからターゲットノードをランダムに、訓練レコードの対応する非マッチングノードとして選択することを含む。任意選択で、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新するステップは、訓練データの集合体の各訓練レコードに対して、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍の近隣ノードを、以前の対応するマッチングノードよりもターゲットノードと弱く関連している、訓練レコードの対応するマッチングノードとして選択することを含む。任意選択で、本方法は、訓練データの集合体の各訓練レコードに対して、関連する近傍の近隣ノードを、以前の対応する非マッチングノードよりもターゲットノードと強く関連している、訓練レコードの対応する非マッチングノードとして選択することをさらに含む。任意選択で、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新することは、訓練データの集合体の各訓練レコードに対して、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍の近隣ノードを、以前の対応する非マッチングノードよりもターゲットノードと強く関連している、訓練レコードの対応する非マッチングノードとして選択することをさらに含む。
【０１８１】
本明細書に開示された実施態様は、限定ではなく実例として、コンピュータ実行可能命令を記録したコンピュータ可読媒体であって、媒体から命令を取得する少なくともプロセッサを含むコンピューティングシステム上で実行されると、コーパスグラフ内のターゲットノードに関するマッチングノードを識別するために、機械学習モデルを効率的に訓練する方法を実行するコンピュータ実行可能命令を記録したコンピュータ可読媒体を含み得る。本方法は、トレーニングレコードを処理するために機械学習モデルを初期化することを含み、トレーニングレコードは、トリプレットの入力ノードを含む。入力ノードの各トリプレットは、ターゲットノード、対応するマッチングノード、および対応する非マッチングノードを含む。本方法はさらに、機械学習モデルを訓練するための訓練データの集合体にアクセスすることを含む。トレーニングデータの集合体は、ターゲットノードの対応するマッチングノードを正しく識別するために、トレーニングレコードのターゲットノードの対応するマッチングノードと対応する非マッチングノードとを区別するトレーニングに利用される。さらに、訓練データの集合体は、複数の訓練レコードを含む。本方法は、さらに、訓練データの集合体のターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、訓練データの集合体を使用して機械学習モデルを訓練することを含む。本方法は、所定の反復回数の間、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新することを含み、さらに、更新された訓練データの集合体のターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、更新された訓練データの集合体を使用して機械学習モデルを訓練することを含む。その後、本方法は、訓練された機械学習モデルから実行可能な機械学習モデルを生成することを含む。
【０１８２】
任意選択で、訓練データは、最初に、対応するマッチングノードまたは対応する非マッチングノードの少なくとも１つが欠落しているような不完全な訓練レコードを含む。このうち、本方法は、さらに、各訓練レコードが、ターゲットノードと、対応するマッチングノードと、対応する非マッチングノードとを含むトリプレットの入力値を含むように、訓練データを完成させることを含む。任意選択で、訓練データを完成させることが、訓練データの集合体の各訓練レコードに対して、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍のうちの最も関連する近隣ノードを、訓練レコードの対応するマッチングノードとして選択することを含む。任意選択で、訓練データを完成させることが、さらに、訓練データの集合体の各訓練レコードに対して、コーパスグラフからターゲットノードをランダムに、訓練レコードの対応する非マッチングノードとして選択することを含む。任意選択で、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新するステップは、訓練データの集合体の各訓練レコードに対して、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍の近隣ノードを、以前の対応するマッチングノードよりもターゲットノードと弱く関連している、訓練レコードの対応するマッチングノードとして選択することを含む。任意選択で、本方法は、訓練データの集合体の各訓練レコードに対して、関連する近傍の近隣ノードを、以前の対応する非マッチングノードよりもターゲットノードと強く関連している、訓練レコードの対応する非マッチングノードとして選択することをさらに含む。任意選択で、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新するステップは、訓練データの集合体の各訓練レコードに対して、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍の近隣ノードを、以前の対応する非マッチングノードよりもターゲットノードと強く関連している、訓練レコードの対応する非マッチングノードとして、選択することをさらに含む。任意選択で、所定の反復回数は、少なくとも２回である。
【０１８３】
本明細書に開示される実施態様は、限定ではなく実例として、コーパスグラフ内のノード間の関連性を識別するために、機械学習モデルを効率的にトレーニングするように構成されたコンピュータシステムを含み得る。コンピュータシステムは、プロセッサおよびメモリを含み、プロセッサは、コーパスグラフ内のノード間の関連性を識別するために、追加構成要素の一部として、またはそれとともに、メモリに格納された命令を実行する。これらの追加構成要素は、アイテムのコーパスグラフを格納するデータストア、コンピュータシステムでの実行時にターゲットノードの関連する近傍を識別する実行可能な関連近傍識別構成要素、および実行可能モデル訓練構成要素を含む。コンピュータシステムでの実行では、実行可能モデル訓練構成要素は、機械学習モデルを初期化して、トリプレットの入力ノードを含むトレーニングレコードを処理するように構成されている。各入力ノードのトリプレットには、ターゲットノード、対応するマッチングノード、および対応する非マッチングノードが含まれる。モデル訓練構成要素は、機械学習モデルを訓練するための訓練データの集合体にアクセスして、訓練レコードのターゲットノードに対する対応するマッチングノードと対応する非マッチングノードとを区別し、ターゲットノードに対する対応するマッチングノードを正しく識別するようにさらに構成されている。また、訓練データの集合体は、複数の訓練レコードを含む。モデル訓練構成要素は、さらに、所定反の反復回数の間、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新する。さらにまた、モデル訓練構成要素は、更新された訓練データの集合体のターゲットノードのそれぞれに関する対応するマッチングノードを正しく識別することに関して、しきい値レベルの精度が達成されるまで、更新された訓練データの集合体を使用して機械学習モデルを訓練する。さらに、モデル訓練構成要素は、訓練された機械学習モデルから実行可能な機械学習モデルを生成するように構成されている。
【０１８４】
任意選択で、ターゲットノードの対応するマッチングノードを正しく識別するために、訓練レコードのターゲットノードに関する対応するマッチングノードと対応する非マッチングノードとを区別する難しさが増すように、訓練データの集合体を更新する際に、訓練データの集合体の各訓練レコードに対して、モデル訓練構成要素がさらに、訓練レコードのターゲットノードの関連する近傍にアクセスすること、および関連する近傍の近隣ノードを、以前の対応するマッチングノードよりもターゲットノードと弱く関連している、訓練レコードの対応するマッチングノードとして選択することを行う。任意選択で、かつ、訓練データ集合体の各訓練レコードについて、モデル訓練構成要素は、訓練レコードの対応する非マッチングノードとして、以前の対応する非マッチングノードよりもターゲットノードとの関連性が高い、関連する近傍の近隣ノードを選択する。
【０１８５】
開示された主題の様々な新規の態様を説明してきたが、これらの態様は例示的であり、限定として解釈されるべきではないことを理解されたい。開示された主題の範囲から逸脱することなく、様々な態様の変形および変更を行うことができる。
【図１】
2021517295.tif 000007
【図２】
2021517295.tif 000008
【図３】
2021517295.tif 000009
【図４Ａ】
2021517295.tif 000010
【図４Ｂ】
2021517295.tif 000011
【図４Ｃ】
2021517295.tif 000012
【図４Ｄ】
2021517295.tif 000013
【図４Ｅ】
2021517295.tif 000014
【図４Ｆ】
2021517295.tif 000015
【図５】
2021517295.tif 000016
【図６】
2021517295.tif 000017
【図７】
2021517295.tif 000018
【図８】
2021517295.tif 000019
【図９】
2021517295.tif 000020
【図１０】
2021517295.tif 000021
【図１１】
2021517295.tif 000022
【図１２】
2021517295.tif 000023
【図１３】
2021517295.tif 000024
【図１４】
2021517295.tif 000025
【図１５】
2021517295.tif 000026
【図１６】
2021517295.tif 000027
【図１７】
2021517295.tif 000028
【国際調査報告】
2021517295.tif 000029
2021517295.tif 000030
2021517295.tif 000031