IP Library Patent Application 15393926
Patent Application
App. No. 15/393,926

Similarity Search Using Polysemous Codes

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
15/393,926
Abstract

In one embodiment, a method includes receiving a query, wherein the query is represented by an n-dimensional vector in an n-dimensional vector space; quantizing the vector representing the query using a quantizer, wherein the quantized vector corresponds to a polysemous code, and wherein the quantizer has been trained by machine learning to determine polysemous codes such that the Hamming distance approximates the inter-centroid distance using an objective function; calculating, for each of a plurality of content objects, a Hamming distance between the polysemous code corresponding to the vector representing the query and a polysemous code corresponding to a quantized vector representing the content object; and determining that a content object of the plurality of content objects is an approximate nearest neighbor to the query based on determining that the calculated Hamming distance is less than a threshold amount.

Claims (84)

1 . A method comprising, by a computing device:

receiving a query, wherein the query is represented by an n-dimensional vector in an n-dimensional vector space;

quantizing the vector representing the query using a quantizer, wherein the quantized vector corresponds to a polysemous code, and wherein the quantizer has been trained by machine learning to determine polysemous codes such that the Hamming distance approximates the inter-centroid distance using an objective function;

calculating, for each of a plurality of content objects, a Hamming distance between the polysemous code corresponding to the vector representing the query and a polysemous code corresponding to a quantized vector representing the content object; and

determining that a content object of the plurality of content objects is an approximate nearest neighbor to the query based on determining that the calculated Hamming distance between the polysemous code corresponding to the vector representing the query and the polysemous code corresponding to the vector representing the content object is less than a threshold amount.

2 . The method of claim 1 , further comprising dividing the vector representing the query into a plurality of subvectors representing the query, wherein:

quantizing the vector representing the query comprises quantizing each of the plurality of subvectors representing the query using a plurality of subquantizers, each quantized subvector corresponding to a polysemous code;

each subquantizer has been trained by machine learning to determine polysemous codes such that the Hamming distance approximates the inter-centroid distance using an objective function; and

the Hamming distance between the polysemous code corresponding to the vector representing the query and the polysemous code corresponding to the quantized vector representing the content object is calculated based on a plurality of Hamming distances between each polysemous code corresponding to each respective subvector representing the query and each of a plurality of respective polysemous codes corresponding to respective quantized subvectors representing the content object.

3 . The method of claim 2 , wherein each of the subquantizers is distinct from each other subquantizer of the plurality of subquantizers.

4 . The method of claim 2 , wherein each of the plurality of quantized subvectors representing the content object are quantized using the corresponding subquantizer.

5 . The method of claim 1 , wherein a Hamming distance between a first polysemous code and a second polysemous is calculated as the number of bits which differ between the first polysemous code and the second polysemous code.

6 . The method of claim 1 , wherein a Hamming distance between a first polysemous code and a second polysemous code is calculated based on a pre-generated lookup table.

7 . The method of claim 1 , wherein the quantizer uses k-means clustering.

8 . The method of claim 1 , where in the objective function is argmax π Σ i∈J, j∈J [h(π(i), π(j))−f(d(c i , c j ))] 2 , wherein:

J is a set of centroid indexes;

c i is a reproduction value associated with centroid i;

the function π maps each centroid index to a different vertex of a unit hypercube;

h(π(i), π(j)) is a Hamming distance between π(i) and π(j);

d(c i , c j ) is the distance between c i and c j ; and

the function f is a monotonously increasing function that maps d(c i , c j ) into a range of comparable Hamming distances.

9 . The method of claim 8 , wherein the function

f

is

f

(

x

)

=

d

2

σ

(

x

-

μ

)

+

d

2

,

wherein:

μ is an empirically measured mean of d; and

σ is an empirically measured standard deviation of d.

10 . The method of claim 1 , wherein the objective function is argmax π Σ i∈J, j∈J w (f(d(c i , c j ))) [h(π(i), (j))−f (d(c i , c j ))] 2 , wherein:

