(57)【要約】  一実施形態では、方法は、ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために機械学習により訓練されている、工程と、複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、計算したハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程とを含む。
2019532445.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・デバイスが、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
を含む、方法。
【請求項２】
前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程をさらに含み、
前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される、
請求項１に記載の方法。
【請求項３】
前記サブ量子化器のそれぞれは、前記複数のサブ量子化器のうちの他のサブ量子化器のそれぞれとは別個である、請求項２に記載の方法。
【請求項４】
前記コンテンツ・オブジェクトを表す量子化された前記複数のサブベクトルのそれぞれは、前記対応するサブ量子化器を使用して量子化される、請求項２に記載の方法。
【請求項５】
第１多義コードと第２多義との間のハミング距離は、前記第１多義コードと前記第２多義コードとの間で異なるビット数として計算される、請求項１に記載の方法。
【請求項６】
第１多義コードと第２多義コードとの間のハミング距離は、予め生成されたルックアップ・テーブルに基づいて計算される、請求項１に記載の方法。
【請求項７】
前記量子化器は、ｋ平均法を使用する、請求項１に記載の方法。
【請求項８】
前記目的関数は、ａｒｇｍａｘπΣｉ∈Ｊ，ｊ∈Ｊ［ｈ（π（ｉ），π（ｊ））−ｆ（ｄ（ｃｉ，ｃｊ））］２であり、
ｊは、重心インデックスの集合であり、
ｃｉは、重心ｉに関連付けられている再現値であり、
前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
ｈ（π（ｉ），π（ｊ））は、π（ｉ）とπ（ｊ）との間のハミング距離であり、
ｄ（ｃｉ，ｃｊ）は、ｃｉとｃｊとの間の距離であり、
前記関数ｆは、ｄ（ｃｉ，ｃｊ）を、匹敵するハミング距離の範囲にマッピングする単調増加関数である、
請求項１に記載の方法。
【請求項９】
前記関数ｆは、
【数１】
2019532445.tif 000035
であり、
μは、経験的に測定したｄの平均であり、
σは、経験的に測定したｄの標準偏差である、
請求項８に記載の方法。
【請求項１０】
前記目的関数は、ａｒｇｍａｘπΣｉ∈Ｊ，ｊ∈Ｊｗ（ｆ（ｄ（ｃｉ，ｃｊ）））［ｈ（π（ｉ），π（ｊ））−ｆ（ｄ（ｃｉ，ｃｊ））］２であり、
ｊは、重心インデックスの集合であり、
ｃｉは、重心ｉに関連付けられている再現値であり、
前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
ｈ（π（ｉ），π（ｊ））は、π（ｉ）とπ（ｊ）との間のハミング距離であり、
ｄ（ｃｉ，ｃｊ）は、ｃｉとｃｊとの間の距離であり、
前記関数ｆは、ｄ（ｃｉ，ｃｊ）を、匹敵するハミング距離の範囲にマッピングする単調増加関数であり、
前記関数ｗは、α＜１で関数ｗ（ｕ）＝αｕである、
請求項１に記載の方法。
【請求項１１】
前記クエリに応答して、前記クエリの近似最近傍であると決定された１以上のコンテンツ・オブジェクトを前記第１ユーザに送信する工程をさらに含む、請求項１に記載の方法。
【請求項１２】
前記コンテンツ・オブジェクトのそれぞれは画像を含む、請求項１に記載の方法。
【請求項１３】
受け取られた前記クエリはクエリ画像を含み、前記方法は、
前記クエリ画像を表す前記ｎ次元のベクトルを生成する工程をさらに含む、請求項１に記載の方法。
【請求項１４】
前記クエリは、前記クエリ画像に類似した画像の要求に対応する、請求項１３に記載の方法。
【請求項１５】
前記コンテンツ・オブジェクトのそれぞれは動画を含む、請求項１に記載の方法。
【請求項１６】
受け取られた前記クエリはクエリ動画を含み、前記方法は、
前記クエリ動画を表す前記ｎ次元のベクトルを生成する工程をさらに含む、請求項１に記載の方法。
【請求項１７】
複数のノードと前記ノード同士をつなげる複数のエッジとを含むソーシャル・グラフにアクセスする工程をさらに含み、２つの前記ノード間の前記エッジのそれぞれがそれらの間の単一分離度を表し、前記ノードは、
前記第１ユーザに対応する第１ノードと、
前記複数のコンテンツ・オブジェクトにそれぞれ対応する複数の第２ノードと、を含む、
請求項１に記載の方法。
【請求項１８】
ソフトウェアを具現化する１以上のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアが実行されたときに、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
が行われるように構成される、媒体。
【請求項１９】
前記ソフトウェアが実行されたときに、
前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程が行われるようにさらに構成され、
前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される、
請求項１８に記載の媒体。
【請求項２０】
１以上のプロセッサと、前記プロセッサに結合され前記プロセッサによって実行可能な命令を含む非一時的メモリとを備えるシステムであって、前記プロセッサは、前記命令を実行するときに、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
が行われるように構成される、システム。
【請求項２１】
コンピューティング・デバイスが、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリ、特にデータベース内の１以上の類似の画像および動画のうちの１以上を受け取る工程と、
前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
を含む、方法。
【請求項２２】
前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程をさらに含み、
前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算され、
任意選択で、前記サブ量子化器のそれぞれは、前記複数のサブ量子化器のうちの他のサブ量子化器のそれぞれとは別個であり、および／または、
任意選択で、前記コンテンツ・オブジェクトを表す量子化された前記複数のサブベクトルのそれぞれは、前記対応するサブ量子化器を使用して量子化される、
請求項２１に記載の方法。
【請求項２３】
第１多義コードと第２多義との間のハミング距離は、前記第１多義コードと前記第２多義コードとの間で異なるビット数として計算され、および／または、
第１多義コードと第２多義コードとの間のハミング距離は、予め生成されたルックアップ・テーブルに基づいて計算される、
請求項２１または２２に記載の方法。
【請求項２４】
前記量子化器は、ｋ平均法を使用する、請求項２１〜２３のいずれか一項に記載の方法。
【請求項２５】
前記目的関数は、ａｒｇｍａｘπΣｉ∈Ｊ，ｊ∈Ｊ［ｈ（π（ｉ），π（ｊ））−ｆ（ｄ（ｃｉ，ｃｊ））］２であり、
ｊは、重心インデックスの集合であり、
ｃｉは、重心ｉに関連付けられている再現値であり、
前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
ｈ（π（ｉ），π（ｊ））は、π（ｉ）とπ（ｊ）との間のハミング距離であり、
ｄ（ｃｉ，ｃｊ）は、ｃｉとｃｊとの間の距離であり、
前記関数ｆは、ｄ（ｃｉ，ｃｊ）を、匹敵するハミング距離の範囲にマッピングする単調増加関数であり、
任意選択で、前記関数ｆは、
【数２】
2019532445.tif 000036
であり、
μは、経験的に測定したｄの平均であり、
σは、経験的に測定したｄの標準偏差である、
請求項２１〜２４のいずれか一項に記載の方法。
【請求項２６】
前記目的関数は、ａｒｇｍａｘπΣｉ∈Ｊ，ｊ∈Ｊｗ（ｆ（ｄ（ｃｉ，ｃｊ）））［ｈ（π（ｉ），π（ｊ））−ｆ（ｄ（ｃｉ，ｃｊ））］２であり、
Ｊは、重心インデックスの集合であり、
ｃｉは、重心ｉに関連付けられている再現値であり、
前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
ｈ（π（ｉ），π（ｊ））は、π（ｉ）とπ（ｊ）との間のハミング距離であり、
ｄ（ｃｉ，ｃｊ）は、ｃｉとｃｊとの間の距離であり、
前記関数ｆは、ｄ（ｃｉ，ｃｊ）を、匹敵するハミング距離の範囲にマッピングする単調増加関数であり、
前記関数ｗは、α＜１で関数ｗ（ｕ）＝αｕである、
請求項２１〜２５のいずれか一項に記載の方法。
【請求項２７】
前記クエリに応答して、前記クエリの近似最近傍であると決定された１以上のコンテンツ・オブジェクトを前記第１ユーザに送信する工程をさらに含む、請求項２１〜２６のいずれか一項に記載の方法。
【請求項２８】
前記コンテンツ・オブジェクトのそれぞれは画像を含む、請求項２１〜２７のいずれか一項に記載の方法。
【請求項２９】
受け取られた前記クエリはクエリ画像を含み、前記方法は、
前記クエリ画像を表す前記ｎ次元のベクトルを生成する工程をさらに含み、
任意選択で、前記クエリは、前記クエリ画像に類似した画像の要求に対応する、
請求項２１〜２８のいずれか一項に記載の方法。
【請求項３０】
前記コンテンツ・オブジェクトのそれぞれは動画を含む、請求項２１〜２９のいずれか一項に記載の方法。
【請求項３１】
受け取られた前記クエリはクエリ動画を含み、前記方法は、
前記クエリ動画を表す前記ｎ次元のベクトルを生成する工程をさらに含む、請求項２１〜３０のいずれか一項に記載の方法。
【請求項３２】
複数のノードと前記ノード同士をつなげる複数のエッジとを含むソーシャル・グラフにアクセスする工程をさらに含み、２つの前記ノード間の前記エッジのそれぞれがそれらの間の単一分離度を表し、前記ノードは、
前記第１ユーザに対応する第１ノードと、
前記複数のコンテンツ・オブジェクトにそれぞれ対応する複数の第２ノードと、を含む、
請求項２１〜３１のいずれか一項に記載の方法。
【請求項３３】
ソフトウェアを具現化する１以上のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアが実行されたときに、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
が行われるように構成される、媒体。
【請求項３４】
前記ソフトウェアが実行されたときに、
前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程が行われるようにさらに構成され、
前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される、
請求項１８３５に記載の媒体。
【請求項３５】
１以上のプロセッサと、前記プロセッサに結合され前記プロセッサによって実行可能な命令を含む非一時的メモリとを備えるシステムであって、前記プロセッサは、前記命令を実行するときに、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
が行われるように構成される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、ソーシャル・グラフと、ソーシャル・ネットワーキング環境内でオブジェクトの検索を行うこととに関する。
【背景技術】
【０００２】
ソーシャル・ネットワーキング・システム（ソーシャルネットワーキング・ウェブサイトを含むことができる）は、そのソーシャル・ネットワーキング・システムのユーザ（人または組織など）がそのソーシャル・ネットワーキング・システムと、およびそのソーシャル・ネットワーキング・システムを通じて互いに対話することを可能にすることができる。ソーシャル・ネットワーキング・システムは、ユーザからの入力を用いて、そのユーザに関連付けられているユーザ・プロフィールを作成して、ソーシャル・ネットワーキング・システム内に記憶することができる。ユーザ・プロフィールは、人口統計学的情報、通信チャネル情報、およびユーザの個人的な関心に関する情報を含むことができる。ソーシャル・ネットワーキング・システムは、ユーザからの入力を用いて、そのユーザと、ソーシャル・ネットワーキング・システムのその他のユーザとの関係のレコードを作成および記憶すること、ならびにサービス（たとえば、ウォール投稿、写真共有、イベント編成、メッセージング、ゲーム、または広告）を提供して、ユーザ同士の間における社会的な交流を容易にすることも可能である。
【０００３】
ソーシャル・ネットワーキング・システムは、そのサービスに関連したコンテンツまたはメッセージを、１つまたは複数のネットワークを通じて、ユーザのモバイルまたはその他のコンピューティング・デバイスへ送信することができる。ユーザは、自分のユーザ・プロフィールおよびソーシャル・ネットワーキング・システム内のその他のデータにアクセスするためにソフトウェア・アプリケーションを自分のモバイルまたはその他のコンピューティング・デバイス上にインストールすることもできる。ソーシャル・ネットワーキング・システムは、ユーザにつながっているその他のユーザの集約されたストーリのニュース・フィードなど、ユーザに表示するためのコンテンツ・オブジェクトのパーソナライズされたセットを生成することができる。
【０００４】
ソーシャル・グラフ分析は、ソーシャルな関係を、ノードとエッジとから構成されているネットワーク理論の点から見る。ノードは、ネットワーク内の個々の行為主体を表し、エッジは、行為主体同士の間における関係を表す。結果として生じるグラフ・ベースの構造は、しばしば非常に複雑である。多くのタイプのノード、およびノード同士をつなげるための多くのタイプのエッジが存在することが可能である。ソーシャル・グラフは、その最もシンプルな形態においては、調査されるすべてのノードの間における、関連があるすべてのエッジのマップである。
【図面の簡単な説明】
【０００５】
【図１】ソーシャル・ネットワーキング・システムに関連付けられている例示的ネットワーク環境を示す図。
【図２】例示的ソーシャル・グラフを示す図。
【図３】類似の重心間の距離がハミング空間で小さくなる、重心の計算法の再配列を示す図。
【図４】バイナリ・ベクトルとして使用されるコードの最適化の前後の比較を示す図。
【図５】双対（ｄｕａｌ）戦略に対するハミング閾値の影響を示す図。
【図６】距離ベースの目的関数の反復に従う多義コードのパフォーマンスを示す図。
【図７】ＦＹＣＮＮ９０Ｍベンチマークに多義コードを適用するさまざまな方法のパフォーマンスを示す図。
【図８】グラフ内の画像モードとその近傍の例を示す図。
【図９】多義コードを使用して類似度検索を行うための例示的な方法９００を示す図。
【図１０】例示的なコンピュータ・システムを示す図。
【発明を実施するための形態】
【０００６】
特定の実施形態において、ソーシャル・ネットワーキング・システムは、たとえば、クエリ画像に類似した画像のデータベースを検索するために、圧縮ドメインで近似最近傍（ＡＮＮ：ａｐｐｒｏｘｉｍａｔｅ  ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ）探索を行うことができる。方法は、直積量子化とバイナリ・コードのハミング距離との両方を使用して比較を行うために使える多義コード（ｐｏｌｙｓｅｍｏｕｓ  ｃｏｄｅ）を使用する。これを達成するために、方法は、データベースのベクトル空間の量子化から始めることができる。次いで、バイナリ・コードへのベクトル・インデックスの割り当てを、ハミング距離が重心間距離を近似化するように最適化することができる。次いで、ベクトル・インデックスを反復処理し、選ばれた閾値未満のハミング距離をもつベクトルをフィルタリングし、ハミング距離が十分に近いベクトルの直積量子化距離を計算することによって、クエリ・ベクトルを２段階でデータベースと比較することができる。この手法は、画像検索、動画検索、およびソーシャル・ネットワークの社会的近接性分析を含むが、これだけに限定されない、ＡＮＮのあらゆる適用に役立つ。
【０００７】
方法を詳しく述べると、第１工程は、ベクトルをサブベクトルに分割し、そうして特徴空間を積空間として分解することによって、ベクトル空間を量子化することである。各サブベクトルは、部分空間の一部であり、異なる量子化器を使用して量子化することができる。そして、ベクトル間の距離は、対応するサブベクトル間の距離の和として推定することができる。直積量子化を使用して、サブベクトル間の距離は、ルックアップ・テーブルから効率的に読み取ることができる。直積量子化は、ディクショナリを使用して第２粗量子化器を作成することによって、距離の推定と従来のインデックスとを組み合わせることによっても最適化することができる。この第２粗量子化器は、量子化されたベクトルの部分集合への検索を制限することによって、非網羅的な検索に使用することもできる。
【０００８】
量子化された空間が作成されたら、次いでベクトル・コードを多義コードに翻訳することによって最適化することができ、ハミング距離は、重心間距離を近似化する。このことは、バイナリ比較が重心距離を反映するようにビットの置換を学習することによって行うことができ、各サブ量子化器について行われる。
【０００９】
最後に、前述の手法を使用してクエリ・ベクトルを量子化し、コードをバイナリ・コードとして解釈してハミング距離を計算することによって、クエリ・ベクトルを検索することができる。クエリ・ベクトルまでのベクトルのバイナリ距離が閾値距離（システム・パラメータとして選ばれる）未満である場合、直積量子化（これは、より正確な推定を出す）を使用してベクトルを比較する。このように、方法は、バイナリ検索の効率を直積量子化の確度でほぼ達成することができる。
【００１０】
ここで開示する実施形態は単なる例であり、本開示の範囲はこれに限定されるものではない。特定の実施形態は、上記開示した実施形態のコンポーネント、要素、特徴、機能、動作、または工程の全部もしくは一部を含んでもよく、または含まなくてもよい。本発明による実施形態は、方法、記憶媒体、システムおよびコンピュータ・プログラム製品に向けられた添付の請求項で特に開示され、ある請求項のカテゴリ、たとえば方法、で述べられた任意の特徴は、別の請求項のカテゴリ、たとえばシステム、でも同様に請求されることができる。添付の請求項の従属性または後方参照は、形式上の理由でのみ選択されている。しかし、任意の先行請求項への意図的な後方参照から生じる任意の主題（特に多項従属）は同様に請求されることができるので、添付の請求項で選ばれた従属性に関係なく、請求項およびその特徴の任意の組合せが開示され、請求されることができる。請求することのできる主題は、添付の請求項に記載される特徴の組合せだけでなく、請求項の特徴の任意の他の組合せも含み、請求項で述べられる各特徴は請求項の任意の他の特徴または他の特徴の組合せと組み合わせることができる。さらに、本明細書で記述または示される実施形態および特徴のいずれも、個別の請求項で、および／または、本明細書で記述もしくは示される任意の実施形態もしくは特徴または添付の請求項の特徴のいずれかとの任意の組合せで請求することができる。
【００１１】
本発明による一実施形態では、方法は、コンピューティング・デバイスが、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリ、特にデータベース内の１以上の類似の画像および動画または画像もしくは動画のクエリを受け取る工程と、
クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程と、
を含むことができる。
【００１２】
本発明による一実施形態では、方法は、クエリを表すベクトルをクエリを表す複数のサブベクトルに分割することを含むことができ、
クエリを表すベクトルを量子化する工程は、クエリを表す複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離は、クエリを表す各それぞれのサブベクトルに対応する各多義コードと、コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される。
【００１３】
サブ量子化器のそれぞれは、複数のサブ量子化器のうちの他のサブ量子化器のそれぞれとは別個にすることができる。
コンテンツ・オブジェクトを表す量子化された複数のサブベクトルのそれぞれを、対応するサブ量子化器を使用して量子化することができる。
【００１４】
第１多義コードと第２多義との間のハミング距離は、第１多義コードと第２多義コードとの間で異なるビット数として計算することができる。
第１多義コードと第２多義コードとの間のハミング距離は、予め生成されたルックアップ・テーブルに基づいて計算することができる。
【００１５】
量子化器は、ｋ平均法を使用することができる。
本発明による一実施形態では、目的関数がａｒｇｍａｘπΣｉ∈Ｊ，ｊ∈Ｊ［ｈ（π（ｉ），π（ｊ））−ｆ（ｄ（ｃｉ，ｃｊ））］２である方法において、
Ｊは、重心インデックスの集合とすることができ、
ｃｉは、重心ｉに関連付けられている再現値とすることができ、
関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングすることができ、
ｈ（π（ｉ），π（ｊ））は、π（ｉ）とπ（ｊ）との間のハミング距離とすることができ、
ｄ（ｃｉ，ｃｊ）は、ｃｉとｃｊとの間の距離とすることができ、
関数ｆは、ｄ（ｃｉ，ｃｊ）を、匹敵するハミング距離の範囲にマッピングする単調増加関数とすることができる。
【００１６】
本発明による一実施形態では、関数ｆが
【００１７】
【数１】
2019532445.tif 000003
【００１８】
である方法において、
μは、経験的に測定したｄの平均とすることができ、
σは、経験的に測定したｄの標準偏差とすることができる。
【００１９】
本発明による一実施形態では、目的関数がａｒｇｍａｘπΣｉ∈Ｊ，ｊ∈Ｊｗ（ｆ（ｄ（ｃｉ，ｃｊ）））［ｈ（π（ｉ），π（ｊ））−ｆ（ｄ（ｃｉ，ｃｊ））］２である方法において、
Ｊは、重心インデックスの集合とすることができ、
ｃｉは、重心ｉに関連付けられている再現値とすることができ、
関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングすることができ、
ｈ（π（ｉ），π（ｊ））は、π（ｉ）とπ（ｊ）との間のハミング距離とすることができ、
ｄ（ｃｉ，ｃｊ）は、ｃｉとｃｊとの間の距離とすることができ、
関数ｆは、ｄ（ｃｉ，ｃｊ）を、匹敵するハミング距離の範囲にマッピングする単調増加関数とすることができ、
関数ｗは、α＜１で、関数ｗ（ｕ）＝αｕとすることができる。
【００２０】
本発明による一実施形態では、方法は、クエリに応答して、クエリの近似最近傍であると決定された１以上のコンテンツ・オブジェクトを、第１ユーザに送信することを含むことができる。
【００２１】
コンテンツ・オブジェクトのそれぞれは画像を含むことができる。
受け取られたクエリはクエリ画像を含むことができ、方法は、クエリ画像を表すｎ次元のベクトルを生成することを含むことができる。
【００２２】
クエリは、クエリ画像に類似した画像の要求に対応することができる。
コンテンツ・オブジェクトのそれぞれは動画を含むことができる。
受け取られたクエリはクエリ動画を含むことができ、方法は、クエリ動画を表すｎ次元のベクトルを生成することを含むことができる。
【００２３】
本発明による一実施形態では、方法は、複数のノードと、ノード同士をつなげる複数のエッジとを含むソーシャル・グラフにアクセスすることを含むことができ、２つのノード間のエッジのそれぞれは、それらの間の単一分離度を表し、ノードは、
第１ユーザに対応する第１ノードと、
複数のコンテンツ・オブジェクトにそれぞれ対応する複数の第２ノードとを含むことができる。
【００２４】
本発明による一実施形態では、ソフトウェアを具現化する１以上のコンピュータ可読非一時的記憶媒体は、ソフトウェアが実行されたときに、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程と、
が行われるように構成される。
【００２５】
ソフトウェアが実行されたときに、クエリを表すベクトルをクエリを表す複数のサブベクトルに分割する工程が行われるようにされる構成され、
クエリを表すベクトルを量子化することは、クエリを表す複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化することを含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離は、クエリを表す各それぞれのサブベクトルに対応する各多義コードと、コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される。
【００２６】
本発明による一実施形態では、システムは、１以上のプロセッサと、プロセッサに結合されプロセッサによって実行可能な命令を含む非一時的メモリとを備えることができ、該プロセッサは、命令を実行するときに、
ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取る工程と、
クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程と、
を行うように作動可能である。
【００２７】
本発明による一実施形態では、１以上のコンピュータ可読非一時的記憶媒体は、実行されたときに、本発明による方法または前述の実施形態のいずれかを行うように作動可能であるソフトウェアを具現化することができる。
【００２８】
本発明による一実施形態では、システムは、１以上のプロセッサと、プロセッサに結合されプロセッサによって実行可能な命令を含む少なくとも１つのメモリとを備えることができ、該プロセッサは、命令を実行するときに、本発明による方法または前述の実施形態のいずれかを行うように作動可能である。
【００２９】
本発明による一実施形態では、好ましくはコンピュータ可読非一時的記憶媒体を備えるコンピュータ・プログラム製品は、データ処理システムで上で実行されるときに、本発明による方法または前述の実施形態のいずれかを行うように作動可能にすることができる。
【００３０】
システムの概観
図１は、ソーシャル・ネットワーキング・システムに関連付けられている例示的なネットワーク環境１００を示している。ネットワーク環境１００は、ネットワーク１１０によって互いにつながっているクライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、およびサードパーティ・システム１７０を含む。図１は、クライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、サードパーティ・システム１７０、およびネットワーク１１０の特定の構成を示しているが、本開示は、クライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、サードパーティ・システム１７０、およびネットワーク１１０の任意の適切な構成を想定している。限定ではなく、例として、クライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、およびサードパーティ・システム１７０のうちの複数は、ネットワーク１１０を迂回して、互いに直接つながることが可能である。別の例として、クライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、およびサードパーティ・システム１７０のうちの複数は、物理的にまたは論理的に、全体としてまたは部分的に互いに同一場所に配置されることが可能である。その上、図１は、特定の数のクライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、サードパーティ・システム１７０、およびネットワーク１１０を示しているが、本開示は、任意の適切な数のクライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、サードパーティ・システム１７０、およびネットワーク１１０を想定している。限定ではなく、例として、ネットワーク環境１００は、複数のクライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、サードパーティ・システム１７０、およびネットワーク１１０を含むことができる。
【００３１】
本開示は、任意の適切なネットワーク１１０を想定している。限定ではなく、例として、ネットワーク１１０の１つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク（ＶＰＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、無線ＷＡＮ（ＷＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、インターネットの一部分、公衆交換電話網（ＰＳＴＮ）の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク１１０は、１つまたは複数のネットワーク１１０を含むことができる。
【００３２】
リンク１５０は、クライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、およびサードパーティ・システム１７０を通信ネットワーク１１０に、または互いに接続することができる。本開示は、任意の適切なリンク１５０を想定している。特定の実施形態においては、１つまたは複数のリンク１５０は、１つもしくは複数の有線リンク（たとえば、デジタル・サブスクライバ・ライン（ＤＳＬ）もしくはデータ・オーバ・ケーブル・サービス・インタフェース仕様（ＤＯＣＳＩＳ）など）、無線リンク（たとえば、Ｗｉ−Ｆｉもしくはワールドワイド・インターオペラビリティー・フォー・マイクロウェーブ・アクセス（ＷｉＭＡＸ）など）、または光リンク（たとえば、同期光ネットワーク（ＳＯＮＥＴ）もしくは同期デジタル階層（ＳＤＨ）など）を含む。特定の実施形態においては、１つまたは複数のリンク１５０はそれぞれ、アド・ホック・ネットワーク、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＷＷＡＮ、ＭＡＮ、インターネットの一部分、ＰＳＴＮの一部分、セルラー・テクノロジーベースのネットワーク、衛星通信テクノロジーベースのネットワーク、別のリンク１５０、または複数のそのようなリンク１５０の組合せを含む。リンク１５０は、ネットワーク環境１００の全体を通じて必ずしも同じである必要はない。１つまたは複数の第１のリンク１５０は、１つまたは複数の点において１つまたは複数の第２のリンク１５０とは異なることが可能である。
【００３３】
特定の実施形態においては、クライアント・システム１３０は、クライアント・システム１３０によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム１３０は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、ｅブック・リーダ、ＧＰＳデバイス、カメラ、携帯情報端末（ＰＤＡ）、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム１３０を想定している。クライアント・システム１３０は、クライアント・システム１３０のネットワーク・ユーザがネットワーク１１０にアクセスすることを可能にすることができる。クライアント・システム１３０は、自分のユーザがその他のクライアント・システム１３０のその他のユーザと通信することを可能にすることができる。
【００３４】
特定の実施形態においては、クライアント１３０は、ＭＩＣＲＯＳＯＦＴ  ＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ、ＧＯＯＧＬＥ  ＣＨＲＯＭＥ、またはＭＯＺＩＬＬＡ  ＦＩＲＥＦＯＸなどのウェブ・ブラウザ１３２を含むことができ、１つまたは複数のアドオン、プラグイン、またはＴＯＯＬＢＡＲもしくはＹＡＨＯＯ  ＴＯＯＬＢＡＲなどのその他の拡張を有することができる。クライアント・システム１３０のユーザは、ウェブ・ブラウザ１３２を特定のサーバ（サーバ１６２、またはサードパーティ・システム１７０に関連付けられているサーバなど）へ導くユニフォーム・リソース・ロケータ（ＵＲＬ）またはその他のアドレスを入力することができ、ウェブ・ブラウザ１３２は、ハイパー・テキスト転送プロトコル（ＨＴＴＰ）要求を生成して、そのＨＴＴＰ要求をサーバに通信することができる。サーバは、そのＨＴＴＰ要求を受け入れて、そのＨＴＴＰ要求に応答して１つまたは複数のハイパー・テキスト・マークアップ言語（ＨＴＭＬ）ファイルをクライアント・システム１３０に通信することができる。クライアント・システム１３０は、ユーザに提示するためにサーバからのＨＴＭＬファイルに基づいてウェブインタフェース（たとえば、ウェブページ）をレンダリングすることができる。本開示は、任意の適切なソース・ファイルを想定している。限定ではなく、例として、ウェブ・インタフェースは、特定のニーズに従って、ＨＴＭＬファイル、拡張可能ハイパー・テキスト・マークアップ言語（ＸＨＴＭＬ）ファイル、または拡張可能マークアップ言語（ＸＭＬ）ファイルからレンダリングされる。そのようなインタフェースは、限定ではなく、例として、ＪＡＶＡ（登録商標）ＳＣＲＩＰＴ（登録商標）、ＪＡＶＡ（登録商標）、ＭＩＣＲＯＳＯＦＴ  ＳＩＬＶＥＲＬＩＧＨＴで書かれたスクリプトなどのスクリプト、ＡＪＡＸ（Ａｓｙｎｃｈｒｏｎｏｕｓ  ＪＡＶＡＳＣＲＩＰＴ（登録商標）ａｎｄ  ＸＭＬ）などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブ・インタフェースへの参照は、適切な場合には、（そのウェブ・インタフェースをレンダリングするためにブラウザが使用することができる）１つまたは複数の対応するソース・ファイルを含み、その逆もまた同様である。
【００３５】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャル・ネットワーキング・システム１６０は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、記憶すること、受け取ること、および送信することが可能である。ソーシャル・ネットワーキング・システム１６０は、ネットワーク環境１００のその他のコンポーネントによって直接、またはネットワーク１１０を通じてアクセスされることが可能である。限定するものではないが例として、クライアント・システム１３０は、直接的またはネットワーク１１０を通じて、ウェブ・ブラウザ１３２またはソーシャル・ネットワーキング・システム１６０に関連付けられているネイティブ・アプリケーション（たとえば、モバイル・ソーシャル・ネットワーキング・アプリケーション、メッセージング・アプリケーション、別の適切なアプリケーション、またはこれらの組み合わせ）を使用してソーシャル・ネットワーキング・システム１６０にアクセスしてもよい。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のサーバ１６２を含むことができる。それぞれのサーバ１６２は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが可能である。サーバ１６２は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Ｅｘｃｈａｎｇｅサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ１６２は、サーバ１６２によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のデータ・ストア１６４を含むことができる。データ・ストア１６４は、さまざまなタイプの情報を記憶するために使用されることが可能である。特定の実施形態においては、データ・ストア１６４内に記憶されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア１６４は、リレーショナル・データベースであることが可能である。特定の実施形態は、クライアント・システム１３０、ソーシャル・ネットワーキング・システム１６０、またはサードパーティ・システム１７０が、データ・ストア１６４内に記憶されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
【００３６】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のソーシャル・グラフを１つまたは複数のデータ・ストア１６４内に記憶することができる。特定の実施形態においては、ソーシャル・グラフは、複数のノード（複数のユーザ・ノード（それぞれが、特定のユーザに対応している）、または複数のコンセプト・ノード（それぞれが、特定のコンセプトに対応している）を含むことができる）と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャル・ネットワーキング・システム１６０は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャル・ネットワーキング・システム１６０を通じてオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャル・ネットワーキング・システム１６０のその他の複数のユーザにつながり（すなわち、関係）を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム１６０を通じて、つながり、関連付け、または関係を形成しているソーシャル・ネットワーキング・システム１６０のその他の任意のユーザを示すことができる。
【００３７】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、ソーシャル・ネットワーキング・システム１６０によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャル・ネットワーキング・システム１６０のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャル・ネットワーキング・システム１６０において、またはサードパーティ・システム１７０の外部システム（ソーシャル・ネットワーキング・システム１６０とは別個のものであって、ネットワーク１１０を通じてソーシャル・ネットワーキング・システム１６０に結合されている）によって表されることが可能である任意のものと対話することができる。
【００３８】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャル・ネットワーキング・システム１６０は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム１７０もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース（ＡＰＩ）もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
【００３９】
特定の実施形態においては、サードパーティ・システム１７０は、１つもしくは複数のタイプのサーバ、１つもしくは複数のデータ・ストア、１つもしくは複数のインタフェース（ＡＰＩを含むが、それには限定されない）、１つもしくは複数のウェブ・サービス、１つもしくは複数のコンテンツ・ソース、１つもしくは複数のネットワーク、またはサーバがそれと通信するその他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム１７０は、ソーシャル・ネットワーキング・システム１６０を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０およびサードパーティ・システム１７０は、ソーシャル・ネットワーキング・システム１６０またはサードパーティ・システム１７０のユーザにソーシャル・ネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャル・ネットワーキング・システム１６０は、サードパーティ・システム１７０などのその他のシステムがインターネットを通じてソーシャル・ネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
【００４０】
特定の実施形態においては、サードパーティ・システム１７０は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの１つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム１３０に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
【００４１】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャル・ネットワーキング・システム１６０とのユーザの対話を高めることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム１６０に付加、アップロード、送信、または「投稿」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム１３０からソーシャル・ネットワーキング・システム１６０へ投稿を通信する。投稿は、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、映像、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュース・フィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャル・ネットワーキング・システム１６０に付加されることも可能である。
【００４２】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、さまざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、ウェブ・サーバ、アクション・ロガー、ＡＰＩ要求サーバ、関連性およびランキング・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、認可／プライバシ・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインタフェース・モジュール、ユーザプロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの１つまたは複数を含むことができる。ソーシャル・ネットワーキング・システム１６０は、適切なコンポーネント、たとえば、ネットワーク・インタフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、ユーザ・プロフィールを記憶するための１つまたは複数のユーザプロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、１つまたは複数のカテゴリに関連した関心を含むことができる。カテゴリは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね！」の表明をした場合には、カテゴリは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリであることが可能である。ユーザに関するつながり情報を記憶するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザ同士を示すことができる。つながり情報は、さまざまなユーザおよびコンテンツ（内部および外部の両方）の間におけるユーザ定義のつながりを含むこともできる。ネットワーク１１０を通じてソーシャル・ネットワーキング・システム１６０を１つもしくは複数のクライアント・システム１３０または１つもしくは複数のサードパーティ・システム１７０にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャル・ネットワーキング・システム１６０と、１つまたは複数のクライアント・システム１３０との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。ＡＰＩ要求サーバは、サードパーティ・システム１７０が、１つまたは複数のＡＰＩを呼び出すことによってソーシャル・ネットワーキング・システム１６０からの情報にアクセスすることを可能にすることができる。ソーシャル・ネットワーキング・システム１６０の上のまたは外のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム１３０に提供することができる。情報は、通知としてクライアント・システム１３０へプッシュされることが可能であり、または情報は、クライアント・システム１３０から受け取られた要求に応答してクライアント・システム１３０からプルされることが可能である。ソーシャル・ネットワーキング・システム１６０のユーザの１つまたは複数のプライバシー設定を実装するために、認可サーバが使用されることが可能である。ユーザのプライバシー設定は、ユーザに関連付けられている特定の情報がどのように共有されることが可能であるかを特定する。認可サーバは、ユーザが、たとえば、適切なプライバシー設定を設定することなどによって、自分のアクションをソーシャル・ネットワーキング・システム１６０によって記録されること、またはその他のシステム（たとえば、サードパーティ・システム１７０）と共有されることのオプト・インまたはオプト・アウトを行うことを可能にすることができる。サードパーティ・システム１７０などのサードパーティから受け取られたコンテンツ・オブジェクトを記憶するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム１３０から受け取られたロケーション情報を記憶するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
【００４３】
ソーシャル・グラフ
図２は、例示的なソーシャル・グラフ２００を示している。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のソーシャル・グラフ２００を１つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、ソーシャル・グラフ２００は、複数のノード（複数のユーザ・ノード２０２、または複数のコンセプト・ノード２０４を含むことができる）と、ノード同士をつなげる複数のエッジ２０６とを含むことができる。図２において示されている例示的なソーシャル・グラフ２００は、教示上の目的から、二次元の視覚的マップ表示で示されている。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０、クライアント・システム１３０、またはサードパーティ・システム１７０は、適切なアプリケーションに関してソーシャル・グラフ２００および関連したソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ２００のノードおよびエッジは、データ・オブジェクトとして、たとえば（ソーシャル・グラフ・データベースなどの）データ・ストア内に記憶されることが可能である。そのようなデータ・ストアは、ソーシャル・グラフ２００のノードまたはエッジの１つまたは複数の検索可能なまたはクエリ可能なインデックスを含むことができる。
【００４４】
特定の実施形態においては、ユーザ・ノード２０２は、ソーシャル・ネットワーキング・システム１６０のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャル・ネットワーキング・システム１６０と、またはソーシャル・ネットワーキング・システム１６０を通じて対話または通信する個人（人間のユーザ）、エンティティ（たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション）、または（たとえば、個人もしくはエンティティの）グループであることが可能である。特定の実施形態においては、あるユーザがソーシャル・ネットワーキング・システム１６０とのアカウントに登録した場合には、ソーシャル・ネットワーキング・システム１６０は、そのユーザに対応するユーザ・ノード２０２を作成し、そのユーザ・ノード２０２を１つまたは複数のデータ・ストア内に記憶することができる。本明細書において記述されているユーザおよびユーザ・ノード２０２は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード２０２を示すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード２０２は、適切な場合には、ソーシャル・ネットワーキング・システム１６０に登録されていないユーザを示すことができる。特定の実施形態においては、ユーザ・ノード２０２は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム１６０を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード２０２は、ユーザに関連付けられている情報に対応する１つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード２０２は、１つまたは複数のウェブ・インタフェースに対応することができる。
【００４５】
特定の実施形態においては、コンセプト・ノード２０４は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所（たとえば、映画館、レストラン、ランドマーク、もしくは都市など）、ウェブサイト（たとえば、ソーシャル・ネットワーキング・システム１６０に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど）、エンティティ（たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など）、ソーシャル・ネットワーキング・システム１６０内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース（たとえば、オーディオ・ファイル、営業ファイル、デジタル写真、テキスト・ファイル、構造化文書、もしくはアプリケーションなど）、物的もしくは知的財産（たとえば、彫塑、絵画、映画、ゲーム、曲、着想、写真、もしくは執筆作品など）、ゲーム、アクティビティ、着想もしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード２０４は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム１６０を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、１つもしくは複数のイメージ（たとえば、本の表紙のイメージ）、ロケーション（たとえば、住所もしくは地理的ロケーション）、（ＵＲＬに関連付けられることが可能である）ウェブサイト、連絡先情報（たとえば、電話番号もしくはＥメール・アドレス）、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード２０４は、コンセプト・ノード２０４に関連付けられている情報に対応する１つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード２０４は、１つまたは複数のウェブ・インタフェースに対応することができる。
【００４６】
特定の実施形態においては、ソーシャル・グラフ２００内のノードは、ウェブ・インタフェース（「プロフィール・インタフェース」と呼ばれる場合もある）を表すこと、またはウェブ・インタフェースによって表されることが可能である。プロフィール・インタフェースは、ソーシャル・ネットワーキング・システム１６０によってホストされること、またはソーシャル・ネットワーキング・システム１６０にとってアクセス可能であることが可能である。プロフィール・インタフェースは、サードパーティ・システム１７０に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブ・インタフェースに対応するプロフィール・インタフェースは、その特定の外部ウェブ・インタフェースであることが可能であり、そのプロフィール・インタフェースは、特定のコンセプト・ノード２０４に対応することができる。プロフィール・インタフェースは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード２０２は、対応するユーザ・プロフィール・インタフェースを有することができ、そのユーザ・プロフィール・インタフェースにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード２０４は、対応するコンセプトプロフィール・インタフェースを有することができ、そのコンセプトプロフィール・インタフェースにおいては、１人または複数のユーザが、特にコンセプト・ノード２０４に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
【００４７】
特定の実施形態においては、コンセプト・ノード２０４は、サードパーティ・システム１７０によってホストされているサードパーティ・ウェブインタフェースまたはリソースを表すことができる。サードパーティ・ウェブインタフェースまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す（たとえば、ＪＡＶＡＳＣＲＩＰＴ（登録商標）、ＡＪＡＸ、もしくはＰＨＰコードで実装されることが可能である）その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブインタフェースは、「いいね！」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブインタフェースを閲覧しているユーザは、それらのアイコンのうちの１つ（たとえば、「チェックイン」）を選択することによってアクションを実行して、クライアント・システム１３０に、そのユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム１６０へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム１６０は、ユーザに対応するユーザ・ノード２０２と、サードパーティ・ウェブインタフェースまたはリソースに対応するコンセプト・ノード２０４との間においてエッジ（たとえば、「チェックイン」のタイプのエッジ）を作成して、エッジ２０６を１つまたは複数のデータ・ストア内に記憶することができる。
【００４８】
特定の実施形態においては、ソーシャル・グラフ２００内の１対のノードが、１つまたは複数のエッジ２０６によって互いにつながることが可能である。１対のノードをつなげるエッジ２０６は、それらの１対のノードの間における関係を表すことができる。特定の実施形態においては、エッジ２０６は、１対のノードの間における関係に対応する１つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表すことが可能である。限定ではなく、例として、第１のユーザは、第２のユーザが第１のユーザの「友達」であるということを示すことができる。この表示に応答して、ソーシャル・ネットワーキング・システム１６０は、「友達要求」を第２のユーザに送信することができる。第２のユーザがその「友達要求」を承認した場合には、ソーシャル・ネットワーキング・システム１６０は、ソーシャル・グラフ２００内で第１のユーザのユーザ・ノード２０２を第２のユーザのユーザ・ノード２０２につなげるエッジ２０６を作成して、エッジ２０６をソーシャル・グラフ情報としてデータ・ストア１６４のうちの１つまたは複数の中に記憶することができる。図２の例においては、ソーシャル・グラフ２００は、ユーザ「Ａ」のユーザ・ノード２０２と、ユーザ「Ｂ」のユーザ・ノード２０２との間における友達関係を示すエッジ２０６と、ユーザ「Ｃ」のユーザ・ノード２０２と、ユーザ「Ｂ」のユーザ・ノード２０２との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード２０２同士をつなげる特定の属性を伴う特定のエッジ２０６を記述している、または示しているが、本開示は、ユーザ・ノード２０２同士をつなげる任意の適切な属性を伴う任意の適切なエッジ２０６を想定している。限定ではなく、例として、エッジ２０６は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係（たとえば、「いいね」と表明することなどを含む）、フォロワー関係、ビジター関係（たとえば、アクセスすること、閲覧すること、チェックインをすること、共有することなどを含む）、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表すことができる。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、１つまたは複数のエッジ２０６によってソーシャル・グラフ２００内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を示すことができる。
【００４９】
特定の実施形態においては、ユーザ・ノード２０２とコンセプト・ノード２０４との間におけるエッジ２０６は、ユーザ・ノード２０２に関連付けられているユーザによって、コンセプト・ノード２０４に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティを表すことができる。限定ではなく、例として、図２において示されているように、ユーザは、コンセプトに対して「いいね！を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらの各々は、エッジ・タイプまたはサブタイプに対応することができる。コンセプト・ノード２０４に対応するコンセプトプロフィール・インタフェースは、たとえば、選択可能な「チェックイン」アイコン（たとえば、クリック可能な「チェックイン」アイコンなど）、または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこれらのアイコンをクリックした後に、ソーシャル・ネットワーキング・システム１６０は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ（ユーザ「Ｃ」）が、特定のアプリケーション（オンライン音楽アプリケーションであるＳＰＯＴＩＦＹ）を使用して特定の曲（「イマジン」）を聴く場合がある。このケースにおいては、ソーシャル・ネットワーキング・システム１６０は、そのユーザに対応するユーザ・ノード２０２と、その曲およびアプリケーションに対応するコンセプト・ノード２０４との間において、（図２に示されているような）「聴いた」エッジ２０６および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャル・ネットワーキング・システム１６０は、その曲に対応するコンセプト・ノード２０４と、そのアプリケーションに対応するコンセプト・ノード２０４との間において、（図２に示されているような）「再生した」エッジ２０６を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ２０６は、外部アプリケーション（ＳＰＯＴＩＦＹ）によって外部オーディオ・ファイル（「イマジン」という曲）に関して実行されたアクションに対応する。本開示は、ユーザ・ノード２０２とコンセプト・ノード２０４とをつなげる特定の属性を伴う特定のエッジ２０６について記述しているが、本開示は、ユーザ・ノード２０２とコンセプト・ノード２０４とをつなげる任意の適切な属性を伴う任意の適切なエッジ２０６を想定している。その上、本開示は、単一の関係を表すユーザ・ノード２０２とコンセプト・ノード２０４との間におけるエッジについて記述しているが、本開示は、１つまたは複数の関係を表すユーザ・ノード２０２とコンセプト・ノード２０４との間におけるエッジを想定している。限定ではなく、例として、エッジ２０６は、ユーザが特定のコンセプトに対して「いいね！」の表明をしているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ２０６は、（図２において、ユーザ「Ｅ」を表すユーザ・ノード２０２と、「ＳＰＯＴＩＦＹ」を表すコンセプト・ノード２０４との間において示されているような）ユーザ・ノード２０２とコンセプト・ノード２０４との間におけるそれぞれのタイプの関係（または、単一の関係が複数集まったもの）を表すことができる。
【００５０】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、ソーシャル・グラフ２００内でユーザ・ノード２０２とコンセプト・ノード２０４との間においてエッジ２０６を作成することができる。限定ではなく、例として、（たとえば、ユーザのクライアント・システム１３０によってホストされているウェブ・ブラウザまたは専用のアプリケーションを使用することなどによって）コンセプトプロフィール・インタフェースを閲覧しているユーザは、「いいね！」アイコンをクリックまたは選択することにより、コンセプト・ノード２０４によって表されているコンセプトを自分が気に入っているということを示すことができ、その「いいね！」アイコンをクリックまたは選択することは、ユーザのクライアント・システム１３０に、そのコンセプトプロフィール・インタフェースに関連付けられているそのコンセプトをそのユーザが気に入っているということを示すメッセージをソーシャル・ネットワーキング・システム１６０へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム１６０は、そのユーザとコンセプト・ノード２０４との間における「いいね！」エッジ２０６によって示されているように、そのユーザに関連付けられているユーザ・ノード２０２とコンセプト・ノード２０４との間においてエッジ２０６を作成することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、エッジ２０６を１つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、エッジ２０６は、特定のユーザ・アクションに応答してソーシャル・ネットワーキング・システム１６０によって自動的に形成されることが可能である。限定ではなく、例として、第１のユーザが、画像をアップロードすること、映画を観ること、または曲を聴くことを行った場合には、エッジ２０６は、第１のユーザに対応するユーザ・ノード２０２と、それらのコンセプトに対応するコンセプト・ノード２０４との間において形成されることが可能である。本開示は、特定の様式で特定のエッジ２０６を形成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なエッジ２０６を形成することを想定している。
【００５１】
オンライン・ソーシャル・ネットワークでのクエリの検索
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、オンライン・ソーシャル・ネットワークのユーザのクライアント・システムから、ユーザによって入力されたクエリを受け取ることができる。ユーザは、たとえば、クエリ入力を選択するか、またはクエリ・フィールドにテキストを入力することによって、ソーシャル・ネットワーキング・システム１６０にクエリを提出することができる。オンライン・ソーシャル・ネットワークのユーザは、特定の主題（たとえば、ユーザ、コンセプト、外部コンテンツまたはリソース）に関する情報を、「検索クエリ」と称されることが多い、その主題を説明する短い語句を検索エンジンに提出することによって検索することができる。クエリは、非構造化テキスト・クエリであることがあり、１つまたは複数のテキスト文字列（これは、１つまたは複数のｎ−ｇｒａｍを含み得る）を含むことができる。一般に、ユーザは、クエリ・フィールド内に任意の文字列を入力して、ソーシャル・ネットワーキング・システム１６０上でテキスト・クエリに一致するコンテンツを検索する。次いで、ソーシャル・ネットワーキング・システム１６０は、データ・ストア１６４（または、特に、ソーシャル・グラフ・データベース）を検索して、クエリに一致するコンテンツを識別することができる。検索エンジンは、さまざまな検索アルゴリズムを使用してクエリ語句に基づいて検索を実施し、検索クエリに最も関係がありそうなリソースまたはコンテンツ（たとえば、ユーザ・プロフィール・インタフェース、コンテンツ・プロフィール・インタフェース、または外部リソース）を識別する検索結果を生成することができる。検索を実施するために、ユーザは、検索クエリを検索エンジンに入力または送信することができる。応答して、検索エンジンは、検索クエリに関係がありそうな１つまたは複数のリソースを識別し、それらの各々は、検索クエリに対応する「検索結果（ｓｅａｒｃｈ  ｒｅｓｕｌｔ）」と個々に称されても、または「検索結果（ｓｅａｒｃｈ  ｒｅｓｕｌｔｓ）」とまとめて称されてもよい。識別されたコンテンツは、たとえば、ソーシャル・グラフ要素（すなわち、ユーザ・ノード２０２、コンセプト・ノード２０４、エッジ２０６）、プロフィール・インタフェース、外部ウェブ・インタフェース、またはこれらの任意の組み合わせを含むことができる。次いで、ソーシャル・ネットワーキング・システム１６０は、識別されたコンテンツに対応する検索結果を有する検索結果インタフェースを生成し、この検索結果インタフェースをユーザへ送信することができる。検索結果は、多くの場合、リンクのリストの形態で検索結果インタフェース上でユーザに提示されてもよく、各リンクは、識別されたリソースまたはコンテンツのうちのいくつかを含む異なるインタフェースに関連付けられている。特定の実施形態において、検索結果における各リンクは、対応するインタフェースがどこに位置するか、および該インタフェースを取り出すためのメカニズムを特定する、ユニフォーム・リソース・ロケータ（ＵＲＬ）の形式とすることができる。次いで、ソーシャル・ネットワーキング・システム１６０は、検索結果インタフェースを、ユー��のクライアント・システム１３０上のウェブ・ブラウザ１３２に送信することができる。次いで、ユーザは、適宜、ＵＲＬリンクをクリックして、または検索結果インタフェースからコンテンツを他の形で選択して、ソーシャル・ネットワーキング・システム１６０または外部システム（たとえば、サードパーティ・システム１７０など）からのコンテンツにアクセスすることができる。リソースは、検索クエリに対するそれらの相対的な関連性の度合いに従って、順位付けされてユーザに提示されることが可能である。検索結果は、ユーザに対するそれらの相対的な関連性の度合いに従って、順位付けされてユーザに提示されることが可能である。換言すれば、検索結果は、たとえば、ソーシャル・グラフ情報、ユーザ情報、ユーザの検索履歴もしくはブラウズ履歴、またはユーザに関係する他の適切な情報に基づいて、クエリを行うユーザのためにパーソナライズすることができる。特定の実施形態において、リソースの順位付けは、検索エンジンによって実施される順位付けアルゴリズムによって決定することができる。限定ではなく例として、検索クエリまたはユーザに対する関連性がより高いリソースは、検索クエリまたはユーザに対する関連性がより低いリソースよりも高く順位付けされることが可能である。特定の実施形態において、検索エンジンは、その検索をオンライン・ソーシャル・ネットワーク上のリソースとコンテンツとに限定することができる。しかし、特定の実施形態においては、検索エンジンは、サードパーティ・システム１７０、インターネットもしくはワールド・ワイド・ウェブ、または他の適切なソースなど、他のソース上のリソースまたはコンテンツも検索することができる。本開示は、ソーシャル・ネットワーキング・システム１６０に特定の方法でクエリを行うことについて記述しているが、本開示は、ソーシャル・ネットワーキング・システム１６０に任意の適切な方法でクエリを行うことを想定している。
【００５２】
タイプアヘッド・プロセスおよびクエリ
特定の実施形態において、１つまたは複数のクライアント側および／またはバックエンド（サーバ側）・プロセスは、ソーシャル・グラフ要素（たとえば、ユーザ・ノード２０２、コンセプト・ノード２０４またはエッジ２０６）と、ソーシャル・ネットワーキング・システム１６０によってホストされ、またはソーシャル・ネットワーキング・システム１６０においてアクセス可能であり得る（たとえば、ユーザ・プロフィール・インタフェース、コンセプト・プロフィール・インタフェース、検索結果インタフェース、オンライン・ソーシャル・ネットワークに関連付けられているネイティブ・アプリケーションのユーザ・インタフェース／ビュー・ステート、またはオンライン・ソーシャル・ネットワークの別の適切なインタフェースなどの）要求されるインタフェースとともにレンダリングされる入力フォームにおいてユーザによって現在入力されている情報とのマッチングを行うように自動的に試行することのできる「タイプアヘッド」機能を実装および利用することができる。特定の実施形態において、ユーザが表明を行うためにテキストを入力する際に、タイプアヘッド機能は、表明において入力されているテキスト文字の文字列と、ユーザ、コンセプトまたはエッジに対応する文字の文字列（たとえば、氏名、説明）およびソーシャル・グラフ２００におけるそれぞれに対応する要素とのマッチングを試行することができる。特定の実施形態において、一致が見つかると、タイプアヘッド機能は、既存のソーシャル・グラフ要素の（たとえば、ノード名／タイプ、ノードＩＤ、エッジ名／タイプ、エッジＩＤ、または別の適切な参照もしくは識別子などの）ソーシャル・グラフ要素への参照をフォームに自動的に追加することができる。特定の実施形態において、ユーザが文字をフォーム・ボックス内に入力している間に、タイプアヘッド・プロセスは、入力されたテキスト文字の文字列を読み取ることができる。各キーストロークが行われる際に、フロンドエンド・タイプアヘッド・プロセスは、入力された文字列を要求（または呼び出し）としてソーシャル・ネットワーキング・システム１６０内で実行されるバックエンド・タイプアヘッド・プロセスへ送信することができる。特定の実施形態において、タイプアヘッド・プロセスは、１つまたは複数のマッチング・アルゴリズムを使用して、一致するソーシャル・グラフ要素を識別しようと試行することができる。特定の実施形態において、１つまたは複数の一致が見つかると、タイプアヘッド・プロセスは、たとえば、一致するソーシャル・グラフ要素の名前（名前の文字列）または説明と、潜在的には、一致するソーシャル・グラフ要素に関連付けられている他のメタデータとを含み得る応答をユーザのクライアント・システム１３０へ送信することができる。限定ではなく例として、ユーザがクエリ・フィールドに文字「ｐｏｋ」を入力すると、タイプアヘッド・プロセスは、「ポーカー（ｐｏｋｅｒ）」または「ポケモン（ｐｏｋｅｍｏｎ）」と名付けられるかまたはそれをテーマにしているプロフィール・インタフェースなどの、一致する既存のプロフィール・インタフェースおよび各ユーザ・ノード２０２またはコンセプト・ノード２０４の名前を表示するドロップ・ダウン・メニューを表示することができ、次いで、それをユーザがクリックまたはその他の形で選択することによって、選択されたノードに対応する一致するユーザまたはコンセプトの名前を表明したいという要望を確認することができる。
【００５３】
タイプアヘッド・プロセスに関するさらなる情報は、２０１０年４月１９日に出願された米国特許出願第１２／７６３１６２号、および２０１２年７月２３日に出願された米国特許出願第１３／５５６０７２号において見出され、これらの出願は、本願明細書に援用される。
【００５４】
特定の実施形態において、本願明細書で記述されているタイプアヘッド・プロセスは、ユーザが入力する検索クエリに適用することができる。限定ではなく例として、ユーザがクエリ・フィールドにテキスト文字を入力すると、タイプアヘッド・プロセスは、ユーザが文字を入力している間に、クエリ・フィールドに入力される文字の文字列に一致する１つまたは複数のユーザ・ノード２０２、コンセプト・ノード２０４またはエッジ２０６を識別しようと試行することができる。タイプアヘッド・プロセスがテキスト・クエリから文字列またはｎ−ｇｒａｍを含む要求または呼び出しを受け取ると、タイプアヘッド・プロセスは、入力されたテキストに一致する各名前、タイプ、カテゴリまたは他の識別子を有する既存のソーシャル・グラフ要素（すなわち、ユーザ・ノード２０２、コンセプト・ノード２０４、エッジ２０６）を識別するための検索を行うか、または行わせることができる。タイプアヘッド・プロセスは、１つまたは複数のマッチング・アルゴリズムを使用して、一致するノードまたはエッジの識別を試行することができる。１つまたは複数の一致が見つかると、タイプアヘッド・プロセスは、たとえば、一致するノードの名前（名前の文字列）と、潜在的には、一致するノードに関連付けられている他のメタデータとを含み得る応答をユーザのクライアント・システム１３０に送信することができる。次いで、タイプアヘッド・プロセスは、一致する既存のプロフィール・インタフェースおよび各ユーザ・ノード２０２またはコンセプト・ノード２０４の名前を表示するとともに、一致するユーザ・ノード２０２またはコンセプト・ノード２０４につながり得る一致するエッジ２０６の名前を表示するドロップ・ダウン・メニューを表示し、次いで、これをユーザがクリックまたはその他の形で選択することによって、選択されたノードに対応する一致したユーザもしくはコンセプト名を検索したいという要望、または一致するエッジによって一致したユーザもしくはコンセプトにつなげられているユーザもしくはコンセプトを検索したいという要望を確認することができる。あるいは、タイプアヘッド・プロセスは、ドロップ・ダウン・メニューに表示するよりもむしろ、１位に順位付けされた一致の名前または他の識別子をフォームに自動的に追加するだけでもよい。ユーザは、次いで、キーボードの「ｅｎｔｅｒ」を押すか、または自動追加された表明をクリックするだけで、自動追加された表明を確認することができる。一致するノードおよびエッジをユーザが確認すると、タイプアヘッド・プロセスは、一致するソーシャル・グラフ要素を含むクエリをユーザが確認したことを、ソーシャル・ネットワーキング・システム１６０に通知する要求を送信することができる。送信された要求に応答して、ソーシャル・ネットワーキング・システム１６０は自動的に（あるいは、要求内の命令に基づいて）、適宜、一致するソーシャル・グラフ要素の、または一致するソーシャル・グラフ要素につなげられているソーシャル・グラフ要素のソーシャル・グラフ・データベースを呼び出すか、またはその他の形で検索することができる。本開示は、特定の方法でのタイプアヘッド・プロセスの検索クエリへの適用を記述しているが、本開示は、任意の適切な方法でのタイプアヘッド・プロセスの検索クエリへの適用を想定している。
【００５５】
検索クエリおよび検索結果に関連して、特定の実施形態は、２００６年８月１１日に出願された米国特許出願第１１／５０３０９３号、２０１０年１２月２２日に出願された米国特許出願第１２／９７７０２７号、および２０１０年１２月２３日に出願された米国特許出願第１２／９７８２６５号に開示されている１つまたは複数のシステム、コンポーネント、要素、機能、方法、動作または工程を利用することができ、これらの出願は、本願明細書に援用される。
【００５６】
構造化検索クエリ
特定の実施形態において、第１ユーザ（すなわち、クエリを行うユーザ）から受け取られるテキスト・クエリに応答して、ソーシャル・ネットワーキング・システム１６０は、テキスト・クエリを構文解析し、特定のソーシャル・グラフ要素に対応するテキスト・クエリの部分を識別することができる。しかし、場合によっては、クエリが１つまたは複数の曖昧な用語を含むことがある。ここで、曖昧な用語とは、複数のソーシャル・グラフ要素におそらく対応し得る用語である。曖昧な用語を構文解析するために、ソーシャル・ネットワーキング・システム１６０は、ソーシャル・グラフ２００にアクセスし、次いで、テキスト・クエリを構文解析して、テキスト・クエリから、曖昧なｎ−ｇｒａｍに対応するソーシャル・グラフ要素を識別することができる。ソーシャル・ネットワーキング・システム１６０は、次いで、構造化クエリのセットを生成することができ、ここで、各構造化クエリは、一致する可能性があるソーシャル・グラフ要素のうちの１つに対応する。これらの構造化クエリは、それらが関連性のあるソーシャル・グラフ要素を参照して自然言語構文においてレンダリングされるように、文法モデルによって生成される文字列に基づくことができる。限定ではなく例として、テキスト・クエリ「私のガールフレンドの友達を見せて（ｓｈｏｗ  ｍｅ  ｆｒｉｅｎｄｓ  ｏｆ  ｍｙ  ｇｉｒｌｆｒｉｅｎｄ）」に応答して、ソーシャル・ネットワーキング・システム１６０は、構造化クエリ「ステファニーの友達（Ｆｒｉｅｎｄｓ  ｏｆ  Ｓｔｅｐｈａｎｉｅ）」を生成することができ、ここで、構造化クエリの「友達」および「ステファニー」は、特定のソーシャル・グラフ要素に対応する参照である。「ステファニー」への参照は、特定のユーザ・ノード２０２に対応する（ソーシャル・ネットワーキング・システム１６０がｎ−ｇｒａｍ「私のガールフレンド」を構文解析して、ユーザ「ステファニー」のユーザ・ノード２０２に対応させた）のに対し、「友達」への参照は、そのユーザ・ノード２０２を他のユーザ・ノード２０２につなげる、友達タイプのエッジ２０６（すなわち、「ステファニーの」一次の友達につながるエッジ２０６）に対応するであろう。この構造化クエリを実行すると、ソーシャル・ネットワーキング・システム１６０は、友達タイプのエッジ２０６によって「ステファニー」に対応するユーザ・ノード２０２につなげられている１つまたは複数のユーザ・ノード２０２を識別することができる。限定ではなく別の例として、テキスト・クエリ「フェイスブックに勤務する友達（ｆｒｉｅｎｄｓ  ｗｈｏ  ｗｏｒｋ  ａｔ  ｆａｃｅｂｏｏｋ（登録商標））」に応答して、ソーシャル・ネットワーキング・システム１６０は、構造化クエリ「フェイスブックに勤務する私の友達（Ｍｙ  ｆｒｉｅｎｄｓ  ｗｈｏ  ｗｏｒｋ  ａｔ  Ｆａｃｅｂｏｏｋ）」を生成することができ、ここで、構造化クエリにおける「私の友達」、「に勤務する」および「フェイスブック」は、前述した特定のソーシャル・グラフ要素（すなわち、友達タイプのエッジ２０６、勤務先タイプのエッジ２０６、および会社「フェイスブック」に対応するコンセプト・ノード２０４）に対応する参照である。提案される���造化クエリをユーザのテキスト・クエリに応答して提供することによって、ソーシャル・ネットワーキング・システム１６０は、オンライン・ソーシャル・ネットワークのユーザに、ソーシャル・グラフ２００において表される要素を、それらのソーシャル・グラフ属性およびさまざまなソーシャル・グラフ要素に対するそれらの関係性に基づいて検索するための強力な手法を提供することができる。構造化クエリは、クエリを行うユーザが、特定のエッジ・タイプによってソーシャル・グラフ２００において特定のユーザまたはコンセプトにつながっているコンテンツを検索することを可能にすることができる。構造化クエリは、第１のユーザに送信され、（たとえば、クライアント側タイプアヘッド・プロセスを通じて）ドロップ・ダウン・メニューにおいて表示されることが可能である。ここで、第１のユーザは、次いで、適切なクエリを選択して、所望のコンテンツを検索することができる。本願明細書において記述されている、構造化クエリを使用する利点のうちのいくつかは、限られた情報に基づいてオンライン・ソーシャル・ネットワークのユーザを見つけること、さまざまなソーシャル・グラフ要素に対するコンテンツの関係性に基づいて、オンライン・ソーシャル・ネットワークからコンテンツの仮想インデックスをまとめること、または、自分および／もしくは自分の友達に関係するコンテンツを見つけることを含む。本開示は、特定の構造化クエリを特定の方法で生成することを記述しているが、本開示は、任意の適切な構造化クエリを任意の適切な方法で生成することを想定している。
【００５７】
要素の検出およびクエリの構文解析に関するさらなる情報は、２０１２年７月２３日に出願された米国特許出願第１３／５５６０７２号、２０１２年１２月３１日に出願された米国特許出願第１３／７３１８６６号、および２０１２年１２月３１日に出願された米国特許出願第１３／７３２１０１号において見出されることができ、これらの出願の各々が、本願明細書に援用される。構造化検索クエリおよび文法モデルに関するさらなる情報は、２０１２年７月２３日に出願された米国特許出願第１３／５５６０７２号、２０１２年１１月１２日に出願された米国特許出願第１３／６７４６９５号、および２０１２年１２月３１日に出願された米国特許出願第１３／７３１８６６号において見出されることができ、これらの出願の各々が、本願明細書に援用される。
【００５８】
キーワードおよびキーワード・クエリの生成
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、ユーザがテキスト文字列をクエリ・フィールドに入力している間に、カスタマイズされたキーワード補完提案を、クエリを行うユーザに提供することができる。キーワード補完提案は、非構造化フォーマットでユーザに提供することができる。キーワード補完提案を生成するために、ソーシャル・ネットワーキング・システム１６０は、ソーシャル・ネットワーキング・システム１６０内の複数のソースにアクセスして、キーワード補完提案を生成し、複数のソースからのキーワード補完提案にスコアを付け、さらにキーワード補完提案をユーザに返すことができる。限定ではなく例として、ユーザがクエリ「友達  スタン（ｆｒｉｅｎｄｓ  ｓｔａｎ）」とタイプすると、ソーシャル・ネットワーキング・システム１６０は、たとえば、「友達  スタンフォード（ｆｒｉｅｎｄｓ  ｓｔａｎｆｏｒｄ）」、「友達  スタンフォード大学（ｆｒｉｅｎｄｓ  ｓｔａｎｆｏｒｄ  ｕｎｉｖｅｒｓｉｔｙ）」、「友達  スタンリー（ｆｒｉｅｎｄｓ  ｓｔａｎｌｅｙ）」、「友達  スタンリー  クーパー（ｆｒｉｅｎｄｓ  ｓｔａｎｌｅｙ  ｃｏｏｐｅｒ）」、「友達  スタンリー  キューブリック（ｆｒｉｅｎｄｓ  ｓｔａｎｌｅｙ  ｋｕｂｒｉｃｋ）」、「友達  スタンリー  カップ（ｆｒｉｅｎｄｓ  ｓｔａｎｌｅｙ  ｃｕｐ）」、および「友達  スタンロンスキー（ｆｒｉｅｎｄｓ  ｓｔａｎｌｏｎｓｋｉ）」を提案することができる。この例では、ソーシャル・ネットワーキング・システム１６０は、曖昧なｎ−ｇｒａｍ「スタン（ｓｔａｎ）」の変形であるキーワードを提案しており、ここで提案は、多様なキーワード生成器から生成されることができる。ソーシャル・ネットワーキング・システム１６０は、ユーザが何らかの形で提案につながっていることを理由にキーワード補完提案を選択していてもよい。限定ではなく例として、クエリを行うユーザは、ソーシャル・グラフ２００においてスタンフォード大学に対応するコンセプト・ノード２０４に、たとえば、「いいね！」タイプまたは「通っていた」タイプのエッジ２０６でつながっている可能性がある。また、クエリを行うユーザには、「スタンリー  クーパー（Ｓｔａｎｌｅｙ  Ｃｏｏｐｅｒ）」という名前の友達がいる可能性がある。本開示は、特定の方法でのキーワード補完提案の生成を記述しているが、本開示は、任意の適切な方法でのキーワード補完提案の生成を想定している。
【００５９】
キーワード・クエリに関するさらなる情報は、２０１４年４月３日に出願された米国特許出願第１４／２４４７４８号、２０１４年８月２７日に出願された米国特許出願第１４／４７０６０７号、および２０１４年１２月５日に出願された米国特許出願第１４／５６１４１８号において見出されることができ、これらの出願の各々が、本願明細書に援用される。
【００６０】
多義コードを使用した類似度検索
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、圧縮ドメインで近似最近傍探索を行うことができる。検索は、多義コードを使用することができ、これは、直積量子化の距離推定品質、および、バイナリ・コードのハミング距離との効率的な比較、の両方を提供する。検索時、チャネル最適化ベクトル量子化器を使用したこの双対解釈が検索を加速させることができる。インデックス付きベクトルのほとんどをハミング距離で排除することができ、ベクトルの一部のみが、非対称距離推定法で順位付けされる。
【００６１】
この方法は、転置マルチインデックスなどの特徴空間の粗分割の補足とすることができる。これは、１０億個のベクトルを含むＢＩＧＡＮＮデータセットなどのいくつかの公開ベンチマークで行われた実験で証明されており、クエリ時間について、コアあたり０．３ミリ秒を下回る従来技術の結果を報告している。このアプローチは、ＣＮＮ画像記述子によって記述されるＹａｈｏｏ  Ｆｌｉｃｋｒ  Ｃｒｅａｔｉｖｅ  Ｃｏｍｍｏｎｓ  １００Ｍに関連付けられているｋ最近傍（ｋ‐ＮＮ：ｋ‐ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ）グラフの近似計算を、単一マシンで８時間未満で行えるようにすることができる。
【００６２】
最近傍探索、またはより一般的には類似度検索は、この数十年でさまざまな研究コミュニティから注目を集めている。コンピュータ・ビジョンのコミュニティは、非常に大量の視覚的コレクションを扱うときに非常に重要なこのテーマに対して、特に活動的である。
【００６３】
初期の近似最近傍（ＡＮＮ）法は主に速度と確度とのトレードオフを最適化していたが、最近の多くの研究は、いくつかの理由から、メモリ要件を中心的な基準に置いている。たとえば、メモリ階層に起因して、より少ないメモリ手段を使用することは、より高速のメモリを使用することを意味し、ディスクはメイン・メモリよりも遅く、メイン・メモリはＣＰＵキャッシュよりも遅い、等である。メモリへのアクセスが、検索のボトルネックとなり得る。そのため、コンパクト符号を使用するアルゴリズムの方が、フル・ベクトルに依存するものよりも高い効率を提供する可能性が高い。このため、実施形態は、コンパクト符号を用いたＡＮＮを中心に扱い、これは、単一マシン上で、１０億個ものベクトルを含むベクトル集合における検索を行うことができる。
【００６４】
コンパクト符号によるＡＮＮでの検索には２通りある。第１の種類の方法は、オリジナルのベクトルをハミング超立方体にマッピングするよう提案する。得られるビット・ベクトルは、ＣＰＵおよびＧＰＵの両方で利用できるｘｏｒおよびｐｏｐｃｎｔなどの最適化された低レベルのプロセッサ命令により、ハミング距離と効率的に比較される。別のアプローチは、所与のコード・サイズに対してより優れた距離の推定を実現するために、量子化の観点を採用することである。これら２種類のアプローチはしばしば対立するものと見られるが、どちらにもそれぞれ長所と短所がある。バイナリ・コードは、より高速で単純な距離計算を行うことができ、コードが生成されたら外部のメタデータは必要ない。対して、量子化ベースのアプローチは、より優れたメモリ／確度の操作点を達成する。
【００６５】
特定の実施形態において、本願明細書で説明する多義コードは、両方の良いところを持っている。これらは、特にフィルタリング工程で有用なバイナリ・コード、または直積量子化アプローチの非対称距離推定量のいずれかと比較することができる。この双対解釈を成し遂げるための重要な側面は、学習手順である。このアプローチは、チャネル最適化ベクトル量子化に関わる。
【００６６】
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、第１ユーザのクライアント・システムから、クエリを受け取ることができ、クエリは、ｎ次元のベクトル空間のｎ次元のベクトルによって表される。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、ベクトルを複数のサブベクトルに分割することができ、複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化し、量子化された各サブベクトルは、ベクトル・コードによって表される。このように、このアプローチは、直積量子化器を訓練することになる。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、量子化されたサブベクトルを表すベクトル・コードを、クエリを表す多義コードに翻訳することができ、各多義コードは、量子化されたサブベクトルのうちの１つを表す。このように、バイナリ・コードの重心へのいわゆる「インデックス割り当て」を最適化する。他の点では、方法は、図３に図示するように、類似の重心間の距離がハミング空間において小さくなるように、重心の計算法を再配列することができる。
【００６７】
特定の実施形態において、ベクトル・コードを多義コードに翻訳することは、量子化されたサブベクトルの重心間距離を多義コードのバイナリ比較が反映するように、ビットの置換を学習することを含む。図３は、特定の実施形態による、類似の重心間の距離がハミング空間において小さくなるような、重心の計算法の再配列を示す。多義コードは、直積量子化（８バイトのコードについて、コードあたり毎秒２２２Ｍの距離評価）と、またはバイナリ・コード（毎秒１．１９Ｇ距離）として、比較できるベクトルのコンパクト表現である。この特性を得るために、ビットへの量子化インデックスの割り当ては、最も近い重心が小さいハミング距離をもつように最適化することができる。図は、ｋ平均重心（［０，１］×［０，１］で均一に描かれる点で学習される）とそれに対応するバイナリ表現とを示す。観察できるように、１ビットずつ異なるコード（図では赤色のセグメントで接続されている）は、一般に、最適化後の最も近い重心に対応し（図３、右）、これは、標準ＰＱコードには当てはまらない（図３、左）。
【００６８】
結果として、本方法は、確度の点では量子化ベースの方法に、検索効率に関してはバイナリ方法に、いずれにもほぼ匹敵する。このアプローチを転置マルチインデックスなどの相補的アプローチと組み合わせると、本方法は、いくつかの大規模な公開ベンチマークに関して実施された実験で証明されるように、従来技術を大差でしのぐことができる。興味深いことに、本アプローチの高い効率は、４，０９６次元のベクトルで描写される大きな画像コレクションＦｌｉｃｋｒ１００Ｍについて、全近傍問題に対し、すなわち、ｋ‐ＮＮグラフを計算することに対して、スケーラブルな解決策を提供する。
【００６９】
コンパクト符号を用いた近位最近傍
コンパクトなバイナリ・コード。局所性鋭敏型ハッシングは、先駆的なバイナリ符号化手法である。いくつかの仮定の下、ハミング距離は、統計的にコサイン類似度（同等に、正規化ベクトルのユークリッド距離）に関係する。バイナリ・ハッシュの総当たり比較は、メモリの制約がある中での効率的な画像検索の現実的な選択肢と考えられてきたが、これは、１００万規模の画像コレクションへのこのアプローチのスケーラビリティを証明するその後の研究によって普及した。スペクトラル・ハッシングまたは反復量子化（ＩＴＱ：ｉｔｅｒａｔｉｖｅ  ｑｕａｎｔｉｚａｔｉｏｎ）など、このハミング空間での検索を迅速化するために多くのアプローチが提案されてきた。たとえば、ｋ平均ハッシング法は、まず、ベクトル量子化器を生成し、生成したコードをハミング距離と比較する。
【００７０】
量子化ベースのコード。いくつかの研究は主に、メモリと距離推定とのトレードオフの最適化を中心に扱ってきた。特に、ロイド条件を満たすベクトル量子化器は、二乗ユークリッド距離推定法で統計的な保証を提供することが証明されており、これは、予想では量子化器の二乗損失によって制限される。これらの量子化ベースの方法は、直積量子化（ＰＱ：ｐｒｏｄｕｃｔ  ｑｕａｎｔｉｚａｔｉｏｎ）とその最適化バージョンの「最適化直積量子化」および「デカルトｋ平均（Ｃａｒｔｅｓｉａｎ  ｋ‐ｍｅａｎｓ）」とを含む。
【００７１】
これらのアプローチは、視覚的記述子の大規模なコレクション内での近似検索にとって効果的である。その後の研究は、より一般的な観点（「加法的量子化（Ａｄｄｉｔｉｖｅ  ｑｕａｎｔｉｚａｔｉｏｎ）」など）を採用することによって、優れた近似化および検索パフォーマンスを提供する可能なメモリ／効率のトレードオフを推し進めてきたが、これを得るにははるかに高い計算符号化コストがかかる。ＰＱとこの一般式との間で、残差量子化器によって良好なトレードオフが達成され、これは、オリジナルのベクトルの代わりに残差誤差ベクトルを符号化することによって量子化損を低減するために非網羅的なＰＱ変量で日常的に使用されるだけでなく、コーディング戦略として単独でも使用される。
【００７２】
ハイブリッド法。ＡＮＮ探索の前述の方法は、インデックス付きベクトルあたりのメモリ使用量を制限し、正確な距離よりも計算速度を高速化した距離推定量を提供する。しかし、クエリがすべてのデータベース要素と比較されるという意味において、検索はまだ網羅的である。１０億規模のコレクションの場合、メモリ内でのコードの読み取りは、通例、１秒オーダーの検索時間になる厳しい制約である。このメモリのボトルネックが課す制限から２段階のアプローチが導かれており、ハッシングまたはクラスタリングによりまず特徴空間が分割される。実際的には、各領域について、識別子を記憶する転置リストと対応するコンパクト符号とが記憶される。クエリ時に、領域の部分集合に関連付けられているコードについてのみ、距離が推定される。共通転置インデキシング（ｊｏｉｎｔ  ｉｎｖｅｒｔｅｄ  ｉｎｄｅｘｉｎｇ）で行われるように、初期のＬＳＨ論文にあるように複数の分割を使用することも可能である。しかし、これらの解決策にはいくつかのインデキシング構造が必要で、そのためメモリと確度とのトレードオフに関して競争力がない。粗いレベルについてさまざまな分割方法が提案されてきた。特に、転置マルチインデックスが直積量子化を使用して、粗いレベルを画定することも、残差ベクトルをコーディングすることも行う。この戦略は、コードに基づく再順位付け戦略とさらに組み合わせると、従来技術のパフォーマンスを提供する。
【００７３】
バイナリ・コード対量子化ベースのアプローチ。ハミング距離は、量子化法に関わるテーブル・ルックアップに基づく距離推定法よりも評価が著しく高速である。たとえば、加速倍率は、コードの長さにより、４．６倍〜６．６倍になり得る。しかし、バイナリ法は、ハミング空間によって課される制約を受ける。まず、可能な距離の数は、高々ｄ＋１であり、ｄはバイナリ・ベクトルの長さである。この問題は、ＬＳＨの非対称変量によって部分的には解決され、その推定は、データベース・ベクトルのコンパクト符号を使用するが、クエリ側ではない。しかも、こうした非対称尺度は、直積量子化から派生する方法のようにルックアップを必要とし、そのためハミング距離よりも評価に費用がかさむ。他方で、量子化ベースの方法は、より優れたメモリ／確度の妥協を提供し、これは、２値化が量子化の特殊な例であることから予想される。
【００７４】
バイナリ・コードおよび量子化ベースのコードには、それぞれ長所と短所がある。文献は通常、バイナリ・コードと量子化ベースのコードとを並行法として提示するが、次のセクションでは、両方の種類の方法の長所を享受する方法を紹介する。
【００７５】
多義コードを用いた近似最近傍
特定の実施形態において、方法は、量子化ベースの方法の推定の確度を提供しながら、ハミング距離の高速計算を利用することができる。特定の実施形態において、方法は、通常の直積量子化器を学習し、次いでハミング距離が重心間距離を近似化するように、バイナリ・コードへの重心インデックスの割り当てを最適化する。このセクションでは、まず、この性質を達成するために最適化された目的関数を説明し、次に最適化アルゴリズムを説明する。
【００７６】
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、ベクトルを複数のサブベクトルに分割することができ、ｎ次元のベクトル空間を複数の直積部分空間に分割することを含み、ベクトル間の距離は、直積部分空間内の対応するサブベクトル間の距離の和と同等である。特定の実施形態において、直積量子化器について、構成要素のサブ量子化器のそれぞれを個々に最適化する。特定の実施形態において、サブ量子化器のそれぞれは、複数のサブ量子化器の各他のサブ量子化器とは別個である。そのため、以下では、サブ量子化器ごとに１つの目的関数（および最適化プロセス）をもつ。
【００７７】
目的関数
２つの目的関数を考えてみる。距離推定量に基づいて損失を最小化するものと、順位付け損失を最小化するものである。
【００７８】
表記法。量子化器は通常、その重心の集合によって記述される。Ｊを、重心インデックスの集合とする：Ｊ＝｛０，１，…，２ｄ−１｝で、各（サブ）量子化器が標準慣行のように１バイトのオリジナルのベクトルを符号化する場合、ｄ＝８である。ｃｉを、重心ｉに関連付けられている再現値とする。ｄ：
【００７９】
【数２】
2019532445.tif 000004
【００８０】
を、重心間の距離、たとえば、ユークリッド距離とする。π：Ｊ→｛０，１｝ｄを、各重心インデックスを単位超立方体の異なる頂点にマッピングする全単射関数を表すものとする。最後にｈ：
【００８１】
【数３】
2019532445.tif 000005
【００８２】
を、２つのｄ次元バイナリ表現間の距離とする。
距離推定法損失。１つの考えられる目的は、２つの重心間の距離ｄ（ｃｉ，ｃｊ）が２つの対応するバイナリ・コード間のハミング距離ｈ（π（ｉ），π（ｊ））によって近似化されるような、全単射マップπを見つけることである。
【００８３】
【数４】
2019532445.tif 000006
【００８４】
上記式において、ｆ：
【００８５】
【数５】
2019532445.tif 000007
【００８６】
は、コードワード間の距離ｄ（ｃｉ，ｃｊ）をハミング距離に匹敵する範囲にマッピングする単調増加関数である。実際上、ｆについては単純な線形マッピングを選ぶ。この選択は、次の観察が理由となっている。｛０，１｝ｄから無作為に抜き出した２つのバイナリ・ベクトル間のハミング距離は、平均ｄ／２で分散ｄ／４の２項分布に従う。距離ｄ（ｃｉ，ｃｊ）の分布を２項式の優れた近似化であるガウス分布で平均μで標準偏差σで近似化できると仮定すると、これら２つの分布を、その平均と分散とをマッピングすることによってマッピングすることができる。それにより、次式が得られる。
【００８７】
【数６】
2019532445.tif 000008
【００８８】
上記式において、μおよびσは経験的に測定される。
ｋ‐ＮＮの状況において、大きいものよりも小さい距離を近似化する方が重要であるため、実際上、目的関数において距離に重みを付けることが有益であることがわかった。このことから、次の重み付き目的が導かれる。
【００８９】
【数７】
2019532445.tif 000009
【００９０】
α＜１で形式ｗ（ｕ）＝αｕの関数ｗ：
【００９１】
【数８】
2019532445.tif 000010
【００９２】
を選ぶ。我々の実験では、α＝１／２としたが、範囲［０．２，０．６］のαの値は、同様な結果になることが分かった。
順位付け損失。ｋ‐ＮＮ探索の状況において、我々は、コードワードの順位付けを維持する全単射マップπを探すことに関心がある。この目的のために、情報検索の考え方を採用する。（ｉ，ｊ）を１ペアのコードワードとし、ｉは「クエリ」と想定され、ｊはｉに「関連がある」と想定される。（クエリ，関連性）ペアの選択は後で述べる。クエリｉについて、ｄ（ｃｉ，ｃｊ）＜ｄ（ｃｉ，ｃｋ）になるような負のコードワードｋをとる。ペア（ｉ，ｊ）の損失は、次式のように定義することができる。
【００９３】
【数９】
2019532445.tif 000011
【００９４】
上記式において、ｕが真なら
【００９５】
【数１０】
2019532445.tif 000012
【００９６】
であり、そうでなければ０である。重心間の距離によるとｉはｋよりもｊに近いが、ハミング距離によるとどれくらい多くのコードワードｋがｊよりもｉに近いかを測定する。前の損失は、ケンドールのタウ係数に密接に関係して正しく順位付けられたペアの数を測定していたことに注目する。
【００９７】
損失ｒπ（ｉ，ｊ）のある問題は、リストの最上位に最下位と同じ重みを与えることである。しかし、順位付け問題では、上位順位で発生した誤差に、より大きい重みを与えるのが望ましい。そのため、ペア（ｉ，ｊ）については損失ｒπ（ｉ，ｊ）を直接使用するのではなく、代わりに、ｒπ（ｉ，ｊ）と劣線形に増加する損失を採用する。より具体的には、単調減少数列αｉ、およびｊに劣線形に増加する数列
【００９８】
【数１１】
2019532445.tif 000013
【００９９】
を導入する。ペア（ｉ，ｊ）の重み付き損失を
【０１００】
【数１２】
2019532445.tif 000014
【０１０１】
として定義する。
その後の問題は、ペア（ｉ，ｊ）をいかに選択するかである。１つ考えられることは、ｉのｋ‐ＮＮの中からｊを選ぶことであろう。その場合、次式を最適化することになるであろう。
【０１０２】
【数１３】
2019532445.tif 000015
【０１０３】
このアプローチの問題は、ＮＮリストについて任意の長さｋを選ぶ必要があることである。代替は、すべてのｊ≠ｉを潜在的にｉに「関連性がある」と考えるが、ｉから遠く離れているｊの寄与の重みを下げることである。このような場合、次式を最適化する。
【０１０４】
【数１４】
2019532445.tif 000016
【０１０５】
上記式において、αｉは減少数列であり、ｒ（ｉ，ｊ）はｉの近傍の順序付きリストでｊの順位であることを思い出していただきたい。
【０１０６】
【数１５】
2019532445.tif 000017
【０１０７】
我々のすべての順位付け実験において、次式を使用し、
【０１０８】
【数１６】
2019532445.tif 000018
【０１０９】
αｉ＝１／ｉを選ぶ。
最適化
前述の目的関数は、全単射マップπ、または同等にＰＱ重心の集合の別の計算法を見つけることを目的とし、近傍の重心に類似のバイナリ・コードを割り当てるであろう。
【０１１０】
この問題は、チャネル最適化ベクトル量子化の問題（チャネルによるビットの破壊が再構成にできるだけ影響を与えないように研究者らが量子化器を設計してきた）と似ている。これは、緩和できない個別の最適化の問題であり、そのため可能な全単射マップの集合が巨大になると、極小値をターゲットにすることしかできない。コーディングの文献では、このようなインデックス割り当ての問題はまず、貪欲に、たとえば、バイナリ・スイッチング・アルゴリズムを使用して最適化された。初期インデックスの割り当てから始めて、各反復で、このアルゴリズムは、あらゆる可能なビット入れ替え（すなわち、ｄ）をテストし、目的関数の最善の更新を提供するものを維持する。しかし、この戦略は、好ましくない極小値に急速に捕らわれることがある。我々が知る限り、インデックス割り当て問題に対する最善のアプローチは、最適化を実行するためにシミュレーテッド・アニーリングを採用することである。
【０１１１】
アルゴリズムは、サイズ２ｄのテーブルとして定義される全単射マッピングπに依存する損失Ｌ（π）の最適化を目的とする。これは次のように進める。
１．初期化
２．現在の解π：＝［０，…，２ｄ−１］
３．温度ｔ：＝ｔ０
４．Ｎｉｔｅｒ回反復する：
５．無作為にｉ、ｊ∈Ｊ、ｉ≠ｊを抜き出す
６．π’：＝π、項ｉとｊを入れ替える
７．コスト更新ΔＣ：＝Ｌ（π’）−Ｌ（π）を計算する
８．ΔＣ＜０または確率ｔで無作為の場合：
９．新たな解π：＝π’を受け入れる
１０．ｔ：＝ｔ×ｔｄｅｃａｙ
アルゴリズムは、反復回数Ｎｉｔｅｒ＝５００，０００、初期「温度」ｔ０＝０．７、およびｔｄｅｃａｙ＝０．９１／５００に依存する、すなわち、５００回反復するごとに０．９倍減少する。距離推定損失（各順位付け損失）の評価は、Ｏ（２２ｄ）（各Ｏ（２３ｄ））に複雑さをもつ。しかし、入れ替えによって発生するコスト更新の計算は、Ｏ（２２ｄ）（各Ｏ（２２ｄ））で実施することができる。
【０１１２】
図４は、最適化前後のバイナリ・ベクトルとして使用されるコードの比較を示す。図４に示すように、ハミング距離は、最適化前より後の方が真の距離との相関が大きい。図４の左側には、真の距離対ＰＱコードを用いた距離推定を示す。図４の中央には、真の距離対多義最適化前のハミング距離を示す。図４の右側には、真の距離対多義最適化後のハミング距離を示す。多義とのバイナリ比較はかなり区別がはっきりしているが、ＰＱコードとして解釈されるときには同じ推定を提供する。
【０１１３】
考察
最適化アルゴリズムは、以前にチャネル最適化ベクトル量子化で採用されたものと似ているが、我々の目的関数は、適用シナリオを反映するためにかなり異なっている。通信において、多くのビット誤りが同時に発生することは考えにくく、特にメモリレス・チャネルでは考えにくい。そのため、通信で採用される目的関数は小さなハミング距離に注目する。対して、ＡＮＮでは、近傍の典型的なハミング距離は比較的大きい。
【０１１４】
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、翻訳された多義コードに基づいて、量子化されたサブベクトルと、複数のコンテンツ・オブジェクトを表すベクトルの複数の対応するサブベクトルのそれぞれとの間のハミング距離を計算することができる。提案される２値化したＰＱコードは競争力のあるパフォーマンスを提供するが、その確度はＰＱのものよりも著しく低い。これは、大規模な検索に２段階の戦略を提案する。あるクエリがあるとすると、まず、２値化したＰＱコードの高速ハミング距離を使用して、データベース項目の大半を排除する。次いで、ハミング距離が所与の閾値τ未満であった項目について、よりコスト高の非対称距離を評価する。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、計算されたハミング距離が閾値距離未満の複数のサブベクトルによって表されるコンテンツ・オブジェクトの部分集合の中から、近似最近ベクトルを有するコンテンツ・オブジェクトを決定することができ、その決定は、１つまたは複数のルックアップと、クエリを表す翻訳された多義コードと、コンテンツ・オブジェクトを表す対応する多義コードとの加法演算とに基づく。たとえば、近似最近ベクトルを有するコンテンツ・オブジェクトを決定することは、量子化されたサブベクトルとコンテンツ・オブジェクトの部分集合を表すサブベクトルとの間の最短重心間距離を計算することを含むことができる。
【０１１５】
特定の実施形態において、量子化されたサブベクトルとコンテンツ・オブジェクトの部分集合を表すサブベクトルとの間の最短重心間距離を計算することは、加法的量子化を使用して行われる。たとえば、ソーシャル・ネットワーキング・システム１６０は、コンテンツ・オブジェクトの部分集合内の各コンテンツ・オブジェクトについて、量子化されたサブベクトルとコンテンツ・オブジェクトを表すサブベクトルとの間の中心間距離を、予め生成されたルックアップ・テーブルから引き出すことができる。ソーシャル・ネットワーキング・システム１６０は、コンテンツ・オブジェクトの部分集合内の各コンテンツ・オブジェクトについて、クエリを表すベクトルとコンテンツ・オブジェクトを表すベクトルとの間の近似距離を、量子化されたサブベクトルとコンテンツ・オブジェクトを表す対応するサブベクトルとの間の重心間距離を追加することによって計算し、計算された近似距離のうちの最短のものを決定することができる。
【０１１６】
フィルタリング段階について、他の戦略も考えられるであろう。このような１つの戦略は、直積量子化器についてどれくらいの量子化インデックスが異なるかを測定することである。正式には、この量をハミング距離ともいうが、インデックスのベクトル間で測定されるのであって、バイナリ・ベクトル間ではない。言い換えると、所与の数を超えるサブ量子化器が、クエリのものとは同一ではないインデックスを生成する場合、ベクトルを排除することができる。実験のセクションで示すように、この方法は、このセクションで提案される戦略ほど効率的でも正確でもない。
【０１１７】
このような別の戦略は、フィルタリング段階について、ＰＱとは無関係のバイナリ符号化手法、すなわちＩＴＱを使用することであろう。問題は、ＩＴＱコードおよびＰＱコードの記憶を伴うため、この方法のメモリ要件が増大することであろう。対して、我々は、提案されるアプローチではデータベース項目につき１つの多義コードしか記憶しない（ストレージ要件に重きが置かれる場合には必須である）。特定の実施形態において、各コンテンツ・オブジェクトは、ｎ次元のベクトル空間でｎ次元のベクトルで表され、コンテンツ・オブジェクトを表すベクトルは、複数のサブベクトルに分割される。たとえば、コンテンツ・オブジェクトを表す複数のサブベクトルは、対応する直積部分空間について複数のサブ量子化器を使用して量子化される。
【０１１８】
実験
このセクションは、分析を行い、我々の多義コードを評価する。評価プロトコルを紹介した後で、我々の中心的なアプローチを多面的に分析する。次いで、我々のアプローチが転置マルチインデックス（ＩＭＩ：ｉｎｖｅｒｔｅｄ  ｍｕｌｔｉ‐ｉｎｄｅｘ）に匹敵することを証明し、従来技術に対する比較を行う。
【０１１９】
評価プロトコル
我々のアプローチを、ＡＮＮの標準ベンチマークと、我々が検索品質を評価するために導入する新たなベンチマークとを用いて分析し、評価する。
【０１２０】
ＳＩＦＴ１Ｍは、１２８次元のＳＩＦＴ記述子のベンチマークである。データベースには１００万個のベクトルがあり、加えて訓練用に１００，０００個のベクトルおよび１０，０００個のクエリ・ベクトルがある。これは比較的小さい集合で、我々は、主にパラメータの分析に使用する。
【０１２１】
ＢＩＧＡＮＮは、ＡＮＮ探索で広く使用されている大規模ベンチマークで、これもＳＩＦＴ記述子から作られる。１０億個のデータベース・ベクトル、１億個の訓練用ベクトルおよび１０，０００個のクエリを含む。
【０１２２】
ＦＹＣＮＮ１ＭおよびＦＹＣＮＮ９０Ｍは、より難しい特徴をもつ検索の品質を評価するために導入される。我々は、Ｙａｈｏｏ  Ｆｌｉｃｋｒ  Ｃｒｅａｔｉｖｅ  Ｃｏｍｍｏｎｓ  １００Ｍの画像コレクションを次のように活用する。ＦＹＣＮＮ９０Ｍでは、データセットを３つの集合に分割した。９千個のベクトルにはインデックスを付け、１万個のベクトルはクエリとして機能し、５００万個のベクトルを訓練用に使用する。ＦＹＣＮＮ１Ｍは同じ訓練用の集合およびクエリを使用するが、インデックス付きの集合は、我々の方法の分析のために最初の１００万個の画像に制限する。これらのガイドラインに従って、畳み込みニューラル・ネットワークの特徴を抽出する。我々は、ＡｌｅｘＮｅｔの７番目のレイヤの活性化を計算する。これから、４０９６次元の画像記述子が得られる。インデックスを付ける前に、これらの記述子をＰＣＡで２５６Ｄまで減少させ、その後、ランダム回転を適用する。
【０１２３】
すべてのデータセットについて、ｒｅｃａｌｌ＠Ｒによって確度を評価する。このメトリックは、真の最近傍が上位Ｒの結果の中に返されるクエリの一部を測定する。報告されるすべての時間は、２．８ＧＨｚマシンのシングル・コアに関するものである。
【０１２４】
多義コードのパフォーマンスの分析
我々は、まず多義コードのパフォーマンスを分析する。表記法を紹介しよう。まず、直積量子化器を構築する３通りの方法を検討する。
【０１２５】
ＰＱは、ベースラインである。直積量子化器で生成されたコードを、インデックス割り当ての最適化をせずにそのまま使用する。
Ｐｏｌｙｄは、距離推定量損失を最小化することによって、インデックス割り当てが最適化される直積量子化器をいう。
【０１２６】
Ｐｏｌｙｒは、同様に、提案される順位付け損失で最適化されるＰＱをいう。
コードブックおよびインデックス割り当てが学習されたら、多義コードに基づいて距離を推定するための次の方法を検討する。
【０１２７】
ＡＤＣは、非対称距離推定量に基づく通常の比較である。
バイナリは、コードが、バイナリ・コードの場合と同様にビット・ベクトルと見なされるときの、ハミング距離とのビット単位の比較をいう（たとえば、ＩＴＱ）。
【０１２８】
ｄｉｓｉｄｘは、どれくらいのサブ量子化器が異なるコードを出すかをカウントする。
双対は、多義コードの両方の解釈を採用する戦略をいう。ハミングコードは、クエリまでの距離が閾値τより大きいデータベースのベクトルを排除するために使用する。このテストを満たすインデックス付きベクトルを非対称距離推定量と比較する。
【０１２９】
注記：多義コードは、主にＰＱコードである。そのため、多義コードおよび通常のＰＱのパフォーマンスは、比較がインデックス割り当てから独立している場合には同一で、これは、ＡＤＣおよびｄｉｓｉｄｘに当てはまる。たとえば、Ｐｏｌｙｄ／ＡＤＣ、Ｐｏｌｙｒ／ＡＤＣおよびＰＱ／ＡＤＣの組み合わせは、効率の点でも確度の点でも同等である。
【０１３０】
【表１】
2019532445.tif 000019
【０１３１】
特定の実施形態において、多義コードは１６バイト／ベクトルとすることができる。ｄｉｓｉｄｘのパフォーマンスは、インデックス割り当てに依存しないことが可能である。バイナリで比較するときに、我々の最適化の前（ＰＱ／バイナリ）と後（Ｐｏｌｙｄ／バイナリおよびＰｏｌｙｒ／バイナリ）にコードのパフォーマンスを示す。次いで、提案される多義双対戦略の結果を提示するが、これは、バイナリ法の速度に近づきながらＰＱとほぼ同じ確度である。訓練用集合では、ハミング比較は、点の少なくとも９５％を排除するようにハミング閾値を調整する。結果は５回平均で出し、無作為性のソースは、ＰＱ訓練とシミュレーテッド・アニーリングのｋ平均（クラスタリング）法である。最後の３行、すなわちＬＳＨ、ＩＴＱおよびＰＱは、参照のために記載されたベースラインである。ＬＳＨは、パフォーマンス向上のためにランダム射影の代わりにランダム回転を使用する。
【０１３２】
表１は、前述のＰＱ構成のパフォーマンスを詳述する。まず、ｄｉｓｉｄｘの確度が低いこと、また専用マシンの命令がないために比較的遅いことにも留意する。次いで、これらの結果は、我々のインデックス割り当ての最適化がバイナリ比較の品質改善に非常に効果的であることを示している。この最適化がなければ、バイナリ比較は、結果を順位付けするのにも（ＰＱ／バイナリ、フィルタリングするのにも（ＰＱ／双対）効果がない。順位付け損失ＰｏｌｙｒはＰｏｌｙｄにやや劣るため、我々は、以下において後者を採用する。
【０１３３】
図５は、特定の実施形態における、双対戦略に対するハミング閾値の影響を示す。たとえば、図５は、１２８ビット（１６サブ量子化器）を用いたＳＩＦＴ１ＭデータセットのＲｅｃａｌｌ＠１対検索速度を示す。多義の操作点はハミング閾値によってパラメータ化され（括弧内）、これは、ＰＱ距離推定のために維持される点の比率に影響する。多義最適化（ＰＱ双対なしで得られるトレードオフと２つのベースライン（ＩＴＱおよびＰＱ）を参照のために記載する。
【０１３４】
図５は、Ｐｏｌｙｄ／双対の関連性を示す。これにより、多様なハミング閾値τについてこの方法によって達成されるパフォーマンスが求められ、速度と確度とのトレードオフをパラメータ化する。多義コードによって妥協をほぼなくすことができ、ＰＱ／ＡＤＣの品質を達成するために要するのは、バイナリ・コードと比較して、検索時間の軽微な犠牲のみである。閾値τ＝５４のとき、点の９０〜９５％が排除される。τ＝４２の場合、これは、９９．５％超まで上昇する。
【０１３５】
図６は、距離ベースの目的関数について、反復に従う多義コードのパフォーマンスを示す（双対、τ＝５２、１２８ビット）（順位付け損失のある結果は類似）。初期状態（０回の反復）は、まだ我々の方法で最適化されていない直積量子化器に対応することに留意する。
【０１３６】
図６は、反復回数の関数としてのバイナリ・フィルタリングのパフォーマンスを示す。このアルゴリズムは、通例、数１０万回の反復に収束する（１回の反復＝可能なインデックス入れ替えの１テスト）。それぞれ２５６個の重心のあるＰＱサブ量子化器の集合の場合、これは、距離再構成損失ＰｏｌｙＲが数秒であり、順位付け損失ＰｏｌｙＲについては最大１時間であることを意味する。
【０１３７】
従来技術との比較
大規模なデータセットでは、クラスタリングにより通例実施される予備空間分割を残差ベクトルで学習されるコンパクト符号と組み合わせるハイブリッド法によって、確度、検索時間およびメモリ間の最善のトレードオフが得られる。我々が、我々の多義コードをＩＭＩと組み合わせるのはこれが理由である。この方法は、空間を直積量子化器で分割し（「粗い」分割レベル）、ＰＱを使用して残差誤差ベクトルを符号化する。検索は、粗レベルで少数の転置リストを選択することによって進み、次いで、残差ＰＱコードを使用して、選択されたリストに関連付けられているベクトルの距離を推定する。特定の実施形態において、量子化されたサブベクトルとコンテンツ・オブジェクトの部分集合を表すサブベクトルとの重心間距離は、予め生成されたルックアップ・テーブルから引き出される。我々は、複数のリストを調べるとき、ＰＱに関わるルックアップ・テーブルの計算をさらに最適化する。
【０１３８】
【表２】
2019532445.tif 000020
【０１３９】
表２は、ＢＩＧＡＮＮ（１０億個のベクトル）に関する従来技術との比較を示す。訪問されるリストの最大数と距離の評価数（「調査／上限」列）のどちらにも上限を設ける。タイミングについては、我々が改良した実施態様（＊）を使用し、最初の数は、バッチ・モードで行われるクエリに関するものであるのに対し、２番目は、１度に１つのクエリに対応する。我々の多義法は、コードの８０％を排除するように設定される。
【０１４０】
この方法を基に構築すると、残差ＰＱの多義コードを学習し、それによりリスト項目のほとんどを排除するための中間段階を導入できるため、ＰＱでの距離推定のほとんどが回避される。表２は、ＢＩＧＡＮＮデータセットに関する従来技術アルゴリズムとの比較を記載する。並行法と、我々が改良したＩＭＩの再実施態様とについて報告されるタイミングの両方を報告する。我々のシステムがオリジナルのＩＭＩと比較して非常に競争力のある結果を得ることはすでに述べた。バッチ・モードに対し、１度に１つのクエリ・ベクトルを検索する場合、粗量子化は５０〜６０％より高価になる。そのため、以下では、粗量子化器の固定費を削減することによってより積極的な操作点をターゲットにするためにＫ＝４０９６２を使用する。この場合、Ｐｏｌｙｄ／双対の結果は、ＩＭＩおよび従来技術と比較して明らかな改善を示す。特に、１６バイトの場合、１つのコアで、１ｍｓ未満でｒｅｃａｌｌ＠１＝０．２１７を達成することができる（単一クエリ・モードでは０．３８ｍｓ、バッチ・モードでは０．６４ｍｓ）。バイナリ・フィルタは、Ｒｅｃａｌｌ＠１スコアのわずかな減少のみを引き起こし、ほぼ２で検索時間を割る。
【０１４１】
図７は、特定の実施形態による、ＦＹＣＮＮ９０Ｍベンチマークに関するさまざまな方法のパフォーマンスを示す。我々は、ベクトルあたり、すなわちインデックス付き画像あたり２０バイト（コードについて１２８ビットで、識別子あたり４バイト）を使用する。上：参照のために、すべてのベクトル・インデックスとそのコードとに基づいてクエリを網羅的に比較する方法によって得られた結果を示す。予想される通り、非網羅的な方法（下）は、大量の転置リストを調べるときには（「調査２５６」を参照）特に、はるかに優れたパフォーマンスを達成する。我々の提案ＩＭＩ＋ＰｏｌｙＤ／双対は、メモリ、検索時間および確度間の最善のトレードオフをかなりの差で提供する。
【０１４２】
ＦＹＣＮＮ９０Ｍベンチマークでは、単一のクエリは、９千万の画像を含むコレクション内の画像を検索することに相当する。図７は、異なる方法によって達成されるパフォーマンスを示す。まず、非網羅的な方法（下）は、ＩＴＱのようにコードを網羅的に比較する方法（上）よりも少なくとも２桁速いことが観察される。前者は、数秒で類似の画像を見つけることができる。ここでも、我々の多義戦略ＩＭＩ＋ＰｏｌｙＤ／双対は、その競合法ＩＭＩを上回る、競争力のある利点を提供する。我々の方法は、無視できる確度の損失で、約１．５倍高速になる。
【０１４３】
例示的なアプリケーション：大規模ｋ‐ＮＮ画像グラフ
特定の実施形態において、コンテンツ・オブジェクトは画像または動画であり、本願明細書で説明する方法は、データベースにおいてクエリ画像またはクエリ動画に最も類似したｋ個の画像を見つけるために使用することができる。
【０１４４】
たとえば、この高速インデキシング・スキームの適用は、非常に大きな画像コレクションの近似ｋ‐ＮＮグラフを構築するという問題になり得る。この実験の場合、Ｆｌｉｃｋｒ  １００Ｍデータセットで利用できる９５，０６３，２９５の画像を利用する。我々は、ＰＣＡで２５６Ｄまで減少させた４，０９６ＤのＡｌｅｘＮｅｔ特徴を使用する。グラフ構築のために、各画像について順にｋ＝１００でｋ‐ＮＮを単に計算する。これには、ＣＰＵサーバの２０スレッドを使用して７時間４４分かかる。我々が検討するコレクションは、ｋ‐ＮＮグラフに関する以前の研究で検討されたものよりも著しく大きいことに留意する。
【０１４５】
図８は、特定の実施形態における、画像モードと、グラフにおけるその近傍との例を示す。各参照画像（左）について、その右側にｋ‐ＮＮグラフでの対応する画像近傍を示す。視覚化のために、ランダム・ウォーク手法に従うモードを求める。まず、ウォークの定常分布（すなわち、ランダム・ウォーク中に訪問される各ノードの確率）を反復計算し、次いでモードとして、グラフ内の定常確率の各極大値を検討する。約３，０００のこのような最大値を見つける。図８は、これらの最大値のサンプルと、それらの最も近い近傍とを示す。これらの結果は、発見された近傍の典型的な品質を代表するものと考えているが、ただし、プライバシーのために、顔に対応する多数のモードは示しておらず、そのうち「人のペア」、「２人より多くのクラスタ」または「赤ちゃんの顔」の特殊モードを含む多くを見つけた。
【０１４６】
特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は量子化演算子
【０１４７】
【数１７】
2019532445.tif 000021
【０１４８】
を学習することができ、ここで、
【０１４９】
【数１８】
2019532445.tif 000022
【０１５０】
はｎ次元のベクトルであり、
【０１５１】
【数１９】
2019532445.tif 000023
【０１５２】
は量子化インデックスであり、各量子化インデックスｋは、ｎ次元の量子化重心ｍｋに関連付けられている。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、クラスタリング・アルゴリズム（たとえば、ｋ平均法）で１組の量子化重心を学習することによって演算子ｃを学習し、量子化インデックス間の第１距離（たとえば、ハミング距離）が、対応する重心間の第２距離（たとえば、重心間距離）に近似するように、量子化重心のインデックスを割り当てる。特定の実施形態において、量子化は、直積量子化（ＰＱ）を含むことができる。限定ではなく例として、ソーシャル・ネットワーキング・システム１６０は、
【０１５３】
【数２０】
2019532445.tif 000024
【０１５４】
の複数のサブベクトル
【０１５５】
【数２１】
2019532445.tif 000025
【０１５６】
を決定することによって
【０１５７】
【数２２】
2019532445.tif 000026
【０１５８】
を計算し、各サブベクトルを複数のサブ量子化器ｃｎで量子化することができる。各サブ量子化器は、独立して各サブベクトルを量子化する。各サブ量子化器は、独立して訓練されていてもよい。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、
【０１５９】
【数２３】
2019532445.tif 000027
【０１６０】
を計算することによって、各オブジェクトｄｉに対応する各ベクトル
【０１６１】
【数２４】
2019532445.tif 000028
【０１６２】
を量子化することができる。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、
【０１６３】
【数２５】
2019532445.tif 000029
【０１６４】
を計算することによって、クエリｑを表すベクトル
【０１６５】
【数２６】
2019532445.tif 000030
【０１６６】
を量子化することができる。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、各オブジェクトｄｉについて、
【０１６７】
【数２７】
2019532445.tif 000031
【０１６８】
と
【０１６９】
【数２８】
2019532445.tif 000032
【０１７０】
との間の第１距離を計算することができる。限定ではなく例として、ソーシャル・ネットワーキング・システム１６０は、各オブジェクトｄｉについて、
【０１７１】
【数２９】
2019532445.tif 000033
【０１７２】
と
【０１７３】
【数３０】
2019532445.tif 000034
【０１７４】
との間のハミング距離を計算することができる。特定の実施形態において、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のオブジェクトｄｉについて、１つまたは量子化された複数のオブジェクトと量子化されたベクトルとの間の第１距離に基づいて、条件が満たされていると決定することができる。条件が満たされているとの決定に基づいて、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のオブジェクトに対応するベクトルとクエリを表すベクトルとの間の第２距離を、それぞれの対応する量子化重心に基づいて計算することができる。限定ではなく例として、ソーシャル・ネットワーキング・システム１６０は、１つまたは複数のオブジェクトに対応するベクトルとクエリを表すベクトルとの間の重心間距離を、それぞれの対応する量子化重心に基づいて計算することができる。本開示は、特定のベクトル、量子化器および距離を記述しているが、本開示は、任意の適切なベクトル、量子化器または距離を想定している。
【０１７５】
図９は、多義コードを使用して類似度検索を行うための例示的な方法９００を示す。この方法は、工程９１０で始めることができ、ソーシャル・ネットワーキング・システム１６０は、ｎ次元のベクトル空間のｎ次元のベクトルによって表されるクエリを受け取ることができる。工程９２０で、ソーシャル・ネットワーキング・システム１６０は、クエリを表すベクトルを量子化器を使用して量子化することができ、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている。工程９３０で、ソーシャル・ネットワーキング・システム１６０は、複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算することができる。工程９４０で、ソーシャル・ネットワーキング・システム１６０は、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの１つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定することができる。特定の実施形態は、適切な場合、図９の方法の１つまたは複数の工程を繰返すことができる。本開示は、図９の方法の特定の工程を特定の順序で発生したものとして記述し、図示しているが、本開示は、図９の方法の任意の適切な工程が任意の適切な順序で発生することを想定している。また、本開示は、図９の方法の特定の工程を含む多義コードを使用した類似度検索を行うための例示的な方法を記述し、図示しているが、本開示は、任意の適切な工程を含む多義コードを使用して類似度検索を行うための任意の適切な方法を想定しており、これらは、適切な場合、図９の方法の工程の全部、一部を含んでもよく、または図９の方法の工程を全く含まなくてもよい。さらに、本開示は、図９の方法の特定の工程を行う特定のコンポーネント、デバイス、またはシステムを記述し、図示しているが、本開示は、図９の方法の任意の適切な工程を行う任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組み合わせを想定している。
【０１７６】
ソーシャル・グラフ親和性および係数
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、様々なソーシャル・グラフ・エンティティの互いに対するソーシャル・グラフ・アフィニティ（本明細書では「アフィニティ」ということもある）を決定することができる。アフィニティは、オンライン・ソーシャル・ネットワークに関連付けられているユーザ、コンセプト、コンテンツ、アクション、広告、他のオブジェクト、またはその任意の適切な組合せなど、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強度または関心レベルを表すことができる。アフィニティは、サードパーティ・システム１７０または他の適切なシステムに関連付けられているオブジェクトに関しても決定されることができる。各ユーザ、主題またはコンテンツのタイプについて、ソーシャル・グラフ・エンティティの総合アフィニティが確立されることができる。総合アフィニティは、ソーシャル・グラフ・エンティティに関連付けられているアクションまたは関係の継続的な監視に基づいて変わることがある。本開示は、特定の様式で特定のアフィニティを決定することを説明しているが、本開示は、任意の適切な様式で任意の適切なアフィニティを決定することを企図する。
【０１７７】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、アフィニティ係数（本明細書では「係数」ということもある）を使用して、ソーシャル・グラフ・アフィニティを測定または定量化することができる。係数は、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強度を表すか、または定量化することができる。係数は、また、ユーザの特定のアクションへの関心に基づいて、ユーザがそのアクションを実行する確率を表すか、または予測される確率を測定する関数を表すことができる。このように、ユーザの将来のアクションはユーザの過去のアクションに基づいて予測されることができ、その係数は少なくとも部分的にユーザのアクションの履歴で計算されることができる。係数を使用して、オンライン・ソーシャル・ネットワーク内または外の任意の数のアクションを予測することができる。限定ではなく、例として、これらのアクションは、メッセージの送信、コンテンツの投稿もしくはコンテンツに対するコメントなどの様々なタイプの通信、プロフィール・インタフェース、メディアもしくは他の適切なコンテンツへのアクセスもしくはそれらの視聴などの様々なタイプの観察アクション、同じグループであること、同じ写真にタグ付けされること、同じロケーションにチェックインすること、もしくは同じイベントに出席することなど、２つ以上のソーシャル・グラフ・エンティティに関する様々なタイプの同時発生情報、または他の適切なアクションを含むことができる。本開示は、特定の様式でアフィニティを測定することを説明しているが、本開示は、任意の適切な様式でアフィニティを測定することを企図する。
【０１７８】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、係数を計算するために多様な因子を使用することができる。これらの因子には、たとえば、ユーザ・アクション、オブジェクト間の関係のタイプ、ロケーション情報、他の適切な因子、またはその任意の組合せを含むことができる。特定の実施形態においては、係数を計算するときに、異なる因子に異なる重みを付けることができる。各因子の重みは静的であってもよく、または、たとえば、ユーザ、関係のタイプ、アクションのタイプ、ユーザのロケーションなどに応じて、重みを変えてもよい。ユーザの総合的な係数を決定するために、因子のレーティングをその重みに応じて組み合わせることができる。限定ではなく、例として、特定のユーザ・アクションには、レーティングおよび重みの両方を割り当てることができるが、特定のユーザ・アクションに関連付けられている関係には、レーティングおよび相関する重み（たとえば、そのため、重みの合計は１００％）が割り当てられる。特定のオブジェクトに対するユーザの係数を計算するには、ユーザのアクションに割り当てられるレーティングが、たとえば、総合的な係数の６０％を占めることができ、ユーザとオブジェクトとの関係が、総合的な係数の４０％を占めることができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、係数を計算するために使用される様々な因子の重みを決定するとき、たとえば、情報にアクセスされてからの時間、減衰因子、アクセスの頻度、情報との関係もしくは情報がアクセスされたオブジェクトとの関係、オブジェクトとつながりのあるソーシャル・グラフ・エンティティとの関係、ユーザ・アクションの短期的もしくは長期的な平均、ユーザ・フィードバック、他の適切な変数、またはその任意の組合せなど、多様な変数を考慮することができる。限定ではなく、例として、係数は、特定のアクションが提供する信号の強度を時間の経過とともに減衰させる減衰因子を含むことができ、係数を計算するときに、より最近のアクションをより関連性があるようにする。レーティングおよび重みは、係数が根拠とするアクションの継続的な追跡に基づいて、継続的に更新することができる。各因子のレーティングと因子に割り当てられる重みとの割当て、組合せ、平均化などを行うために、任意のタイプのプロセスまたはアルゴリズムを採用することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、履歴アクションおよび過去のユーザの応答に基づいて訓練された機械学習アルゴリズム、またはユーザに様々なオプションを提示して応答を測定することによってユーザから集められたデータを使用して、係数を決定することができる。本開示は、特定の様式で係数を計算することを説明しているが、本開示は、任意の適切な様式で係数を計算することを企図する。
【０１７９】
特定の実施形態では、ソーシャル・ネットワーキング・システム１６０は、ユーザのアクションに基づいて係数を計算することができる。ソーシャル・ネットワーキング・システム１６０は、オンライン・ソーシャル・ネットワーク、サードパーティ・システム１７０、他の適切なシステム、またはその任意の組合せ上で、該アクションを監視することができる。任意の適切なタイプのユーザ・アクションを追跡または監視することができる。典型的なユーザ・アクションは、プロフィール・インタフェースを閲覧すること、コンテンツを作成もしくは投稿すること、コンテンツと対話すること、画像をタグ付けするもしくは画像にタグ付けされること、グループに参加すること、イベントへの参加をリスト化し確認すること、ロケーションでチェックインすること、特定のインタフェースに「いいね！」を表明すること、インタフェースを作成すること、および社会的活動を促す他のタスクを行うことを含む。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、特定のタイプのコンテンツを伴うユーザのアクションに基づいて係数を計算することができる。コンテンツは、オンライン・ソーシャル・ネットワーク、サードパーティ・システム１７０、または別の適切なシステムに関連付けられてもよい。コンテンツは、ユーザ、プロフィール・インタフェース、投稿、ニュース・ストーリ、ヘッドライン、インスタント・メッセージ、チャットルームの会話、Ｅメール、広告、写真、動画、音楽、他の適切なオブジェクト、またはその任意の組合せを含むことができる。ソーシャル・ネットワーキング・システム１６０はユーザのアクションを分析して、アクションのうちの１つまたは複数が、主題、コンテンツ、他のユーザなどに関するアフィニティを示すかどうかを決定することができる。限定ではなく、例として、ユーザが「コーヒー」またはその変異形に関係するコンテンツを頻繁に投稿する場合、ソーシャル・ネットワーキング・システム１６０は、ユーザが「コーヒー」コンセプトに対して高い係数を有すると決定することができる。特定のアクションまたは特定のタイプのアクションに、他のアクションよりも高い重みおよび／またはレーティングを割り当てることができ、それで総合的な係数の算出値に影響を与えることができる。限定ではなく、例として、第１のユーザが第２のユーザにＥメールを送信する場合、そのアクションに関する重みまたはレーティングは、第１のユーザが第２のユーザのユーザ・プロフィール・インタフェースを単に閲覧するだけの場合よりも高くすることができる。
【０１８０】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、特定のオブジェクト間の関係のタイプに基づいて、係数を計算することができる。ソーシャル・グラフ２００を参照して、ソーシャル・ネットワーキング・システム１６０は、係数を計算するときに、特定のユーザ・ノード２０２とコンセプト・ノード２０４とをつなげるエッジ２０６の数および／またはタイプを分析することができる。限定ではなく、例として、配偶者タイプのエッジ（２名のユーザが結婚していることを表す）によってつながっているユーザ・ノード２０２には、友達タイプのエッジによってつながっているユーザ・ノード２０２よりも高い係数を割り当てることができる。言い換えれば、特定のユーザのアクションと関係とに割り当てられる重みに応じて、総合アフィニティは、ユーザの友達に関するコンテンツよりもユーザの配偶者に関するコンテンツに対して高いと決定されることができる。特定の実施形態においては、ユーザが他のオブジェクトに対して有する関係が、そのオブジェクトの係数を計算することに関して、ユーザのアクションの重みおよび／またはレーティングに影響することができる。限定ではなく、例として、ユーザが第１の写真でタグ付けされるが、第２の写真には「いいね！」を表明しただけの場合、コンテンツに対してタグ付けタイプの関係を有することは、コンテンツに対して「いいね！」表明タイプの関係をもつよりも、高い重みおよび／またはレーティングを割り当てられることができるので、ソーシャル・ネットワーキング・システム１６０は、ユーザが第２の写真よりも第１の写真に関して高い係数を有すると決定することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、１人または複数の第２のユーザが特定のオブジェクトに対して有する関係に基づいて、第１のユーザの係数を計算することができる。言い換えれば、他のユーザがオブジェクトに対して有するつながりおよび係数が、そのオブジェクトに関する第１のユーザの係数に影響することができる。限定ではなく、例として、第１のユーザが１人または複数の第２のユーザとつながりがあるかまたはそれに関する係数が高く、その第２のユーザが特定のオブジェクトとつながりがあるかまたはそれに関する係数が高い場合、ソーシャル・ネットワーキング・システム１６０は、第１のユーザもその特定のオブジェクトに関して比較的高い係数を有するはずだと決定することができる。特定の実施形態においては、係数は、特定のオブジェクト間の分離度に基づくことができる。係数が低いほど、ソーシャル・グラフ２００において第１のユーザと間接的につながりのあるユーザのコンテンツ・オブジェクトに対して、第１のユーザが関心を共有する見込みが低いことを表すことができる。限定ではなく、例として、ソーシャル・グラフ２００においてより近くにある（すなわち、分離度が小さい）ソーシャル・グラフ・エンティティ同士は、ソーシャル・グラフ２００でより離れたエンティティ同士よりも、高い係数を有することができる。
【０１８１】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、ロケーション情報に基づいて係数を計算することができる。互いに地理的により近くにあるオブジェクトは、より遠くにあるオブジェクトよりも、互いにより関係があるかまたはより関心があると考えることができる。特定の実施形態において、特定のオブジェクトに対するユーザの係数は、ユーザに関連付けられている現在のロケーション（またはユーザのクライアント・システム１３０のロケーション）とオブジェクトのロケーションとの近さに基づくことができる。第１のユーザは、第１のユーザのより近くにある他のユーザまたはコンセプトに、より関心を抱くかもしれない。限定ではなく、例として、ユーザが空港から１．６１ｋｍ（１マイル）、給油所から３．２２ｋｍ（２マイル）のところにいる場合、ソーシャル・ネットワーキング・システム１６０は、ユーザに対する空港の近さに基づいて、ユーザは給油所よりも空港に関する係数が高いと決定することができる。
【０１８２】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、係数情報に基づいてユーザに関して特定のアクションを実行することができる。係数を使用して、ユーザが特定のアクションを行うかどうかを、ユーザのそのアクションへの関心に基づいて予測することができる。広告、検索結果、ニュース・ストーリ、メディア、メッセージ、通知、または他の適切なオブジェクトなど、任意のタイプのオブジェクトを生成するかまたはユーザに提示するときに、係数を使用することができる。係数はまた、該オブジェクトを、適切な場合、ランク付けまたは順位付けするために利用することができる。このように、ソーシャル・ネットワーキング・システム１６０は、ユーザの関心および現在の状況に関連する情報を提供することができるので、ユーザがそのように関心をもつ情報を見つける見込みが高まる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、係数情報に基づいてコンテンツを生成することができる。コンテンツ・オブジェクトは、ユーザに固有の係数に基づいて提供または選択されることができる。限定ではなく、例として、ユーザのためのメディアを生成するために係数を使用することができ、その場合、メディア・オブジェクトに関してユーザが高い総合的な係数を有するメディアをユーザに提示することができる。限定ではなく、別の例として、ユーザのための広告を生成するために係数を使用することができ、その場合、広告されるオブジェクトに関してユーザが高い総合的な係数を有する広告をユーザに提示することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、係数情報に基づいて検索結果を生成することができる。特定のユーザのための検索結果は、クエリ・ユーザに関する検索結果に関連付けられている係数に基づいて、スコアまたはランク付けすることができる。限定ではなく、例として、より高い係数を有するオブジェクトに対応する検索結果は、より低い係数を有するオブジェクトに対応する結果よりも、検索結果のインタフェース上で高いランク付けをすることができる。
【０１８３】
特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、特定のシステムまたはプロセスからの係数の要求に応答して、係数を計算することができる。ある所与の状況でユーザが取り得る（または対象になり得る）可能性の高いアクションを予測するために、任意のプロセスが、ユーザについての算出係数を要求することができる。要求は、係数を計算するために使用される様々な因子について使用する、１セットの重みも含むことができる。この要求は、オンライン・ソーシャル・ネットワーク上で実行しているプロセスから、サードパーティ・システム１７０（たとえば、ＡＰＩもしくは他の通信チャネルを経由して）から、または別の適切なシステムから来ることができる。要求に応答して、ソーシャル・ネットワーキング・システム１６０は係数を計算する（または、以前に計算されて記憶されている場合には、係数情報にアクセスする）ことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム１６０は、特定のプロセスに関するアフィニティを測定することができる。異なるプロセス（オンライン・ソーシャル・ネットワーク内および外の両方）が、特定のオブジェクトまたはオブジェクトのセットに関する係数を要求することができる。ソーシャル・ネットワーキング・システム１６０は、アフィニティの尺度を要求したその特定のプロセスに関連するアフィニティの尺度を提供することができる。このように、各プロセスは、プロセスがアフィニティの尺度を使用する異なる状況に合わせられたアフィニティの尺度を受け取る。
【０１８４】
ソーシャル・グラフ・アフィニティおよびアフィニティ係数に関連して、特定の実施形態では、それぞれを本願明細書に援用する２００６年８月１１日に出願された米国特許出願第１１／５０３０９３号明細書、２０１０年１２月２２日に出願された米国特許出願第１２／９７７０２７号明細書、２０１０年１２月２３日に出願された米国特許出願第１２／９７８２６５号明細書、および２０１２年１０月１日に出願された米国特許出願第１３／６３２８６９号明細書に開示された１つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、または工程を利用することができる。
【０１８５】
広告
特定の実施形態において、広告は、１つもしくは複数のウェブ・インタフェース上に提示されるか、１つもしくは複数のＥメールに提示されるか、またはユーザが要求する検索結果に関係して提示される、テキスト（ＨＴＭＬリンク付けすることができる）、１つもしくは複数の画像（ＨＴＭＬリンク付けすることができる）、１つもしくは複数の動画、音声、１つもしくは複数のＡＤＯＢＥ  ＦＬＡＳＨファイル、これらの適切な組み合わせ、または任意の適切なデジタル・フォーマットの任意の他の適切な広告とすることができる。追加としてまたは代替として、広告は、１つまたは複数のスポンサー記事（たとえば、ソーシャル・ネットワーキング・システム１６０上のニュース・フィードまたはティッカ・アイテム）とすることができる。スポンサー記事は、たとえば、ソーシャル・アクションをユーザのプロフィール・インタフェースもしくは他のインタフェースの所定のエリア内に提示させるか、広告主に関連付けられている追加情報とともに提示させるか、他のユーザのニュース・フィードもしくはティッカ内で上方に移動もしくはその他の形で強調表示させるか、またはその他の形で促進させることによって、広告主が促進する、ユーザによるソーシャル・アクションとすることができる（あるインタフェースに「いいね！」を表明すること、あるインタフェース上の投稿に「いいね！」を表明するかもしくはコメントすること、あるインタフェースに関連付けられているイベントに出欠の返事をすること、あるインタフェースに投稿されている質問に投票すること、ある場所にチェックインすること、アプリケーションを使用するかもしくはゲームをプレイすること、または、あるウェブサイトに「いいね！」を表明するかもしくはあるウェブサイトを共有すること）。広告主は、代金を払ってソーシャル・アクションを促進してもらうことができる。限定ではなく例として、広告は、検索結果インタフェースの検索結果の中に含むことができ、スポンサー付きコンテンツは、スポンサーのついていないコンテンツよりも促進される。
【０１８６】
特定の実施形態において、広告は、ソーシャル・ネットワーキング・システムのウェブ・インタフェース、サードパーティのウェブ・インタフェース、または他のインタフェース内への表示を要求することができる。広告は、インタフェースの最上部のバナー・エリア、インタフェースのサイドの欄、インタフェース内のＧＵＩ、ポップアップ・ウィンドウ、ドロップ・ダウン・メニュー、インタフェースの入力フィールド、インタフェースのコンテンツの上に重ねて、またはインタフェースに関する他の場所など、インタフェースの専用部分に表示することができる。追加としてまたは代替として、広告は、アプリケーション内に表示することができる。広告は、専用インタフェース内に表示することができ、ユーザがインタフェースにアクセスするかまたはアプリケーションを利用する前に、ユーザに、広告と対話するかまたは広告を見ることを要求する。ユーザは、たとえば、ウェブ・ブラウザを通じて広告を閲覧することができる。
【０１８７】
ユーザは、任意の適切な様式で広告と対話することができる。ユーザは、広告をクリックするかまたはその他の形で選択することができる。広告を選択することによって、ユーザ（またはユーザが使用しているブラウザもしくは他のアプリケーション）を、広告に関連付けられているインタフェースに導くことができる。広告に関連付けられているインタフェースで、ユーザは、広告に関連付けられている製品もしくはサービスを購入するか、広告に関連付けられている情報を受け取るか、または広告に関連付けられているニュースレターを購読するなど、追加のアクションを取ることができる。音声または動画付きの広告は、広告の構成要素（「再生ボタン」など）を選択することによって再生することができる。あるいは、広告を選択することによって、ソーシャル・ネットワーキング・システム１６０は、ユーザの特定のアクションを実行または修正することもできる。
【０１８８】
広告は、ユーザが対話できるソーシャル・ネットワーキング・システム機能も含むことができる。限定ではなく例として、広告は、推薦に関連付けられているアイコンまたはリンクを選択することによって、ユーザが広告に「いいね！」を表明するか、またはその他の形で広告を推薦できるようにすることができる。限定ではなく別の例として、広告は、広告主に関係するコンテンツを（たとえば、クエリを実行することによって）ユーザが検索できるようにすることができる。同様に、ユーザは、別のユーザと（たとえば、ソーシャル・ネットワーキング・システム１６０を通じて）広告を共有するか、または広告に関連付けられているイベントに（たとえば、ソーシャル・ネットワーキング・システム１６０を通じて）出欠の返事をすることができる。追加として、または代替として、広告は、ユーザに向けられるソーシャル・ネットワーキング・システムのコンテンツを含むことができる。限定ではなく例として、広告は、ユーザの、広告の主題に関連付けられているアクションをとったことのあるソーシャル・ネットワーキング・システム１６０内の友達に関する情報を表示することができる。
【０１８９】
プライバシー
特定の実施形態では、オンライン・ソーシャル・ネットワークのコンテンツ・オブジェクトのうちの１つまたは複数が、プライバシー設定に関連付けられ得る。オブジェクトに対するプライバシー設定（または「アクセス設定」）は、任意の適切な様式で、たとえば、オブジェクトに関連付けて、認可サーバ上のインデックスで、別の適切な様式で、または任意のそれらの組合せなどで、記憶され得る。オブジェクトのプライバシー設定は、オブジェクトまたはオブジェクトに関連付けられている特定の情報がオンライン・ソーシャル・ネットワークを使用してどのようにアクセス（たとえば、閲覧、または共有）され得るかを指定することができる。オブジェクトに対するプライバシー設定により、そのオブジェクトについて特定のユーザがアクセス、閲覧、または共有することが可能になる場合、オブジェクトは、そのユーザに対して「可視」であると説明され得る。一例として、限定としてではなく、オンライン・ソーシャル・ネットワークのユーザは、ユーザ・プロフィール・インタフェース上の職務経験情報にアクセスすることができるユーザのセットを識別する、ユーザ・プロフィール・インタフェースに対するプライバシー設定を指定することができ、したがって、他のユーザがその情報にアクセスすることを排除することができる。特定の実施形態では、プライバシー設定は、オブジェクトに関連付けられている特定の情報についてアクセスを許可されるべきでないユーザの「ブロック・リスト（ｂｌｏｃｋｅｄ  ｌｉｓｔ）」を指定することができる。言い換えれば、ブロック・リストは、オブジェクトが可視にされない１つまたは複数のユーザまたはエンティティを指定することができる。一例として、限定としてではなく、ユーザは、ユーザに関連付けられているフォト・アルバムにアクセスできないユーザのセットを指定することができ、したがって、それらのユーザがフォト・アルバムにアクセスすることを排除する（それとともに、場合によっては、そのユーザのセットの範囲外の特定のユーザがフォト・アルバムにアクセスすることを可能にする）。特定の実施形態では、プライバシー設定が特定のソーシャル・グラフ要素に関連付けられてよい。ノードまたはエッジのようなソーシャル・グラフ要素のプライバシー設定は、ソーシャル・グラフ要素、ソーシャル・グラフ要素に関連付けられている情報、またはソーシャル・グラフ要素に関連付けられているコンテンツ・オブジェクトが、オンライン・ソーシャル・ネットワークを使用してどのようにアクセス可能とされ得るかを指定することができる。一例として、限定としてではなく、特定の写真に対応する特定のコンセプト・ノード２０４は、写真においてタグ付けされたユーザおよびその友達によってのみ写真がアクセスされてよいことを指定する、プライバシー設定を有することができる。特定の実施形態では、プライバシー設定は、ユーザのアクションをソーシャル・ネットワーキング・システム１６０によってログを記録させること、または他のシステム（たとえばサードパーティ・システム１７０）によって共有させることに関して、ユーザがオプト・インまたはオプト・アウトすることを可能にすることができる。特定の実施形態���は、オブジェクトに関連付けられているプライバシー設定は、許可されるアクセスまたはアクセスの拒否の任意の適切な粒度を指定することができる。一例として、限定としてではなく、アクセス、またはアクセスの拒否は、特定のユーザ（たとえば、私のみ（ｏｎｌｙ  ｍｅ）、私のルームメイト、および私の上司）、特定の分離度の範囲内のユーザ（たとえば、友達（ｆｒｉｅｎｄｓ）、友達の友達（ｆｒｉｅｎｄｓ＿ｏｆ＿ｆｒｉｅｎｄｓ））、ユーザ・グループ（たとえば、ゲーム・クラブ、私の家族）、ユーザ・ネットワーク（たとえば、特定の雇用主の従業員、特定の大学の学生もしくは卒業生）、すべてのユーザ（「パブリック（ｐｕｂｌｉｃ）」）、ユーザ無し（「プライベート（ｐｒｉｖａｔｅ）」）、サードパーティ・システム１７０のユーザ、特定のアプリケーション（たとえば、サードパーティ・アプリケーション、外部ウェブサイト）、他の適切なユーザもしくはエンティティ、またはこれらの組合せに対して指定されてよい。本開示では特定のプライバシー設定を特定の様式で使用して説明しているが、本開示は任意の適切なプライバシー設定を任意の適切な様式で使用することを企図する。
【０１９０】
特定の実施形態では、１つまたは複数の認可／プライバシ・サーバが、オンライン・ソーシャル・ネットワークに関連付けられているオブジェクトに対する１つまたは複数のプライバシー設定を実装するために使用されてよい。認可サーバは、ソーシャル・ネットワーキング・システム１６０の１つまたは複数のサーバ１６２であってよい。データ・ストア１６４に記憶された特定のオブジェクトを求めるユーザから（または他のエンティティ）の要求に応答して、ソーシャル・ネットワーキング・システム１６０は、データ・ストア１６４にオブジェクトを求める要求を送ることができる。要求は、要求に関連付けられているユーザを識別することができ、認可サーバが、オブジェクトに関連付けられているプライバシー設定に基づいて、ユーザがオブジェクトにアクセスすることを認可されることを決定した場合、そのユーザ（またはユーザのクライアント・システム１３０）にのみ送られることが可能である。要求しているユーザがオブジェクトにアクセスすることを認可されない場合、認可サーバは、要求されたオブジェクトがデータ・ストア１６４から取り出されるのを防止することができ、または要求されたオブジェクトがユーザに送られるのを防止することができる。検索クエリのコンテキストにおいて、クエリ・ユーザがオブジェクトを閲覧またはアクセスすることを認可されない場合、オブジェクトは単に検索結果として生成されることが可能である。言い換えれば、オブジェクトは、クエリ・ユーザに可視である可視性を有しなければならない。オブジェクトがユーザに可視でない可視性を有する場合、オブジェクトは検索結果から除外されることが可能である。特定の実施形態では、ソーシャル・グラフ要素に対するプライバシー設定は、いくつかのノードおよびエッジを有するプライバシ・グラフとして表され得るデータ構造で記憶されてよい。プライバシ・グラフは、特定のソーシャル・グラフ要素の互いに対する可視性を、互いに対するそれらのつながりに基づいて表すことができる。データ・ストア１６４に記憶された特定の情報をユーザが要求したとき、プライバシ・グラフに関して動的に（たとえばリアルタイムで）フィルタリングを行うことにより、ソーシャル・グラフ要素のアクセス・コントロールが、要求しているユーザまたはエンティティに対して検証され認証され得る。本開示ではプライバシー設定を特定の様式で実装することを説明しているが、本開示はプライバシー設定を任意の適切な様式で実装することを企図する。  システムおよび方法
図１０は、例示的なコンピュータ・システム１０００を示している。特定の実施形態においては、１つまたは複数のコンピュータ・システム１０００が、本明細書において記述されているまたは示されている１つまたは複数の方法の１つまたは複数の工程を実行する。特定の実施形態においては、１つまたは複数のコンピュータ・システム１０００が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、１つまたは複数のコンピュータ・システム１０００上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている１つもしくは複数の方法の１つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、１つまたは複数のコンピュータ・システム５００の１つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、１つまたは複数のコンピュータ・システムを包含することができる。
【０１９１】
本開示は、任意の適切な数のコンピュータ・システム１０００を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム１０００を想定している。限定ではなく、例として、コンピュータ・システム１０００は、組み込みコンピュータ・システム、システムオンチップ（ＳＯＣ）、シングルボード・コンピュータ・システム（ＳＢＣ）（たとえば、コンピュータオンモジュール（ＣＯＭ）もしくはシステムオンモジュール（ＳＯＭ）など）、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末（ＰＤＡ）、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム１０００は、１つもしくは複数のコンピュータ・システム１０００を含むこと、単一型もしくは分散型であること、複数のロケーションにわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド（１つもしくは複数のネットワーク内の１つもしくは複数のクラウド・コンポーネントを含むことができる）内に常駐することが可能である。適切な場合には、１つまたは複数のコンピュータ・システム１０００は、本明細書において記述されているまたは示されている１つまたは複数の方法の１つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、１つまたは複数のコンピュータ・システム１０００は、本明細書において記述されているまたは示されている１つまたは複数の方法の１つまたは複数の工程をリアルタイムで、またはバッチ・モードで実行することができる。１つまたは複数のコンピュータ・システム１０００は、適切な場合には、本明細書において記述されているまたは示されている１つまたは複数の方法の１つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
【０１９２】
特定の実施形態においては、コンピュータ・システム１０００は、プロセッサ１００２、メモリ１００４、ストレージ１００６、入力／出力（Ｉ／Ｏ）インタフェース１００８、通信インタフェース１０１０、およびバス１０１２を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
【０１９３】
特定の実施形態においては、プロセッサ１００２は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ１００２は、内部レジスタ、内部キャッシュ、メモリ１００４、またはストレージ１００６から命令を取り出し（またはフェッチし）、それらの命令をデコードして実行し、次いで、１つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ１００４、またはストレージ１００６に書き込むことができる。特定の実施形態においては、プロセッサ１００２は、データ、命令、またはアドレスのための１つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ１００２を想定している。限定ではなく、例として、プロセッサ１００２は、１つまたは複数の命令キャッシュ、１つまたは複数のデータ・キャッシュ、および１つまたは複数の変換ルックアサイド・バッファ（ＴＬＢ）を含むことができる。命令キャッシュ内の命令は、メモリ１００４またはストレージ１００６内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ１００２によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ１００２において実行される命令が機能する際に基づくメモリ１００４もしくはストレージ１００６内のデータのコピー、プロセッサ１００２において実行される後続の命令によるアクセスのための、もしくはメモリ１００４もしくはストレージ１００６への書き込みのためのプロセッサ１００２において実行された以前の命令の結果、またはその他の適切なデータであることが可能である。データ・キャッシュは、プロセッサ１００２による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。ＴＬＢは、プロセッサ１００２のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ１００２は、データ、命令、またはアドレスのための１つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ１００２を想定している。適切な場合には、プロセッサ１００２は、１つまたは複数の演算ロジック・ユニット（ＡＬＵ）を含むこと、マルチコア・プロセッサであること、または１つもしくは複数のプロセッサ１００２を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
【０１９４】
特定の実施形態においては、メモリ１００４は、プロセッサ１００２が実行するための命令、またはプロセッサ１００２が機能する際に基づくデータを記憶するためのメイン・メモリを含む。限定ではなく、例として、コンピュータ・システム１０００は、命令をストレージ１００６または別のソース（たとえば、別のコンピュータ・システム１０００など）からメモリ１００４にロードすることができる。次いでプロセッサ１００２は、命令をメモリ１００４から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ１００２は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ１００２は、１つまたは複数の結果（それらは、中間の結果または最終的な結果である場合がある）を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ１００２は、それらの結果のうちの１つまたは複数をメモリ１００４に書き込むことができる。特定の実施形態においては、プロセッサ１００２は、（ストレージ１００６またはその他の場所ではなく）１つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ１００４内の命令のみを実行し、（ストレージ１００６またはその他の場所ではなく）１つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ１００４内のデータ上でのみ機能する。１つまたは複数のメモリ・バス（それらは各々、アドレス・バスおよびデータ・バスを含むことができる）は、プロセッサ１００２をメモリ１００４に結合することができる。バス１０１２は、以降で記述されているような１つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、１つまたは複数のメモリ管理ユニット（ＭＭＵ）が、プロセッサ１００２とメモリ１００４との間に常駐し、プロセッサ１００２によって要求されるメモリ１００４へのアクセスを容易にする。特定の実施形態においては、メモリ１００４は、ランダム・アクセス・メモリ（ＲＡＭ）を含む。このＲＡＭは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このＲＡＭは、ダイナミックＲＡＭ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）であることが可能である。その上、適切な場合には、このＲＡＭは、シングルポートＲＡＭまたはマルチポートＲＡＭであることが可能である。本開示は、任意の適切なＲＡＭを想定している。メモリ１００４は、適切な場合には、１つまたは複数のメモリ１００４を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
【０１９５】
特定の実施形態においては、ストレージ１００６は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ１００６は、ハード・ディスク・ドライブ（ＨＤＤ）、フロッピー（登録商標）ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ１００６は、適切な場合には、取り外し可能なまたは取り外し不能な（すなわち、固定された）媒体を含むことができる。ストレージ１００６は、適切な場合には、コンピュータ・システム１０００の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ１００６は、不揮発性のソリッドステート・メモリである。特定の実施形態においては、ストレージ１００６は、読み取り専用メモリ（ＲＯＭ）を含む。適切な場合には、このＲＯＭは、マスクプログラムＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気的書替え可能ＲＯＭ（ＥＡＲＯＭ）、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ１００６を想定している。ストレージ１００６は、適切な場合には、プロセッサ１００２とストレージ１００６との間における通信を容易にする１つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ１００６は、１つまたは複数のストレージ１００６を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
【０１９６】
特定の実施形態においては、Ｉ／Ｏインタフェース１００８は、コンピュータ・システム１０００と１つまたは複数のＩ／Ｏデバイスとの間における通信のための１つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム１０００は、適切な場合には、これらのＩ／Ｏデバイスのうちの１つまたは複数を含むことができる。これらのＩ／Ｏデバイスのうちの１つまたは複数は、人とコンピュータ・システム１０００との間における通信を可能にすることができる。限定ではなく、例として、Ｉ／Ｏデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、映像カメラ、別の適切なＩ／Ｏデバイス、またはこれらのうちの複数の組合せを含むことができる。Ｉ／Ｏデバイスは、１つまたは複数のセンサを含むことができる。本開示は、任意の適切なＩ／Ｏデバイス、およびそれらのＩ／Ｏデバイスのための任意の適切なＩ／Ｏインタフェース１００８を想定している。適切な場合には、Ｉ／Ｏインタフェース１００８は、プロセッサ１００２がこれらのＩ／Ｏデバイスのうちの１つまたは複数を駆動することを可能にする１つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。Ｉ／Ｏインタフェース１００８は、適切な場合には、１つまたは複数のＩ／Ｏインタフェース１００８を含むことができる。本開示は、特定のＩ／Ｏインタフェースについて記述し、示しているが、本開示は、任意の適切なＩ／Ｏインタフェースを想定している。
【０１９７】
特定の実施形態においては、通信インタフェース１０１０は、コンピュータ・システム１０００と、１つもしくは複数のその他のコンピュータ・システム１０００または１つもしくは複数のネットワークとの間における通信（たとえば、パケットベースの通信など）のための１つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース１０１０は、イーサネット（登録商標）もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ（ＮＩＣ）もしくはネットワーク・アダプタ、またはＷＩ−ＦＩネットワークなどの無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）もしくは無線アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース１０１０を想定している。限定ではなく、例として、コンピュータ・システム１０００は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク（ＰＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、またはインターネットの１つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの１つまたは複数の１つまたは複数の部分は、有線または無線であることが可能である。例として、コンピュータ・システム１０００は、無線ＰＡＮ（ＷＰＡＮ）（たとえば、ブルートゥース（登録商標）ＷＰＡＮなど）、ＷＩ−ＦＩネットワーク、ＷＩ−ＭＡＸネットワーク、セルラー電話ネットワーク（たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ（登録商標））ネットワークなど）、またはその他の適切な無線ネットワーク、またはこれらのうちの複数の組合せと通信することができる。コンピュータ・システム１０００は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース１０１０を含むことができる。通信インタフェース１０１０は、適切な場合には、１つまたは複数の通信インタフェース１０１０を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
【０１９８】
特定の実施形態においては、バス１０１２は、コンピュータ・システム１０００のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス１０１２は、アクセラレイティッド・グラフィックス・ポート（ＡＧＰ）もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ（ＥＩＳＡ）バス、フロントサイド・バス（ＦＳＢ）、ハイパートランスポート（ＨＴ）インターコネクト、インダストリー・スタンダード・アーキテクチャ（ＩＳＡ）バス、インフィニバンド・インターコネクト、ローピンカウント（ＬＰＣ）バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩｅ）バス、シリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル（ＶＬＢ）バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス１０１２は、適切な場合には、１つまたは複数のバス１０１２を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
【０１９９】
本明細書においては、１つまたは複数の非一時的なコンピュータ可読記憶媒体は、適切な場合には、１つもしくは複数の半導体ベースのもしくはその他の集積回路（ＩＣ）（たとえば、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）もしくは特定用途向け集積回路（ＡＳＩＣ）など）、ハード・ディスク・ドライブ（ＨＤＤ）、ハイブリッド・ハード・ドライブ（ＨＨＤ）、光ディスク、光ディスク・ドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー（登録商標）・ディスケット、フロッピー（登録商標）・ディスク・ドライブ（ＦＤＤ）、磁気テープ、ソリッドステート・ドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的なコンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的なコンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
【０２００】
その他
本明細書においては、「または（もしくは）」は、包含的であり、排他的ではない（ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く）。したがって、本明細書においては、「ＡまたはＢ」は、「Ａ、Ｂ、またはその両方」を意味する（ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く）。その上、「および（ならびに）」は、包括的および個別的の両方である（ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く）。したがって、本明細書においては、「ＡおよびＢ」は、「まとめて、または個別に、ＡおよびＢ」を意味する（ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く）。
【０２０１】
本開示の範囲は、当技術分野における標準的な技術者が理解するであろう、本明細書において記述されているまたは示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書において記述されているまたは示されている例示的な実施形態に限定されない。その上、本開示は、本明細書における各々の実施形態を、特定のコンポーネント、要素、特徴、機能、オペレーション、または工程を含むものとして記述し、示しているが、これらの実施形態のいずれも、当技術分野における標準的な技術者が理解するであろう、本明細書の任意の箇所において記述されているまたは示されているコンポーネント、要素、特徴、機能、オペレーション、または工程のうちの任意のものの任意の組合せまたは順列を含むことができる。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行することができる、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムのコンポーネントへの添付の特許請求の範囲における言及は、その装置、システム、コンポーネント、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、またはコンポーネントが、そうするように適合されている、そうするようにアレンジされている、そうすることができる、そうするように構成されている、そうすることを可能にされている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、コンポーネントを包含する。さらに、本開示では、特定の実施形態について特定の有利性が提供するものとして記述または図示しているが、特定の実施形態ではこのような有利性が提供されなくてもよく、または、そのいくつかまたはすべての有利性が提供されてもよい。
【図１】
2019532445.tif 000037
【図２】
2019532445.tif 000038
【図３】
2019532445.tif 000039
【図４】
2019532445.tif 000040
【図５】
2019532445.tif 000041
【図６】
2019532445.tif 000042
【図７】
2019532445.tif 000043
【図８】
2019532445.tif 000044
【図９】
2019532445.tif 000045
【図１０】
2019532445.tif 000046
【国際調査報告】
2019532445.tif 000047
2019532445.tif 000048