J is a set of centroid indexes;

c i is a reproduction value associated with centroid i;

the function π maps each centroid index to a different vertex of a unit hypercube;

h(π(i), π(j)) is a Hamming distance between π(i) and π(j);

d (c i , c j ) is the distance between c i and c j ;

the function f is a monotonously increasing function that maps d(c i , c j ) into a range of comparable Hamming distances;

the function w is the function w(u)=a u with a<1.

11 . The method of claim 1 , further comprising sending one or more content objects determined to be approximate nearest neighbors to the query to the first user in response to the query.

12 . The method of claim 1 , wherein each of the content objects comprises an image.

13 . The method of claim 1 , wherein the received query comprises a query image, the method further comprising:

generating the n-dimensional vector representing the query image.

14 . The method of claim 13 , wherein the query corresponds to a request for images similar to the query image.

15 . The method of claim 1 , wherein each of the content objects comprises a video.

16 . The method of claim 1 , wherein the received query comprises a query video, the method further comprising:

generating the n-dimensional vector representing the query video.

17 . The method of claim 1 , further comprising accessing a social graph comprising a plurality of nodes and a plurality of edges connecting the nodes, each of the edges between two of the nodes representing a single degree of separation between them, the nodes comprising:

a first node corresponding to the first user; and

a plurality of second nodes corresponding to the plurality of content objects, respectively.

18 . One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

receive a query, wherein the query is represented by an n-dimensional vector in an n-dimensional vector space;

quantize the vector representing the query using a quantizer, wherein the quantized vector corresponds to a polysemous code, and wherein the quantizer has been trained by machine learning to determine polysemous codes such that the Hamming distance approximates the inter-centroid distance using an objective function;

calculate, for each of a plurality of content objects, a Hamming distance between the polysemous code corresponding to the vector representing the query and a polysemous code corresponding to a quantized vector representing the content object; and

determine that a content object of the plurality of content objects is an approximate nearest neighbor to the query based on determining that the calculated Hamming distance between the polysemous code corresponding to the vector representing the query and the polysemous code corresponding to the vector representing the content object is less than a threshold amount.

19 . The media of claim 18 , wherein the software is further operable when executed to divide the vector representing the query into a plurality of subvectors representing the query, wherein:

quantizing the vector representing the query comprises quantizing each of the plurality of subvectors representing the query using a plurality of subquantizers, each quantized subvector corresponding to a polysemous code;

each subquantizer has been trained by machine learning to determine polysemous codes such that the Hamming distance approximates the inter-centroid distance using an objective function; and

the Hamming distance between the polysemous code corresponding to the vector representing the query and the polysemous code corresponding to the quantized vector representing the content object is calculated based on a plurality of Hamming distances between each polysemous code corresponding to each respective subvector representing the query and each of a plurality of respective polysemous codes corresponding to respective quantized subvectors representing the content object.

20 . A system comprising: one or more processors; and a non-transitory memory coupled to the processors comprising instructions executable by the processors, the processors operable when executing the instructions to:

receive a query, wherein the query is represented by an n-dimensional vector in an n-dimensional vector space;

quantize the vector representing the query using a quantizer, wherein the quantized vector corresponds to a polysemous code, and wherein the quantizer has been trained by machine learning to determine polysemous codes such that the Hamming distance approximates the inter-centroid distance using an objective function;

calculate, for each of a plurality of content objects, a Hamming distance between the polysemous code corresponding to the vector representing the query and a polysemous code corresponding to a quantized vector representing the content object; and

determine that a content object of the plurality of content objects is an approximate nearest neighbor to the query based on determining that the calculated Hamming distance between the polysemous code corresponding to the vector representing the query and the polysemous code corresponding to the vector representing the content object is less than a threshold amount.

Assignments (2)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2019
From: DOUZE, MATTHYS; JEGOU, HERVÉ; PERRONNIN, FLORENT
To: FACEBOOK, INC.
Reel/Frame 049423/0803 →