Language is a representation of our world and so is perception - both language and vision are trying to solve the same problem.We saw in section that a prediction task can be used to learn a representation of a word - recall we are predicting the words that are frequent closeby. This type of task is called a pretext task. The idea is that if we learn a prediction task that dependents on a representation and our predictions are correct, then we have learned a good representation.This is a very general idea and it applies to many different domains. For example, in vision, we can use a pretext task to learn a representation of an image by predicting the pixels in the image. This is called self-supervised learning because we are using the data itself to supervise the learning process.Learning under these settings
In NLP labeled data for representation learning are plentiful but in computer vision they are quite scarce. When we don’t have labeled targets we try to create virtual targets out of the raw data itself. This idea is called self-supervision. It looks like this:where V1 and V2 are two different functions of the full data
tensorX. For example, V1 might be the left side of the
image X and V2 could be the right side, so the pretext
task is to predict the right side of an image from its left side. In
fact, several of the examples we gave previously for predictive learning
are of the self-supervised variety: supervision for predicting a future
frame, or a next pixel, can be cooked up just by splitting a video into
past and future frames, or splitting an image into previous and next
pixels in a raster-order sequence.
Dimensionality reduction and clustering algorithms learn compressed representations by creating an information bottleneck, that is, by constraining the number of bits available in the representation. An alternative compression strategy is to supervise what information should be thrown away. Contrastive learning is one such approach where a representation is supervised to be invariant to certain viewing transformations, resulting in a compressed representation that only captures the properties that are common between the different data views. Two different data views could correspond to two different cameras looking at the same scene or two different imaging modalities, such as color and depth, and we will see more examples subsequently.
Contrastive learning is actually more closely related to clustering than it may at first seem. Contrastive learning maps similar datapoints to similar embeddings. Clustering is just the extreme version of this where there are only k distinct embeddings and similar datapoints get mapped to the exact same embedding.
Learning invariant representations is classic goal of computer vision.
Recall that this was one of the reasons we used convolutional image
filters: convolution is equivariant with camera translation, and
invariance can then be achieved simply by pooling over filter responses.
CNNs, through their convolutional architecture, bake translation
invariance into the hypothesis space. In this section we will see how
to incentivize invariances instead through the objective function.The idea is to simply penalize deviations from the invariance we want.
Suppose T is a transformation we wish our representation to be
invariant to. Then we may use a loss of the form
∥f(T(x))−f(x)∥22 to learn an
encoder f that is invariant to T. We call such a loss an
alignment loss (Wang & Isola, 2020).That seems easy enough, but you may have noticed a flaw: What if f
just learns to output the zero vector all the time? Trivial alignment
can be achieved when there is representational collapse, and all
datapoints get mapped to the same arbitrary vector.Contrastive learning fixes this issue by coupling an alignment loss with
a second loss that pushes apart embeddings of datapoints for which we do
not want an invariant representation. The supervision for contrastive
learning comes in the form of positive pairs and negative pairs.
Positive pairs are two datapoints we wish to align in z-space; if we
wish for invariance to T then a positive pair should be constructed as
{x,x+} with x+=T(x).
Negative pairs, {x,x−}, are two datapoints that
should be represented differently in z-space. Commonly, negative pairs
are randomly constructed by sampling two datapoints independently and
identically from the same data distribution, that is,
x∼pdata(x) and
x−∼pdata(x). Given such data
pairings, the objective is to pull together the positive pairs and push
apart the negative pairs, as illustrated in
figure.This kind of contrastive learning results in an embedding that is
invariant to a transformation T. Extending this to achieve invariance
to a set of transformations {T1,…,Tn} is straightforward:
just apply the same loss for each of T1,…,Tn.A second kind of contrastive learning is based on co-occurrence, where
the goal is to learn a common representation of all co-occurring
signals. This form of contrastive learning is useful for learning, for
example, an audiovisual representation where the embedding of an image
matches the embedding of the sound for that same scene. Or, returning to
our colorization example, we can learn an image representation where the
embedding of the grayscale channels matches the embedding of the color
channels. In both these cases we are learning to align co-occurring
sensory signals. This kind of contrastive learning is schematized in
figure.In figure, we
refer to the two co-occurring signals---color and grayscale---as two
different views of the total data tensor X, just like we
did in the previous sections: x=V1(X),
y=V1(X). You can think of these views either as
resulting from sensory co-occurrences or as two transformations of
X, where the transformation in the color example is channel
dropping. Thus, the two kinds of contrastive learning we have presented
are really one and the same: any two signals can be considered
transformations of a combined total signal, and any signal and its
transformation can be considered two co-occurring ways of measuring the
underlying world.Nonetheless, it is often easiest to conceptualize these two approaches
separately, and next we give learning diagrams for each:In these diagrams, D is a distance function. Above we give just one
simple form for the contrastive objective; many variations have been
proposed. Three of the most popular are (1) Hadsell et al.’s
“constrastive loss” (Hadsell et al., 2006) (an older definition of
the term, now overloaded with our more general notion of a contrastive
loss being the broader family of any loss that pulls together positive
samples and pushes apart negative samples), (2) the triplet loss
(Chechik et al., 2010), and (3) the InfoNCE loss (van den Oord et al., 2018).
Hadsell et al.’s contrastive loss and the triplet loss add the concept
of a margin to the vanilla formulation: they only push/pull when the
distance is less than a specified amount m (called the margin),
otherwise points are considered far enough apart (or close enough
together). The InfoNCE loss is a variation that treats establishing a
contrast as a classification problem: it tries to move points apart
until you can classify the positive sample, for a given anchor,
separately from all the negatives. The general formulation of these
losses takes as input an anchor x, a positive example
x+, and one or more negative examples x−. The
positive and negative may be defined based on transformations,
coocurrences, or something else. The full learning objective is to sum
over many samples of anchors, positives, and negatives, producing a
sampled set evaluated according to the losses as follows:L(x,x+,x−)L(x,x+,x−)L(x,x+,{xi−}i=1N)=max(D(f(x),f(x+)−mpos,0)−max(mneg−D(f(x),f(x−),0)◃Hadsell et al. contrastive=max(D(f(x),f(x+))−D(f(x),f(x−))+m,0)◃triplet=−logef(x)Tf(x+)/τ+∑ief(x)Tf(xi−)/τef(x)Tf(x+)/τ◃InfoNCENotice that the InfoNCE loss is a log softmax
over a vector of scores f1(x)Tf2(c)/τ with
c∈{x+,x1−,…,xN−}; you
can therefore think of this loss as corresponding to a classification
problem where the ground truth class is x+ and the other
possible classes are {x1−,…,xN−} (refer
to section to revisit softmax
classification).
Wang and Isola (Wang & Isola, 2020) showed that the contrastive loss
(specifically the InfoNCE form) encourages two simple properties of the
embeddings: alignment and uniformity. We have already seen that
alignment is the property that two views in a positive pair will map to
the same point in embedding point, that is, the mapping is invariant to
the difference between the views. Uniformity comes from the negative
term, which encourages embeddings to spread out and tend toward an
evenly spread, uniform distribution. Importantly, for this to work out
mathematically, the embeddings must be normalized, that is, each
embedding vector must be a unit vector. Otherwise, the negative term can
push embeddings toward being infinitely far apart from each other.
Fortunately, it is standard practice in contrastive learning (and many
other forms of representation learning) to apply L2 normalization to
the embeddings. The result is that the embeddings will tend toward a
uniform distribution over the surface of the M-dimensional
hypersphere, where M is the dimensionality of the embeddings. See
theorem 1 in (Wang & Isola, 2020) for a formal statement of this fact.A result of this analysis is we may explicit decompose contrastive
learning into one loss for alignment and another for uniformity, with
the following forms:Lalign(f;α)Lunif(f;t)L(f;α,t,λ)=E(x,x+)∼ppos[f(x)−f(x+)2α]=logEx∼pdata,x−∼pdata[e−t∥f(x)−f(x−)∥22]=Lalign(f;α)+λLunifwhere ppos is the distribution of positive
pairs and α, t, and λ are hyperparameters of the
losses.
Here, we use the pretext task idea on a supervisory signal of the natural language to create a representation of the scene it describes.CLIP is a contrastive method (see
section) in which
one data view is the image and the other is a caption describing the
image. Specifically, CLIP is a form of contrastive learning from
co-occurring visual and linguistic views that is formulated as follows:where ℓ represents an image, t represents
text, Sdz represents the space of unit vectors of
dimensionality dz (i.e., the surface of the [dz−1]-dimensional
hypersphere), fℓ is the image encoder, ft is the text
encoder, image inputs are represented as [3×N×M] pixel
arrays, text inputs are represented as dt dimensional tokens, and
dz is the embedding dimensionality. Notice that the objective is a
symmetric version of the InfoNCE loss defined in
equation. Also notice that fℓ and
ft both output unit vectors (which is achieved using
L2-normalization before computing the objective); this ensures that
the denominator cannot dominate by pushing negative pairs infinitely far
apart.
The idea of visual learning by image captioning actually has a
long history before CLIP. One important early paper on this topic is
(Ordonez et al., 2011).
figure visually depicts how CLIP is
trained. First we sample a batch of N language-image pairs,
{t(i),ℓ(i)}i=1N (N=6 in the
figure). Next we embed measure the dot product between all these text
strings and images using a language encoder ft and an image encoder
fℓ, respectively. This produces a set of text embeddings
{zt(i)}i=1N and a set of image embeddings
{zℓ(i)}i=1N. To compute the loss, we take the
dot product zℓ(i)⋅zt(j) for all
i,j∈{1,…,6}. Terms for which i=j are the negative
pairs and we seek to minimize these dot products (denominator of the
loss); terms for which i==j are the positive pairs and we seek to
maximize these dot product (they appear in both the numerator and
denominator of the loss).After training, we have a text encoder ft and an image encoder
fℓ that map to the same embedding space. In this space, the angle
between a text embedding and an image embedding will be small if the
text matches the matches.
The dot product between
unit vectors is proportional to the angle between the
vectors.
figure shows how a
trained CLIP model maps data to embeddings. This figure is generated in
the same way as figure: for each encoder we
reduce dimensionality for visualization using t-distributed Stochastic
Neighbor Embedding (t-SNE) (van der Maaten & Hinton, 2008). For the image encoder, we show
the visual content using icons to reflect the color and shape depicted
in the image (we previously used the same visualization in section).It’s a bit hard to see, but one thing you can notice here is that for
the image encoder, the early layers group images by color and the later
layers group more by shape. The opposite is true for the text encoder.
Why do you think this is? One reason may be that color is a superficial
feature in pixel-space while shape requires processing to extract, but
in text-space, color words and shape words are equally superficial and
easy to group sentences by.After passing the data through these two encoders, the final stage is to
normalize the outputs and compute the alignment between the image and
text embeddings. figure shows
this last step. After normalization, all the embeddings line on the
surface of a hypersphere (the circle in the figure). Notice that the
text descriptions are embedded near the image embeddings (icons) that
match that description. It’s not perfect but note that this is partially
due to limitations in the visualization, which projects the
768-dimensional CLIP embeddings into a 2D visualization. Here we use
kernel principle component analysis (Schölkopf et al., 1998) on the
embeddings, with a cosine kernel, and remove the first principle
component as that component codes for a global offset between the image
embeddings and text embeddings.Using language as one of the views may seem like a minor variation on
the contrastive methods we saw previously, but it’s a change that opens
up a lot of new possibilities. CLIP connects the domain of images to the
domain of language. This means that many of the powerful abilities of
language become applicable to imagery as well. One ability that the CLIP
paper showcased is making a novel image classifier on the fly. With
language, you can describe a new conceptual category with ease. Suppose
I want a classifier to distinguish striped red circles from polka dotted
green squares. These classes can be described in English just like that:
“striped red circles” versus “polka dotted green square.” CLIP can then
leverage this amazing ability of English to compose concepts and
construct an image classifier for these two concepts.Here’s how it works. Given a set of sentences
{ta,tb,…} that describe images of
classes a, b, and so on,
Embed each sentence into a z-vector,
zta=ft(ta),ztb=ft(ta),
and so on.
Embed your query image into a z-vector,
zℓq=fℓ(ℓq).
See which sentence embedding is closest to your image embedding;
that’s the predicted class.
These steps are visualized in figure.
The green outlined dot product is the highest, indicating that the query
image will be classified as class a, which is defined as “striped red
circles.”figure gives more examples of creating
custom binary classifiers in this way. The two classes are described by
two text strings (“triangle” versus “cricle”; “purple” versus “teal”;
and “arrowhead” versus “ball”). The embeddings of the text descriptions
are the red and green vectors. The classifier simply checks where an
image embedding is closer, in angular distance, to the red vector or the
green vector. This approach isn’t limited to binary classification: you
can add more text vectors to partition the space in more ways.
Making custom classifiers using CLIP. (a) Image embeddings in joint embedding space, (b) triangle-circle classifier, (c) purple-teal classifier, and (d) arrowhead-ball classifier.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"aegean.ai","description":"Engineering AI Agents - Comprehensive courses on deep learning, computer vision, robotics, and AI systems","colors":{"primary":"#2196C8","light":"#5CADD8","dark":"#1565B0"},"logo":{"light":"https://mintcdn.com/aegeanaiinc/ai8d4zdsUnwq_5J6/logo.png?fit=max\u0026auto=format\u0026n=ai8d4zdsUnwq_5J6\u0026q=85\u0026s=fe5e281c1569f8468ff85157bd7d9dc3","dark":"https://mintcdn.com/aegeanaiinc/ai8d4zdsUnwq_5J6/logo-dark.png?fit=max\u0026auto=format\u0026n=ai8d4zdsUnwq_5J6\u0026q=85\u0026s=6a455ae676293280c72ec43f2ac544b4","href":"/"},"favicon":"https://mintcdn.com/aegeanaiinc/0dr6ajwzGFHGACv0/favicon.png?fit=max\u0026auto=format\u0026n=0dr6ajwzGFHGACv0\u0026q=85\u0026s=c0348644679947ce971abb8037adb632","appearance":{"default":"system","strict":false},"navbar":{"links":[{"href":"https://github.com/aegean-ai","label":"GitHub"},{"href":"https://www.linkedin.com/company/aegean-ai/","label":"LinkedIn"}]},"footer":{"socials":{"github":"https://github.com/aegean-ai","linkedin":"https://www.linkedin.com/company/aegean-ai","x":"https://x.com/aegeanai"},"links":[{"header":"Products","items":[{"label":"Auraison","href":"https://n8n.aegeanai.com"}]},{"header":"Courses","items":[{"label":"AI Foundations","href":"/courses/ai/index"},{"label":"Computer Vision","href":"/courses/cv/index"},{"label":"Robotics","href":"/courses/robotics/index"}]},{"header":"Resources","items":[{"label":"Use These Docs","href":"/use-these-docs"},{"label":"GitHub","href":"https://github.com/aegean-ai"},{"label":"Blog","href":"/blog"},{"label":"RSS Feed","href":"/rss.xml"}]},{"header":"Company","items":[{"label":"About","href":"/about"},{"label":"Careers","href":"/careers/virtual-internships/index"},{"label":"Contact","href":"https://forms.gle/W3z4NTC883mNY5Kr8"},{"label":"Privacy Policy","href":"/privacy"}]}]},"styling":{"eyebrows":"section","latex":true},"integrations":{"ga4":{"measurementId":"G-EHRC22H65X"},"posthog":{"apiKey":"phc_J5w6esvspb1vh8O3MegWoaUYiq1zzWYuv7GTfjgui6F","sessionRecording":true}},"contextual":{"options":["claude","perplexity","mcp","cursor","vscode",{"title":"Report an issue","description":"Tell us about an error on this page","icon":"bug","href":{"base":"https://github.com/aegean-ai/eaia-feedback/issues/new","query":[{"key":"template","value":"page-issue.yml"},{"key":"page","value":"$path"}]}}],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aegeanaiinc","hasAudioNarration":false,"actualSubdomain":"aegeanaiinc","customDomains":["aegean.ai"],"gitSource":{"type":"github","owner":"aegean-ai","repo":"eaia","deployBranch":"prod","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad92a50d495d58d39db645f","collectionId":"95d0db87-6d4e-467e-b329-8939d6748db9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad92a50d495d58d39db645f"},"feedback":{"agentFeedback":true},"entitlements":{},"buildId":"6ad92a50d495d58d39db645f","clientVersion":"0.0.3918","searchFilterCounts":[{"language":"default","tag":"Book","count":266},{"language":"default","tag":"Perception","count":55},{"language":"default","tag":"Products","count":52},{"language":"default","tag":"Courses","count":42},{"language":"default","tag":"Applications","count":39},{"language":"default","tag":"Robotics Systems","count":29},{"language":"default","tag":"Manufacturing QC","count":27},{"language":"default","tag":"LLM","count":24},{"language":"default","tag":"Foundations","count":22},{"language":"default","tag":"Physical AI","count":21}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"teamspace","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"[class*=Header],[class*=Navbar],[class*=header],[class*=navbar],header,nav{padding-top:1.5rem!important;padding-bottom:1.5rem!important}[class*=Brand] img,[class*=Logo] img,[class*=brand] img,[class*=logo] img,a[href=\"/\"] img:first-child,a[href=\"/\"]>img,header img[alt*=logo i],header img[src*=logo i],nav img[alt*=logo i],nav img[src*=logo i]{height:40px!important;max-height:40px!important;width:auto!important}#navbar #sidebar-title,[class*=SiteName],[class*=site-name],[class*=siteName],a[href=\"/\"]>span,header #sidebar-title,header [class*=Logo] span,header [class*=brand] span,header [class*=logo] span,nav [class*=Logo] span,nav [class*=logo] span{font-size:1.35rem!important;font-weight:600!important}a code,a[href] code{color:inherit!important;text-decoration:none!important;padding:0!important}.callout a,.callout b,.callout em,.callout i,.callout p,.callout strong,[class*=callout] a,[class*=callout] b,[class*=callout] em,[class*=callout] i,[class*=callout] p,[class*=callout] strong{font-size:inherit!important;color:inherit!important}.callout li,.callout ol,.callout ul,[class*=callout] li,[class*=callout] ol,[class*=callout] ul{font-size:inherit!important;color:inherit!important;line-height:inherit!important}.mermaid{text-align:center;display:flex;justify-content:center}.mermaid .labelBkg{background-color:#fff!important;border:1px solid #2f6868!important;border-radius:4px!important;padding:0 4px!important}.mermaid .labelBkg:not(:has(p)){display:none!important}.mermaid .edgeLabel{color:#1c3c3c!important}.dark .mermaid .labelBkg{background-color:#1c3c3c!important;border-color:#84c4c0!important}.dark .mermaid .edgeLabel{color:#84c4c0!important}.mermaid .node circle,.mermaid .node polygon,.mermaid .node rect{fill:none!important;stroke:#9ca3af!important;stroke-width:2px!important;rx:12px;ry:12px;transition:stroke .2s ease,filter .2s ease,stroke-width .2s ease}.mermaid .node .nodeLabel,.mermaid .node .nodeLabel p{font-family:inherit!important}.mermaid .node .nodeLabel p{color:#fff!important}.mermaid .node:hover circle,.mermaid .node:hover polygon,.mermaid .node:hover rect,.mermaid a:hover .node circle,.mermaid a:hover .node polygon,.mermaid a:hover .node rect{stroke:#2196c8!important;stroke-width:3px!important;filter:drop-shadow(0 0 8px rgba(33,150,200,.5));cursor:pointer}.mermaid .cluster rect{rx:12px!important;ry:12px!important}.content table td,.content table th,.markdown table td,.markdown table th,.prose table td,.prose table th,[class*=prose] table td,[class*=prose] table th,article table td,article table th{vertical-align:middle!important;line-height:1.5!important}#pagination{display:none}#banner a{color:inherit!important;text-decoration:none!important}.compact-first-col [data-table-wrapper]{overflow-x:visible!important}.compact-first-col table{table-layout:auto!important;width:100%!important}.compact-first-col table td,.compact-first-col table th{min-width:0!important}.compact-first-col table td:first-child,.compact-first-col table th:first-child{width:1%!important;white-space:nowrap!important}.home-page~:is(.callout, [data-callout-type]){display:none!important}#sidebar .sidebar-group-header,#sidebar button[class*=group],#sidebar-content .sidebar-group-header,#sidebar-content button,.sidebar-group-header,[class*=SidebarGroupHeader],[class*=sidebar-group-header],[class^=sidebar_group]>button,[class^=sidebar_group]>div:first-child,aside button{font-size:14px!important;font-weight:400!important;letter-spacing:normal!important;line-height:1.4!important;padding-top:.5rem!important;padding-bottom:.25rem!important;margin:0!important;text-transform:none!important}.sidebar-group:first-child .sidebar-group-header{padding-top:0!important}.sidebar-nav-group-divider{display:none!important}.sidebar-group{margin:0!important;padding:0!important}#sidebar-content{gap:0!important}#sidebar svg,.sidebar-group svg{width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important}.sidebar-group-header svg,.sidebar-group-icon svg{width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important}.dark .prose img,.dark [class*=Frame] img,.dark article img,.dark figure img{background-color:#f8f9fa!important;border-radius:8px!important;padding:12px!important}.dark .prose img.no-dark-bg,.dark article img.no-dark-bg,.dark img.no-dark-bg{background-color:transparent!important;border-radius:0!important;padding:0!important}.preview-card{display:flex;flex-direction:column;background:rgba(255,255,255,.03);border-radius:16px;overflow:hidden;transition:background .2s ease,box-shadow .2s ease;text-decoration:none!important;color:inherit!important}.preview-card:hover{background:rgba(255,255,255,.06);box-shadow:0 4px 20px rgba(0,0,0,.3)}.preview-card iframe{width:100%;border:0;border-radius:8px 8px 0 0;display:block}.preview-card-caption{padding:14px 18px 16px}.preview-card-caption h3{font-size:17px!important;font-weight:600!important;margin:0 0 6px!important;line-height:1.4!important}.preview-card-caption p{font-size:13px!important;opacity:.6;margin:0!important;line-height:1.5!important}.preview-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.preview-card-tag{background:rgba(255,255,255,.05);border:0;border-radius:16px;padding:2px 10px;font-size:11px;cursor:default}.preview-card{border:1px solid rgba(0,0,0,.08)}.dark .preview-card{border:1px solid rgba(255,255,255,.06)}.dark .preview-card img{background-color:transparent!important;padding:0!important}.preview-card-tag{color:rgba(0,0,0,.4);background:rgba(0,0,0,.05)}.dark .preview-card-tag{color:rgba(255,255,255,.5);background:rgba(255,255,255,.05)}.katex,.katex *{line-height:normal}.katex .delimsizing.size1{font-size:1em}.katex .delimsizing.size2{font-size:1.2em}.katex .delimsizing.size3{font-size:1.8em}.katex .delimsizing.size4{font-size:2.4em}.katex-display>.katex{overflow-y:hidden}.page-authors{display:flex;flex-wrap:wrap;gap:2px 18px;margin:-4px 0 28px;font-size:14px;line-height:1.5;opacity:.6}.page-author-affiliation::before{content:\" · \"}"}],"page":{"pagePath":"aiml-common/lectures/vlm/clip/index","slug":"/aiml-common/lectures/vlm/clip/index","pageMetadata":{"title":"Contrastive Language-Image Pretraining (CLIP)","sidebarTitle":"CLIP","description":"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.","href":"/aiml-common/lectures/vlm/clip/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,annotation:`annotation`,code:`code`,em:`em`,hr:`hr`,li:`li`,math:`math`,mfrac:`mfrac`,mi:`mi`,mn:`mn`,mo:`mo`,mrow:`mrow`,mspace:`mspace`,mstyle:`mstyle`,msub:`msub`,msubsup:`msubsup`,msup:`msup`,mtable:`mtable`,mtd:`mtd`,mtext:`mtext`,mtr:`mtr`,munder:`munder`,ol:`ol`,p:`p`,path:`path`,semantics:`semantics`,span:`span`,strong:`strong`,svg:`svg`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Callout,Frame,Heading,Note,OptimizedImage,Table}=_components;if(!Callout)_missingMdxReference(`Callout`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`At this point, this is shamelessly copied from the `,_jsx(_components.a,{href:`https://visionbook.mit.edu/`,children:`MIT Foundations of Computer Vision Book by Prof. William T. Freeman et al.`}),` In the future this page will present the concepts as well as the code that replicates some of the figures in the book.`]})}),`\n`,_jsx(_components.p,{children:`Language is a representation of our world and so is perception - both language and vision are trying to solve the same problem.`}),`\n`,_jsxs(_components.p,{children:[`We saw in `,_jsx(_components.a,{href:`#sec-word2vec`,children:`section`}),` that a prediction task can be used to learn a representation of a word - recall we are predicting the words that are frequent closeby. This type of task is called a `,_jsx(_components.strong,{children:`pretext task`}),`. The idea is that if we learn a prediction task that dependents on a representation and our predictions are correct, then we have learned a good representation.`]}),`\n`,_jsxs(_components.p,{children:[`This is a very general idea and it applies to many different domains. For example, in vision, we can use a pretext task to learn a representation of an image by predicting the pixels in the image. This is called `,_jsx(_components.strong,{children:`self-supervised learning`}),` because we are using the data itself to supervise the learning process.`]}),`\n`,_jsx(_components.p,{children:`Learning under these settings`}),`\n`,_jsx(Heading,{level:`2`,id:`self-supervised-learning`,children:`Self-supervised Learning`}),`\n`,_jsxs(_components.p,{children:[`In NLP labeled data for representation learning are plentiful but in computer vision they are quite scarce. When we don’t have labeled targets we try to create virtual targets out of the raw data itself. This idea is called `,_jsx(_components.strong,{children:`self-supervision`}),`. It looks like this:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=633764d5cf8b4d6664770db5ba7eece1`,alt:``,style:{width:`80%`},\"data-og-width\":`1464`,width:`1464`,\"data-og-height\":`580`,height:`580`,\"data-path\":`aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=2f91c509732705b114745c3a2968373a 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=dfb8bfe52fed0fb733a57443978be444 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=6eeb73d124932b383f15f1dbec05fab1 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=2be3d6ce7782ea15876eee8d6848aeea 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=1a33b0a60a984dbdb176ae3e764b24e1 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/self_supervised_learning_diagram.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=e7537994fc9fe2105af1ecba2aecf8ac 2500w`}),`\n`,_jsxs(_components.p,{children:[`where `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`V`}),_jsx(_components.mn,{children:`1`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`V_1`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.2222em`},children:`V`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.2222em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` and `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`V`}),_jsx(_components.mn,{children:`2`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`V_2`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.2222em`},children:`V`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.2222em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` are two different functions of the `,_jsx(_components.em,{children:`full data\ntensor`}),` `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`X`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{X}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6861em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`X`})]})})]}),`. For example, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`V`}),_jsx(_components.mn,{children:`1`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`V_1`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.2222em`},children:`V`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.2222em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` might be the left side of the\nimage `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`X`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{X}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6861em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`X`})]})})]}),` and `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`V`}),_jsx(_components.mn,{children:`2`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`V_2`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.2222em`},children:`V`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.2222em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` could be the right side, so the pretext\ntask is to predict the right side of an image from its left side. In\nfact, several of the examples we gave previously for predictive learning\nare of the self-supervised variety: supervision for predicting a future\nframe, or a next pixel, can be cooked up just by splitting a video into\npast and future frames, or splitting an image into previous and next\npixels in a raster-order sequence.`]}),`\n`,_jsx(Heading,{level:`2`,id:`contrastive-learning`,children:`Contrastive Learning`}),`\n`,_jsxs(_components.p,{children:[`Dimensionality reduction and clustering algorithms learn compressed representations by creating an `,_jsx(_components.strong,{children:`information bottleneck`}),`, that is, by constraining the number of bits available in the representation. An alternative compression strategy is to `,_jsx(_components.em,{children:`supervise`}),` what information should be thrown away. `,_jsx(_components.strong,{children:`Contrastive learning`}),` is one such approach where a representation is supervised to be `,_jsx(_components.em,{children:`invariant`}),` to certain viewing transformations, resulting in a compressed representation that only captures the properties that are common between the different data `,_jsx(_components.strong,{children:`views`}),`. Two different data views could correspond to two different cameras looking at the same scene or two different imaging modalities, such as color and depth, and we will see more examples subsequently.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Contrastive learning is actually more closely related to clustering than it may at first seem. Contrastive learning maps similar datapoints to similar embeddings. Clustering is just the extreme version of this where there are only `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`k`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`k`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0315em`},children:`k`})]})})]}),` distinct embeddings and similar datapoints get mapped to the `,_jsx(_components.em,{children:`exact same`}),` embedding.`]})}),`\n`,_jsxs(_components.p,{children:[`Learning invariant representations is classic goal of computer vision.\nRecall that this was one of the reasons we used convolutional image\nfilters: convolution is equivariant with camera translation, and\ninvariance can then be achieved simply by pooling over filter responses.\nCNNs, through their convolutional architecture, bake translation\ninvariance into the `,_jsx(_components.em,{children:`hypothesis space`}),`. In this section we will see how\nto incentivize invariances instead through the `,_jsx(_components.em,{children:`objective`}),` function.`]}),`\n`,_jsxs(_components.p,{children:[`The idea is to simply penalize deviations from the invariance we want.\nSuppose `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`T`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`T`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`})]})})]}),` is a transformation we wish our representation to be\ninvariant to. Then we may use a loss of the form\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msubsup,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`∥`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`T`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{fence:`true`,children:`∥`})]}),_jsx(_components.mn,{children:`2`}),_jsx(_components.mn,{children:`2`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\left\\\\lVert f(T(\\\\mathbf{x}))-f(\\\\mathbf{x})\\\\right\\\\rVert_2^2`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.2537em`,verticalAlign:`-0.2997em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:`∥`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`))`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:`∥`})]}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.954em`},children:[_jsxs(_components.span,{style:{top:`-2.4003em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]}),_jsxs(_components.span,{style:{top:`-3.2029em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2997em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` to learn an\nencoder `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`f`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`})]})})]}),` that is invariant to `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`T`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`T`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`})]})})]}),`. We call such a loss an\n`,_jsx(_components.strong,{children:`alignment`}),` loss\\xA0(Wang \u0026 Isola, 2020).`]}),`\n`,_jsxs(_components.p,{children:[`That seems easy enough, but you may have noticed a flaw: What if `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`f`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`})]})})]}),`\njust learns to output the zero vector all the time? Trivial alignment\ncan be achieved when there is representational collapse, and all\ndatapoints get mapped to the same arbitrary vector.`]}),`\n`,_jsxs(_components.p,{children:[`Contrastive learning fixes this issue by coupling an alignment loss with\na second loss that pushes apart embeddings of datapoints for which we do\nnot want an invariant representation. The supervision for contrastive\nlearning comes in the form of `,_jsx(_components.em,{children:`positive pairs`}),` and `,_jsx(_components.em,{children:`negative pairs`}),`.\nPositive pairs are two datapoints we wish to align in `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`z`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`z`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.044em`},children:`z`})]})})]}),`-space; if we\nwish for invariance to `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`T`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`T`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`})]})})]}),` then a positive pair should be constructed as\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{lspace:`0em`,rspace:`0em`,children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{x}, \\\\mathbf{x}^{+}\\\\}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.0213em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`+`})})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`}`})]})})]}),` with `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{lspace:`0em`,rspace:`0em`,children:`+`})]}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`T`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x}^{+} = T(\\\\mathbf{x})`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7713em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`+`})})})]})})})})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),`.\nNegative pairs, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{x},\\\\mathbf{x}^-\\\\}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.0213em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`}`})]})})]}),`, are two datapoints that\nshould be represented differently in `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`z`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`z`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.044em`},children:`z`})]})})]}),`-space. Commonly, negative pairs\nare randomly constructed by sampling two datapoints independently and\nidentically from the same data distribution, that is,\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`∼`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`data`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x} \\\\sim p_{\\\\texttt{data}}(\\\\mathbf{x})`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4444em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`∼`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`p`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2778em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`data`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),` and\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{lspace:`0em`,rspace:`0em`,children:`−`})]}),_jsx(_components.mo,{children:`∼`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`data`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x}^{-} \\\\sim p_{\\\\texttt{data}}(\\\\mathbf{x})`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7713em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`−`})})})]})})})})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`∼`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`p`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2778em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`data`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),`. Given such data\npairings, the objective is to pull together the positive pairs and push\napart the negative pairs, as illustrated in\n`,_jsx(_components.a,{href:`#fig-representation_learning-contrastive_learning_diagram`,children:`figure`}),`.`]}),`\n`,_jsx(`span`,{id:`fig-representation_learning-contrastive_learning_diagram`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=36bf4599d69968971f3526e90e0f05c2`,alt:`Contrastive learning.`,style:{width:`75%`},\"data-og-width\":`3447`,width:`3447`,\"data-og-height\":`1430`,height:`1430`,\"data-path\":`aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=ee961da029ca400a03a508ba7a9da70f 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=f77e329dc958e61363f92ad08607864b 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=8c969bbc160b750943407fb7cb4ee05f 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=8d30154176568a8d20c54aaefdd46c43 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=38c36df9a1b9f6f5e5335580d06b586a 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_diagram.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=f5c35610fb06841ba55a737995f0805f 2500w`}),`\n`,_jsxs(_components.p,{children:[`This kind of contrastive learning results in an embedding that is\ninvariant to a transformation `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`T`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`T`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`})]})})]}),`. Extending this to achieve invariance\nto a `,_jsx(_components.em,{children:`set`}),` of transformations `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`T`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{children:`…`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`T`}),_jsx(_components.mi,{children:`n`})]}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{T_1, \\\\ldots, T_n\\\\}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`minner`,children:`…`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`n`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mclose`,children:`}`})]})})]}),` is straightforward:\njust apply the same loss for each of `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`T`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{children:`…`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`T`}),_jsx(_components.mi,{children:`n`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`T_1, \\\\ldots, T_n`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8778em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`minner`,children:`…`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`n`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),`.`]}),`\n`,_jsxs(_components.p,{children:[`A second kind of contrastive learning is based on co-occurrence, where\nthe goal is to learn a common representation of all co-occurring\nsignals. This form of contrastive learning is useful for learning, for\nexample, an audiovisual representation where the embedding of an image\nmatches the embedding of the sound for that same scene. Or, returning to\nour colorization example, we can learn an image representation where the\nembedding of the grayscale channels matches the embedding of the color\nchannels. In both these cases we are learning to align co-occurring\nsensory signals. This kind of contrastive learning is schematized in\n`,_jsx(_components.a,{href:`#fig-representation_learning-contrastive_learning_colorization`,children:`figure`}),`.`]}),`\n`,_jsx(`span`,{id:`fig-representation_learning-contrastive_learning_colorization`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=5d5a54edd2b87889def717f157a10ee1`,alt:`Contrastive learning from multiple views of the data. Figure inspired by (Tian et al., 2020)`,style:{width:`53%`},\"data-og-width\":`2058`,width:`2058`,\"data-og-height\":`1824`,height:`1824`,\"data-path\":`aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=1b47f92abf6bc3bbef5564393284217c 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=8a32d1c1caa9814c450ce20bb0eb7c11 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=3371dee4db503dd25d58ed4d7e0eba12 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=33a8d08d0c4bcc43fcd24755b6b10c05 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=1050024413821045bf6c904d04878e19 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_colorization.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=290fdea2286d4a26881e40871d6e7207 2500w`}),`\n`,_jsxs(_components.p,{children:[`In `,_jsx(_components.a,{href:`#fig-representation_learning-contrastive_learning_colorization`,children:`figure`}),`, we\nrefer to the two co-occurring signals---color and grayscale---as two\ndifferent `,_jsx(_components.strong,{children:`views`}),` of the total data tensor `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`X`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{X}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6861em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`X`})]})})]}),`, just like we\ndid in the previous sections: `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`V`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`X`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x} = V_1(\\\\mathbf{X})`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4444em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.2222em`},children:`V`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.2222em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`X`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),`,\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`y`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`V`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`X`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{y} = V_1(\\\\mathbf{X})`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6389em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathbf`,style:{marginRight:`0.016em`},children:`y`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.2222em`},children:`V`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.2222em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`X`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),`. You can think of these views either as\nresulting from sensory co-occurrences or as two transformations of\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`X`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{X}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6861em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`X`})]})})]}),`, where the transformation in the color example is channel\ndropping. Thus, the two kinds of contrastive learning we have presented\nare really one and the same: any two signals can be considered\ntransformations of a combined total signal, and any signal and its\ntransformation can be considered two co-occurring ways of measuring the\nunderlying world.`]}),`\n`,_jsx(_components.p,{children:`Nonetheless, it is often easiest to conceptualize these two approaches\nseparately, and next we give learning diagrams for each:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=11e34fa2f83e834668ce24ce20963a6f`,alt:``,style:{width:`70%`},\"data-og-width\":`1233`,width:`1233`,\"data-og-height\":`616`,height:`616`,\"data-path\":`aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=644a16657ce7cf6506d231cf7e84e0a7 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=207e273180d211cafdda0a57293bfb40 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=96b313a8c428171a565468a470be8fc6 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=47fbeb4b01721e55c400de6538398e34 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=d3e8f520d1ddb25a41e753676f7c041c 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_transformations.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=836ca3c3489ab6c38daab4be7426715f 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=e9552a3360d3965730cd6942cf35dec1`,alt:``,style:{width:`75%`},\"data-og-width\":`1354`,width:`1354`,\"data-og-height\":`617`,height:`617`,\"data-path\":`aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=834007a4070cd668266d922da1a82405 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=9fcb06c8f0d8aba93d32b637b0d70a7a 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=4b9d5c26fa734f51df427d1fff08bbc2 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=46e54ae0bf5c5cf57e2c22daa9761924 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=7df909ddfad6f10d69e8dfb02a1ed7e2 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/contrastive_learning_cooccurrence_diagram.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=f85ac1660e3a875e57fa99ba581fe666 2500w`}),`\n`,_jsxs(_components.p,{children:[`In these diagrams, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`D`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`D`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`D`})]})})]}),` is a distance function. Above we give just one\nsimple form for the contrastive objective; many variations have been\nproposed. Three of the most popular are (1) Hadsell et al.’s\n“constrastive loss” (Hadsell et al., 2006) (an older definition of\nthe term, now overloaded with our more general notion of a contrastive\nloss being the broader family of any loss that pulls together positive\nsamples and pushes apart negative samples), (2) the `,_jsx(_components.strong,{children:`triplet loss`}),`\n(Chechik et al., 2010), and (3) the `,_jsx(_components.strong,{children:`InfoNCE loss`}),` (van den Oord et al., 2018).\nHadsell et al.’s contrastive loss and the triplet loss add the concept\nof a `,_jsx(_components.strong,{children:`margin`}),` to the vanilla formulation: they only push/pull when the\ndistance is less than a specified amount `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`m`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`m`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`m`})]})})]}),` (called the margin),\notherwise points are considered far enough apart (or close enough\ntogether). The InfoNCE loss is a variation that treats establishing a\ncontrast as a classification problem: it tries to move points apart\nuntil you can classify the positive sample, for a given anchor,\nseparately from all the negatives. The general formulation of these\nlosses takes as input an anchor `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`x`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4444em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`x`})]})})]}),`, a positive example\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x}^+`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7713em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]})]})})]}),`, and one or more negative examples `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x}^-`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7713em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]})]})})]}),`. The\npositive and negative may be defined based on transformations,\ncoocurrences, or something else. The full learning objective is to sum\nover many samples of anchors, positives, and negatives, producing a\nsampled set evaluated according to the losses as follows:`]}),`\n`,_jsx(`span`,{id:`eq-representation_learning-infonce`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mtable,{rowspacing:`0.25em`,columnalign:`right left`,columnspacing:`0em`,children:[_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`max`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`D`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`m`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`pos`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`0`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`})]})})})]}),_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsx(_components.mrow,{})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mi,{children:`max`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`m`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`neg`})]}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`D`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`0`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mo,{children:`◃`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mtext,{children:`Hadsell\\xA0et\\xA0al.\\xA0contrastive`})]})})})]}),_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`max`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`D`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`D`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mi,{children:`m`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`0`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mo,{children:`◃`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mtext,{children:`triplet`})]})})})]}),_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`−`})]}),_jsxs(_components.msubsup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`}`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mi,{children:`N`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`log`}),_jsx(_components.mo,{children:``}),_jsxs(_components.mfrac,{children:[_jsxs(_components.msup,{children:[_jsx(_components.mi,{children:`e`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsxs(_components.msup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`sans-serif`,children:`T`})]}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`τ`})]})]}),_jsxs(_components.mrow,{children:[_jsxs(_components.msup,{children:[_jsx(_components.mi,{children:`e`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsxs(_components.msup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`sans-serif`,children:`T`})]}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`τ`})]})]}),_jsx(_components.mo,{children:`+`}),_jsxs(_components.munder,{children:[_jsx(_components.mo,{children:`∑`}),_jsx(_components.mi,{children:`i`})]}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{children:`e`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsxs(_components.msup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`sans-serif`,children:`T`})]}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`τ`})]})]})]})]}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mo,{children:`◃`}),_jsx(_components.mspace,{width:`1em`}),_jsx(_components.mtext,{children:`InfoNCE`})]})})})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\begin{aligned}\n \\\\mathcal{L}(\\\\mathbf{x}, \\\\mathbf{x}^+, \\\\mathbf{x}^-) \u0026= \\\\max(D(f(\\\\mathbf{x}), f(\\\\mathbf{x}^+)-m_{\\\\texttt{pos}},0) - \\\\\\\\ \u0026\\\\quad \\\\max(m_{\\\\texttt{neg}} - D(f(\\\\mathbf{x}), f(\\\\mathbf{x}^-),0) \\\\quad \\\\triangleleft \\\\quad \\\\text{Hadsell et al. contrastive}\\\\\\\\\n \\\\mathcal{L}(\\\\mathbf{x}, \\\\mathbf{x}^+, \\\\mathbf{x}^-) \u0026= \\\\max(D(f(\\\\mathbf{x}), f(\\\\mathbf{x}^+)) - D(f(\\\\mathbf{x}), f(\\\\mathbf{x}^-)) + m, 0) \\\\quad\\\\quad \\\\triangleleft \\\\quad \\\\text{triplet}\\\\\\\\\n \\\\mathcal{L}(\\\\mathbf{x}, \\\\mathbf{x}^+, \\\\{\\\\mathbf{x}_i^-\\\\}_{i=1}^N) \u0026= -\\\\log \\\\frac{e^{f(\\\\mathbf{x})^\\\\mathsf{T}f(\\\\mathbf{x}^+)/\\\\tau}}{e^{f(\\\\mathbf{x})^\\\\mathsf{T}f(\\\\mathbf{x}^+)/\\\\tau} + \\\\sum_i e^{f(\\\\mathbf{x})^\\\\mathsf{T}f(\\\\mathbf{x}_i^-)/\\\\tau}} \\\\quad\\\\quad\\\\quad\\\\quad\\\\quad\\\\quad\\\\triangleleft \\\\quad \\\\text{InfoNCE}\n\\\\end{aligned}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`7.2867em`,verticalAlign:`-3.3933em`}}),_jsx(_components.span,{className:`mord`,children:_jsxs(_components.span,{className:`mtable`,children:[_jsx(_components.span,{className:`col-align-r`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`3.8933em`},children:[_jsxs(_components.span,{style:{top:`-6.7423em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]}),_jsxs(_components.span,{style:{top:`-5.2423em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsx(_components.span,{className:`mord`})]}),_jsxs(_components.span,{style:{top:`-3.7423em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]}),_jsxs(_components.span,{style:{top:`-1.3933em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:[_jsxs(_components.span,{style:{top:`-2.433em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`})})]}),_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.267em`},children:_jsx(_components.span,{})})})]})})]}),_jsxs(_components.span,{className:`mclose`,children:[_jsx(_components.span,{className:`mclose`,children:`}`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8913em`},children:[_jsxs(_components.span,{style:{top:`-2.453em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mrel mtight`,children:`=`}),_jsx(_components.span,{className:`mord mtight`,children:`1`})]})})]}),_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.109em`},children:`N`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.247em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`3.3933em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`col-align-l`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`3.8933em`},children:[_jsxs(_components.span,{style:{top:`-6.7423em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mop`,children:`max`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`D`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`m`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`pos`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3056em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mord`,children:`−`})]})]}),_jsxs(_components.span,{style:{top:`-5.2423em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mop`,children:`max`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`m`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`neg`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3056em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`D`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`◃`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Hadsell\\xA0et\\xA0al.\\xA0contrastive`})})]})]}),_jsxs(_components.span,{style:{top:`-3.7423em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mop`,children:`max`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`D`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`))`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`D`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`))`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`m`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`◃`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`triplet`})})]})]}),_jsxs(_components.span,{style:{top:`-1.3933em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.6889em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mord`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mop`,children:[`lo`,_jsx(_components.span,{style:{marginRight:`0.0139em`},children:`g`})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.6889em`},children:[_jsxs(_components.span,{style:{top:`-2.2139em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.0119em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8364em`},children:_jsxs(_components.span,{style:{top:`-2.989em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsxs(_components.span,{className:`mclose mtight`,children:[_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.782em`},children:_jsxs(_components.span,{style:{top:`-2.786em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mathsf mtight`,children:`T`})})]})})})})})]}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7027em`},children:_jsxs(_components.span,{style:{top:`-2.786em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`mord mtight`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1132em`},children:`τ`})]})})]})})})})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsxs(_components.span,{className:`mop`,children:[_jsx(_components.span,{className:`mop op-symbol small-op`,style:{position:`relative`,top:`0em`},children:`∑`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.162em`},children:_jsxs(_components.span,{style:{top:`-2.4003em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2997em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.908em`},children:_jsxs(_components.span,{style:{top:`-3.0333em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsxs(_components.span,{className:`mclose mtight`,children:[_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.782em`},children:_jsxs(_components.span,{style:{top:`-2.786em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mathsf mtight`,children:`T`})})]})})})})})]}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.821em`},children:[_jsxs(_components.span,{style:{top:`-2.1777em`,marginLeft:`0em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`})})]}),_jsxs(_components.span,{style:{top:`-2.9043em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3223em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`mord mtight`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1132em`},children:`τ`})]})})]})})})})})]})]})]}),_jsxs(_components.span,{style:{top:`-3.2419em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.0119em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.6889em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.0119em`}}),_jsx(_components.span,{className:`mord`,children:_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.0119em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsxs(_components.span,{className:`mclose mtight`,children:[_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.927em`},children:_jsxs(_components.span,{style:{top:`-2.931em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mathsf mtight`,children:`T`})})]})})})})})]}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8477em`},children:_jsxs(_components.span,{style:{top:`-2.931em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`mord mtight`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1132em`},children:`τ`})]})})]})})})})})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.0978em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`◃`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`1em`}}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`InfoNCE`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`3.3933em`},children:_jsx(_components.span,{})})})]})})]})})]})})]})}),`\n`,_jsxs(_components.p,{children:[`Notice that the InfoNCE loss is a log softmax\nover a vector of scores `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsxs(_components.msup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`sans-serif`,children:`T`})]}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mn,{children:`2`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`c`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`τ`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_1(\\\\mathbf{x})^\\\\mathsf{T}f_2(c)/\\\\tau`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.0991em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsxs(_components.span,{className:`mclose`,children:[_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8491em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathsf mtight`,children:`T`})})]})})})})})]}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,children:`c`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mord`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1132em`},children:`τ`})]})})]}),` with\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`c`}),_jsx(_components.mo,{children:`∈`}),_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mn,{children:`1`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{children:`…`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mi,{children:`N`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`c \\\\in \\\\{\\\\mathbf{x}^+, \\\\mathbf{x}_1^-, \\\\ldots, \\\\mathbf{x}_N^-\\\\}`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.5782em`,verticalAlign:`-0.0391em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`c`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`∈`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.105em`,verticalAlign:`-0.2935em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8115em`},children:[_jsxs(_components.span,{style:{top:`-2.4337em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]}),_jsxs(_components.span,{style:{top:`-3.1031em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2663em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`minner`,children:`…`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8115em`},children:[_jsxs(_components.span,{style:{top:`-2.4065em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.109em`},children:`N`})})]}),_jsxs(_components.span,{style:{top:`-3.1031em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2935em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mclose`,children:`}`})]})]})]}),`; you\ncan therefore think of this loss as corresponding to a classification\nproblem where the ground truth class is `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{x}^+`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7713em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7713em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]})]})})]}),` and the other\npossible classes are `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mn,{children:`1`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{children:`…`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mi,{children:`N`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{x}_1^-, \\\\ldots, \\\\mathbf{x}_N^-\\\\}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.105em`,verticalAlign:`-0.2935em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8115em`},children:[_jsxs(_components.span,{style:{top:`-2.4337em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`1`})})]}),_jsxs(_components.span,{style:{top:`-3.1031em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2663em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`minner`,children:`…`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8115em`},children:[_jsxs(_components.span,{style:{top:`-2.4065em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.109em`},children:`N`})})]}),_jsxs(_components.span,{style:{top:`-3.1031em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2935em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mclose`,children:`}`})]})})]}),` (refer\nto `,_jsx(_components.a,{href:`#sec-intro_to_learning`,children:`section`}),` to revisit softmax\nclassification).`]}),`\n`,_jsx(Heading,{level:`3`,id:`alignment-and-uniformity`,children:`Alignment and Uniformity`}),`\n`,_jsxs(_components.p,{children:[`Wang and Isola\\xA0(Wang \u0026 Isola, 2020) showed that the contrastive loss\n(specifically the InfoNCE form) encourages two simple properties of the\nembeddings: alignment and uniformity. We have already seen that\nalignment is the property that two views in a positive pair will map to\nthe same point in embedding point, that is, the mapping is invariant to\nthe difference between the views. `,_jsx(_components.strong,{children:`Uniformity`}),` comes from the negative\nterm, which encourages embeddings to spread out and tend toward an\nevenly spread, uniform distribution. Importantly, for this to work out\nmathematically, the embeddings must be `,_jsx(_components.em,{children:`normalized`}),`, that is, each\nembedding vector must be a unit vector. Otherwise, the negative term can\npush embeddings toward being infinitely far apart from each other.\nFortunately, it is standard practice in contrastive learning (and many\nother forms of representation learning) to apply `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mn,{children:`2`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`L_2`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` normalization to\nthe embeddings. The result is that the embeddings will tend toward a\nuniform distribution over the surface of the `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`M`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`M`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`})]})})]}),`-dimensional\nhypersphere, where `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`M`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`M`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`})]})})]}),` is the dimensionality of the embeddings. See\ntheorem 1 in (Wang \u0026 Isola, 2020) for a formal statement of this fact.`]}),`\n`,_jsx(_components.p,{children:`A result of this analysis is we may explicit decompose contrastive\nlearning into one loss for alignment and another for uniformity, with\nthe following forms:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mtable,{rowspacing:`0.25em`,columnalign:`right left`,columnspacing:`0em`,children:[_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`align`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{separator:`true`,children:`;`}),_jsx(_components.mi,{children:`α`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{mathvariant:`double-struck`,children:`E`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`∼`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`pos`})]})]})]}),_jsx(_components.mo,{stretchy:`false`,children:`[`}),_jsxs(_components.msubsup,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`∥`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`+`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{fence:`true`,children:`∥`})]}),_jsx(_components.mn,{children:`2`}),_jsx(_components.mi,{children:`α`})]}),_jsx(_components.mo,{stretchy:`false`,children:`]`})]})})})]}),_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`unif`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{separator:`true`,children:`;`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`log`}),_jsx(_components.mo,{children:``}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{mathvariant:`double-struck`,children:`E`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`∼`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`data`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:` `}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{children:`∼`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`data`})]})]})]}),_jsx(_components.mo,{stretchy:`false`,children:`[`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{children:`e`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`t`}),_jsxs(_components.msubsup,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`∥`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`x`}),_jsx(_components.mo,{children:`−`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{fence:`true`,children:`∥`})]}),_jsx(_components.mn,{children:`2`}),_jsx(_components.mn,{children:`2`})]})]})]}),_jsx(_components.mo,{stretchy:`false`,children:`]`})]})})})]}),_jsxs(_components.mtr,{children:[_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{separator:`true`,children:`;`}),_jsx(_components.mi,{children:`α`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`λ`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})})}),_jsx(_components.mtd,{children:_jsx(_components.mstyle,{scriptlevel:`0`,displaystyle:`true`,children:_jsxs(_components.mrow,{children:[_jsx(_components.mrow,{}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`align`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`f`}),_jsx(_components.mo,{separator:`true`,children:`;`}),_jsx(_components.mi,{children:`α`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mi,{children:`λ`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{mathvariant:`script`,children:`L`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`unif`})]})]})})})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\begin{aligned}\n \\\\mathcal{L}_{\\\\texttt{align}}(f;\\\\alpha) \u0026= \\\\mathbb{E}_{(\\\\mathbf{x},\\\\mathbf{x}^+) \\\\sim p_{\\\\texttt{pos}}} [\\\\left\\\\lVert f(\\\\mathbf{x}) - f(\\\\mathbf{x}^+)\\\\right\\\\rVert_2^{\\\\alpha}]\\\\\\\\\n \\\\mathcal{L}_{\\\\texttt{unif}}(f;t) \u0026= \\\\log \\\\mathbb{E}_{\\\\mathbf{x} \\\\sim p_{\\\\texttt{data}}, \\\\, \\\\mathbf{x}^- \\\\sim p_{\\\\texttt{data}}} [e^{-t\\\\left\\\\lVert f(\\\\mathbf{x}) - f(\\\\mathbf{x}^-)\\\\right\\\\rVert_2^2}]\\\\\\\\\n \\\\mathcal{L}(f;\\\\alpha,t,\\\\lambda) \u0026= \\\\mathcal{L}_{\\\\texttt{align}}(f;\\\\alpha) + \\\\lambda \\\\mathcal{L}_{\\\\texttt{unif}}\n\\\\end{aligned}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`4.697em`,verticalAlign:`-2.0985em`}}),_jsx(_components.span,{className:`mord`,children:_jsxs(_components.span,{className:`mtable`,children:[_jsx(_components.span,{className:`col-align-r`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`2.5985em`},children:[_jsxs(_components.span,{style:{top:`-4.9272em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.233em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2778em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`align`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3056em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mpunct`,children:`;`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0037em`},children:`α`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]}),_jsxs(_components.span,{style:{top:`-2.9945em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.233em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2778em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`unif`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mpunct`,children:`;`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]}),_jsxs(_components.span,{style:{top:`-1.4945em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.233em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mpunct`,children:`;`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0037em`},children:`α`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`λ`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`2.0985em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`col-align-l`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`2.5985em`},children:[_jsxs(_components.span,{style:{top:`-4.9272em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.233em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbb`,children:`E`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3448em`},children:_jsxs(_components.span,{style:{top:`-2.5198em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`mpunct mtight`,children:`,`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7027em`},children:_jsxs(_components.span,{style:{top:`-2.786em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`mrel mtight`,children:`∼`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`p`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1645em`},children:_jsxs(_components.span,{style:{top:`-2.357em`,marginLeft:`0em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`pos`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3017em`},children:_jsx(_components.span,{})})})]})})]})]})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3914em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`[`}),_jsxs(_components.span,{className:`minner`,children:[_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen`,children:_jsx(_components.span,{className:`delimsizing mult`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.85em`},children:_jsxs(_components.span,{style:{top:`-2.85em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.2em`}}),_jsx(_components.span,{style:{width:`0.556em`,height:`1.2em`},children:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,width:`0.556em`,height:`1.2em`,viewBox:`0 0 556 1200`,children:_jsx(_components.path,{d:`M145 15 v585 v0 v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v0 v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v0 v585 h43z\nM367 15 v585 v0 v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v0 v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v0 v585 h43z`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.35em`},children:_jsx(_components.span,{})})})]})})}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8213em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`+`})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mclose`,children:_jsx(_components.span,{className:`delimsizing mult`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.85em`},children:_jsxs(_components.span,{style:{top:`-2.85em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.2em`}}),_jsx(_components.span,{style:{width:`0.556em`,height:`1.2em`},children:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,width:`0.556em`,height:`1.2em`,viewBox:`0 0 556 1200`,children:_jsx(_components.path,{d:`M145 15 v585 v0 v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v0 v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v0 v585 h43z\nM367 15 v585 v0 v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v0 v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v0 v585 h43z`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.35em`},children:_jsx(_components.span,{})})})]})})})]}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.9043em`},children:[_jsxs(_components.span,{style:{top:`-2.3003em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]}),_jsxs(_components.span,{style:{top:`-3.3029em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0037em`},children:`α`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3997em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mclose`,children:`]`})]})]}),_jsxs(_components.span,{style:{top:`-2.9945em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.233em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsxs(_components.span,{className:`mop`,children:[`lo`,_jsx(_components.span,{style:{marginRight:`0.0139em`},children:`g`})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbb`,children:`E`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3419em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`mrel mtight`,children:`∼`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`p`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2935em`},children:_jsxs(_components.span,{style:{top:`-2.357em`,marginLeft:`0em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`data`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.143em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mpunct mtight`,children:`,`}),_jsx(_components.span,{className:`mspace mtight`,style:{marginRight:`0.1952em`}}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7027em`},children:_jsxs(_components.span,{style:{top:`-2.786em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mrel mtight`,children:`∼`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`p`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2935em`},children:_jsxs(_components.span,{style:{top:`-2.357em`,marginLeft:`0em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`data`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.143em`},children:_jsx(_components.span,{})})})]})})]})]})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2861em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`[`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.233em`},children:_jsxs(_components.span,{style:{top:`-3.4603em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mtight`,children:`−`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`}),_jsxs(_components.span,{className:`minner mtight`,children:[_jsxs(_components.span,{className:`minner mtight`,children:[_jsx(_components.span,{className:`mopen sizing reset-size3 size6 mtight delimcenter`,style:{top:`0.075em`},children:_jsx(_components.span,{className:`mtight`,children:`∥`})}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`mbin mtight`,children:`−`}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathbf mtight`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8477em`},children:_jsxs(_components.span,{style:{top:`-2.931em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mbin mtight`,children:`−`})})]})})})})})]}),_jsx(_components.span,{className:`mclose mtight`,children:`)`}),_jsx(_components.span,{className:`mclose sizing reset-size3 size6 mtight delimcenter`,style:{top:`0.075em`},children:_jsx(_components.span,{className:`mtight`,children:`∥`})})]}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.1039em`},children:[_jsxs(_components.span,{style:{top:`-1.9964em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]}),_jsxs(_components.span,{style:{top:`-3.1436em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.5036em`},children:_jsx(_components.span,{})})})]})})]})]})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`]`})]})]}),_jsxs(_components.span,{style:{top:`-1.4945em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.233em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2778em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`align`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3056em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`mpunct`,children:`;`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0037em`},children:`α`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`λ`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathcal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2778em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`unif`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`2.0985em`},children:_jsx(_components.span,{})})})]})})]})})]})})]})}),`\n`,_jsxs(_components.p,{children:[`where `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`p`}),_jsx(_components.mtext,{mathvariant:`monospace`,children:`pos`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`p_{\\\\texttt{pos}}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7361em`,verticalAlign:`-0.3056em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`p`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord texttt mtight`,children:`pos`})})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3056em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` is the distribution of positive\npairs and `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`α`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\alpha`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0037em`},children:`α`})]})})]}),`, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`t`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`t`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6151em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`})]})})]}),`, and `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`λ`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\lambda`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`λ`})]})})]}),` are hyperparameters of the\nlosses.`]}),`\n`,_jsx(Heading,{level:`2`,id:`clip-architecture`,children:`CLIP Architecture`}),`\n`,_jsx(_components.p,{children:`Here, we use the pretext task idea on a supervisory signal of the natural language to create a representation of the scene it describes.`}),`\n`,_jsxs(_components.p,{children:[`CLIP is a contrastive method (see\n`,_jsx(_components.a,{href:`#sec-representation_learning-contrastive_learning`,children:`section`}),`) in which\none data view is the image and the other is a caption describing the\nimage. Specifically, CLIP is a form of contrastive learning from\nco-occurring visual and linguistic views that is formulated as follows:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=795bce18c074e4aca71e5a382d439a0f`,alt:`CLIP objective formulation`,\"data-og-width\":`1343`,width:`1343`,\"data-og-height\":`735`,height:`735`,\"data-path\":`aiml-common/lectures/vlm/clip/images/clip_objective.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=b890bbacf6396c151f16fe4cdabd3862 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=11bfc6fafd35a386928edbc9532d63e0 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=a69cafd211a9baa2d86fbbcf1e91caa2 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=065052294a50d6b73095329e357a5e16 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=022ef0d36fb26fd5d490f7c597550291 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_objective.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=f7c4ac191cf1520463b714f37cad9c66 2500w`}),`\n`,_jsxs(_components.p,{children:[`where `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`ℓ`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\boldsymbol\\\\ell`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord mathbf`,children:`ℓ`})})})]})})]}),` represents an image, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`t`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{t}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6349em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`t`})]})})]}),` represents\ntext, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`double-struck`,children:`S`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`z`})]})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbb{S}^{d_z}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8491em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbb`,children:`S`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8491em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`d`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1645em`},children:_jsxs(_components.span,{style:{top:`-2.357em`,marginLeft:`0em`,marginRight:`0.0714em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.5em`}}),_jsx(_components.span,{className:`sizing reset-size3 size1 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.044em`},children:`z`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.143em`},children:_jsx(_components.span,{})})})]})})]})})})]})})})})})]})]})})]}),` represents the space of unit vectors of\ndimensionality `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`z`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`d_z`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8444em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.044em`},children:`z`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` (i.e., the surface of the `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`[`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`z`})]}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mn,{children:`1`}),_jsx(_components.mo,{stretchy:`false`,children:`]`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`[d_z-1]`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`[`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.044em`},children:`z`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mclose`,children:`]`})]})]})]}),`-dimensional\nhypersphere), `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_{\\\\ell}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3361em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` is the image encoder, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{children:`t`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_t`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` is the text\nencoder, image inputs are represented as `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`[`}),_jsx(_components.mn,{children:`3`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mi,{children:`N`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mi,{children:`M`}),_jsx(_components.mo,{stretchy:`false`,children:`]`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`[3 \\\\times N \\\\times M]`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`[`}),_jsx(_components.span,{className:`mord`,children:`3`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7667em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`N`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`}),_jsx(_components.span,{className:`mclose`,children:`]`})]})]})]}),` pixel\narrays, text inputs are represented as `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`t`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`d_t`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8444em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` dimensional tokens, and\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`z`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`d_z`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8444em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.1514em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.044em`},children:`z`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` is the embedding dimensionality. Notice that the objective is a\nsymmetric version of the InfoNCE loss defined in\n`,_jsx(_components.a,{href:`#eq-representation_learning-infonce`,children:`equation`}),`. Also notice that `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_\\\\ell`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3361em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` and\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{children:`t`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_t`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` both output unit vectors (which is achieved using\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mn,{children:`2`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`L_2`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3011em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),`-normalization before computing the objective); this ensures that\nthe denominator cannot dominate by pushing negative pairs infinitely far\napart.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`The idea of visual learning by image captioning actually has a\nlong history before CLIP. One important early paper on this topic is\n(Ordonez et al., 2011).`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`#fig-vision_and_language-clip_training`,children:`figure`}),` visually depicts how CLIP is\ntrained. First we sample a batch of `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`N`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`N`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`N`})]})})]}),` language-image pairs,\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`t`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`ℓ`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})]}),_jsxs(_components.msubsup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`}`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mi,{children:`N`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{t}^{(i)}, \\\\boldsymbol\\\\ell^{(i)}\\\\}_{i=1}^N`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.231em`,verticalAlign:`-0.2587em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`t`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.888em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`})]})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord mathbf`,children:`ℓ`})})}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.9723em`},children:_jsxs(_components.span,{style:{top:`-3.1473em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`})]})})]})})})})})]}),_jsxs(_components.span,{className:`mclose`,children:[_jsx(_components.span,{className:`mclose`,children:`}`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8413em`},children:[_jsxs(_components.span,{style:{top:`-2.4413em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mrel mtight`,children:`=`}),_jsx(_components.span,{className:`mord mtight`,children:`1`})]})})]}),_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.109em`},children:`N`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2587em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` (`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`N`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`6`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`N=6`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`N`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6444em`}}),_jsx(_components.span,{className:`mord`,children:`6`})]})]})]}),` in the\nfigure). Next we embed measure the dot product between all these text\nstrings and images using a language encoder `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{children:`t`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_t`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` and an image encoder\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_\\\\ell`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3361em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),`, respectively. This produces a set of text embeddings\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{children:`t`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})]}),_jsxs(_components.msubsup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`}`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mi,{children:`N`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{z}^{(i)}_t\\\\}_{i=1}^N`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.3035em`,verticalAlign:`-0.2587em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.0448em`},children:[_jsxs(_components.span,{style:{top:`-2.4542em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]}),_jsxs(_components.span,{style:{top:`-3.2198em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2458em`},children:_jsx(_components.span,{})})})]})})]}),_jsxs(_components.span,{className:`mclose`,children:[_jsx(_components.span,{className:`mclose`,children:`}`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8413em`},children:[_jsxs(_components.span,{style:{top:`-2.4413em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mrel mtight`,children:`=`}),_jsx(_components.span,{className:`mord mtight`,children:`1`})]})})]}),_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.109em`},children:`N`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2587em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` and a set of image embeddings\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})]}),_jsxs(_components.msubsup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`}`}),_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.mi,{children:`N`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{z}^{(i)}_\\\\ell\\\\}_{i=1}^N`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.3461em`,verticalAlign:`-0.3013em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.0448em`},children:[_jsxs(_components.span,{style:{top:`-2.3987em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})]}),_jsxs(_components.span,{style:{top:`-3.2198em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3013em`},children:_jsx(_components.span,{})})})]})})]}),_jsxs(_components.span,{className:`mclose`,children:[_jsx(_components.span,{className:`mclose`,children:`}`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8413em`},children:[_jsxs(_components.span,{style:{top:`-2.4413em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mrel mtight`,children:`=`}),_jsx(_components.span,{className:`mord mtight`,children:`1`})]})})]}),_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.109em`},children:`N`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2587em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),`. To compute the loss, we take the\ndot product `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})]}),_jsx(_components.mo,{children:`⋅`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{children:`t`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`j`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{z}^{(i)}_\\\\ell\\\\cdot \\\\mathbf{z}^{(j)}_t`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.3461em`,verticalAlign:`-0.3013em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.0448em`},children:[_jsxs(_components.span,{style:{top:`-2.3987em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})]}),_jsxs(_components.span,{style:{top:`-3.2198em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3013em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`⋅`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.2906em`,verticalAlign:`-0.2458em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.0448em`},children:[_jsxs(_components.span,{style:{top:`-2.4542em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]}),_jsxs(_components.span,{style:{top:`-3.2198em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mopen mtight`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0572em`},children:`j`}),_jsx(_components.span,{className:`mclose mtight`,children:`)`})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.2458em`},children:_jsx(_components.span,{})})})]})})]})]})]})]}),` for all\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mi,{children:`j`}),_jsx(_components.mo,{children:`∈`}),_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsx(_components.mn,{children:`1`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{children:`…`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mn,{children:`6`}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`i, j \\\\in \\\\{1,\\\\ldots,6\\\\}`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.854em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`i`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0572em`},children:`j`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`∈`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`minner`,children:`…`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord`,children:`6`}),_jsx(_components.span,{className:`mclose`,children:`}`})]})]})]}),`. Terms for which `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{mathvariant:`normal`,children:`≠`}),_jsx(_components.mi,{children:`j`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`i \\\\neq j`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`i`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsxs(_components.span,{className:`mrel`,children:[_jsx(_components.span,{className:`mrel`,children:_jsx(_components.span,{className:`mord vbox`,children:_jsx(_components.span,{className:`thinbox`,children:_jsxs(_components.span,{className:`rlap`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`inner`,children:_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mrel`,children:``})})}),_jsx(_components.span,{className:`fix`})]})})})}),_jsx(_components.span,{className:`mspace nobreak`}),_jsx(_components.span,{className:`mrel`,children:`=`})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.854em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0572em`},children:`j`})]})]})]}),` are the negative\npairs and we seek to minimize these dot products (denominator of the\nloss); terms for which `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`i`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`j`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`i == j`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6595em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`i`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`==`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.854em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0572em`},children:`j`})]})]})]}),` are the positive pairs and we seek to\nmaximize these dot product (they appear in both the numerator and\ndenominator of the loss).`]}),`\n`,_jsx(`span`,{id:`fig-vision_and_language-clip_training`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=dcf601e45af65309ecff68e8c26e37a8`,alt:`CLIP training for one batch of six language-image training examples. Green boxes are positive pairings (we seek to increase their value); these are the six training pairs. Red boxes are negative pairings (we seek to decrease their value); these are all other possible pairings within the batch. Inspired by figure 1 of (radford2021learning)`,style:{width:`85%`},\"data-og-width\":`3193`,width:`3193`,\"data-og-height\":`3313`,height:`3313`,\"data-path\":`aiml-common/lectures/vlm/clip/images/clip_training_fig.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=7e57ccb9bc30d2f607808d6fcc323db8 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=d190f414a6d5d643328fc2145bc8da6e 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=361fcaaed2e36121c08e04113029020d 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=40668757bd1fde17168e3f64a725382c 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=eac66cd592ab6214d410cf381adfa288 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_training_fig.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=ff9612396ddce7e7e317775a1c67c56a 2500w`}),`\n`,_jsxs(_components.p,{children:[`After training, we have a text encoder `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{children:`t`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_t`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` and an image encoder\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`})]})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`f_\\\\ell`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3361em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})})]}),` that map to the same embedding space. In this space, the angle\nbetween a text embedding and an image embedding will be small if the\ntext matches the matches.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`The dot product between\nunit vectors is proportional to the angle between the\nvectors.`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`#fig-vision_and_language-clip_mapping_diagram_two_branch`,children:`figure`}),` shows how a\ntrained CLIP model maps data to embeddings. This figure is generated in\nthe same way as `,_jsx(_components.a,{href:`#fig-neural_nets-vit_mapping_plot`,children:`figure`}),`: for each encoder we\nreduce dimensionality for visualization using `,_jsx(_components.strong,{children:`t-distributed Stochastic\nNeighbor Embedding`}),` (`,_jsx(_components.strong,{children:`t-SNE`}),`)\\xA0(van der Maaten \u0026 Hinton, 2008). For the image encoder, we show\nthe visual content using icons to reflect the color and shape depicted\nin the image (we previously used the same visualization in `,_jsx(_components.a,{href:`#sec-representation_learning-expt_designing_embeddings_with_contrastive_learning`,children:`section`}),`).`]}),`\n`,_jsx(_components.p,{children:`It’s a bit hard to see, but one thing you can notice here is that for\nthe image encoder, the early layers group images by color and the later\nlayers group more by shape. The opposite is true for the text encoder.\nWhy do you think this is? One reason may be that color is a superficial\nfeature in pixel-space while shape requires processing to extract, but\nin text-space, color words and shape words are equally superficial and\neasy to group sentences by.`}),`\n`,_jsx(`span`,{id:`fig-vision_and_language-clip_mapping_diagram_two_branch`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=2149e932c95d5135a325bd2db9145a67`,alt:`CLIP (Radford et al., 2021) mapping diagram, using the same technique as described in [section](#sec-neural_nets_as_distribution_transformers). To reduce dimensionality we apply t-SNE (van der Maaten \u0026 Hinton, 2008) separately for the text encoder and the image encoder. Within each encoder, we run t-SNE jointly across all shown layers. `,style:{width:`100%`},\"data-og-width\":`3899`,width:`3899`,\"data-og-height\":`3840`,height:`3840`,\"data-path\":`aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=b919507673c7cb9a5010d874e440c120 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=0963d7d9420e55d8e480c3cc4b42a9bb 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=d7e6469072015e638e955a23a6f46922 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=d290adbd66999c507ac9674b38650431 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=3943e1c9a7aae1425623f5a6d0fea16a 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_mapping_diagram_two_branch.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=3612714565e30f5e0fb0dce9c16a54d1 2500w`}),`\n`,_jsxs(_components.p,{children:[`After passing the data through these two encoders, the final stage is to\nnormalize the outputs and compute the alignment between the image and\ntext embeddings. `,_jsx(_components.a,{href:`#fig-vision_and_language-clip_shared_embedding`,children:`figure`}),` shows\nthis last step. After normalization, all the embeddings line on the\nsurface of a hypersphere (the circle in the figure). Notice that the\ntext descriptions are embedded near the image embeddings (icons) that\nmatch that description. It’s not perfect but note that this is partially\ndue to limitations in the visualization, which projects the\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mn,{children:`768`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`768`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6444em`}}),_jsx(_components.span,{className:`mord`,children:`768`})]})})]}),`-dimensional CLIP embeddings into a 2D visualization. Here we use\nkernel principle component analysis\\xA0(Schölkopf et al., 1998) on the\nembeddings, with a cosine kernel, and remove the first principle\ncomponent as that component codes for a global offset between the image\nembeddings and text embeddings.`]}),`\n`,_jsx(`span`,{id:`fig-vision_and_language-clip_shared_embedding`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=53390d1797dcc19f8af99bf0ef601560`,alt:`CLIP (Radford et al., 2021) joint embedding`,style:{width:`80%`},\"data-og-width\":`3088`,width:`3088`,\"data-og-height\":`2498`,height:`2498`,\"data-path\":`aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=ee1c0e1d314f322db1c7c38ae7d744bf 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=4aa92385bbb9ddd1ef348ed4d9b0e45d 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=a7a2b37e8ad2d9a93b38d5f8e8abce3e 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=f77c750208f7f86c40ffeeb104d1e307 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=b2e7b00cdb003b954ef49565fc31bdcc 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_shared_embedding.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=8553c16defef6cd2261a2b50c86c70b9 2500w`}),`\n`,_jsxs(_components.p,{children:[`Using language as one of the views may seem like a minor variation on\nthe contrastive methods we saw previously, but it’s a change that opens\nup a lot of new possibilities. CLIP connects the domain of images to the\ndomain of language. This means that many of the powerful abilities of\nlanguage become applicable to imagery as well. One ability that the CLIP\npaper showcased is making a novel image classifier on the fly. With\nlanguage, you can describe a new conceptual category with ease. Suppose\nI want a classifier to distinguish striped red circles from polka dotted\ngreen squares. These classes can be described in English just like that:\n“striped red circles” versus “polka dotted green square.” CLIP can then\nleverage this amazing ability of English to compose concepts and\nconstruct an `,_jsx(_components.em,{children:`image`}),` classifier for these two concepts.`]}),`\n`,_jsxs(_components.p,{children:[`Here’s how it works. Given a set of sentences\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{stretchy:`false`,children:`{`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`t`}),_jsx(_components.mi,{children:`a`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`t`}),_jsx(_components.mi,{children:`b`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mo,{children:`…`}),_jsx(_components.mo,{stretchy:`false`,children:`}`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\{\\\\mathbf{t}^{a}, \\\\mathbf{t}^{b}, \\\\ldots\\\\}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.0991em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`{`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`t`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.6644em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`a`})})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`t`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8491em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`b`})})})]})})})})})]}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`minner`,children:`…`}),_jsx(_components.span,{className:`mclose`,children:`}`})]})})]}),` that describe images of\nclasses `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`a`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`a`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`a`})]})})]}),`, `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`b`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`b`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`b`})]})})]}),`, and so on,`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Embed each sentence into a `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`z`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{z}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4444em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`z`})]})})]}),`-vector,\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mi,{children:`a`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{children:`t`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`t`}),_jsx(_components.mi,{children:`a`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mi,{children:`b`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{children:`t`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`t`}),_jsx(_components.mi,{children:`a`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{separator:`true`,children:`,`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{z}_t^{a} = f_t(\\\\mathbf{t}^{a}), \\\\mathbf{z}_t^{b} = f_t(\\\\mathbf{t}^{a}),`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.9114em`,verticalAlign:`-0.247em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.6644em`},children:[_jsxs(_components.span,{style:{top:`-2.453em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]}),_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`a`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.247em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.0991em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`t`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.6644em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`a`})})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.8491em`},children:[_jsxs(_components.span,{style:{top:`-2.453em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]}),_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`b`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.247em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.2806em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`t`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`t`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.6644em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`a`})})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mpunct`,children:`,`})]})]})]}),`\nand so on.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Embed your query image into a `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{mathvariant:`bold`,children:`z`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{z}`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4444em`}}),_jsx(_components.span,{className:`mord mathbf`,children:`z`})]})})]}),`-vector,\n`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msubsup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`z`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`}),_jsx(_components.mi,{children:`q`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`f`}),_jsx(_components.mi,{mathvariant:`normal`,children:`ℓ`})]}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{mathvariant:`bold`,children:`ℓ`}),_jsx(_components.mi,{children:`q`})]}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\mathbf{z}_{\\\\ell}^{q} = f_{\\\\ell}(\\\\boldsymbol\\\\ell^{q})`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.0836em`,verticalAlign:`-0.3013em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathbf`,children:`z`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.7823em`},children:[_jsxs(_components.span,{style:{top:`-2.3987em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})})]}),_jsxs(_components.span,{style:{top:`-3.1809em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0359em`},children:`q`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.3013em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1076em`},children:`f`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3361em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1076em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`ℓ`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord mathbf`,children:`ℓ`})})}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7487em`},children:_jsxs(_components.span,{style:{top:`-3.1473em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0359em`},children:`q`})})})]})})})})})]}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`See which sentence embedding is closest to your image embedding;\nthat’s the predicted class.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`These steps are visualized in `,_jsx(_components.a,{href:`#fig-vision_and_language-clip_inference`,children:`figure`}),`.\nThe green outlined dot product is the highest, indicating that the query\nimage will be classified as class `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsx(_components.mrow,{children:_jsx(_components.mi,{children:`a`})}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`a`})]})})}),_jsx(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.4306em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`a`})]})})]}),`, which is defined as “striped red\ncircles.”`]}),`\n`,_jsx(`span`,{id:`fig-vision_and_language-clip_inference`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=f1adbd6695e0bb1c170210870f7f473c`,alt:\"Making a ``striped red circles'' (class $a$) versus ``polka dotted green square'' (class $b$) classifier using a trained CLIP. The CLIP model parameters are frozen and not updated. Instead the classifier is constructed by embedding the text describing to the two classes and seeing which is closer to the embedding of the query image. Inspired by figure 1 of (Radford et al., 2021)\",style:{width:`75%`},\"data-og-width\":`3109`,width:`3109`,\"data-og-height\":`2041`,height:`2041`,\"data-path\":`aiml-common/lectures/vlm/clip/images/clip_inference_fig.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=b737e3e9529c11b0190485f976a8a58e 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=192413adff57f67e0510dd5307cc0fce 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=3c1dc9362c5b053a87690f12e6a289d1 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=83540707f899e7fadc151373707f1691 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=9665661f409b40f2f1282dfe6c237177 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/clip_inference_fig.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=1d597924aaea328a9fe0a04ce888c846 2500w`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`#fig-vision_and_language-clip_clocks`,children:`figure`}),` gives more examples of creating\ncustom binary classifiers in this way. The two classes are described by\ntwo text strings (“triangle” versus “cricle”; “purple” versus “teal”;\nand “arrowhead” versus “ball”). The embeddings of the text descriptions\nare the red and green vectors. The classifier simply checks where an\nimage embedding is closer, in angular distance, to the red vector or the\ngreen vector. This approach isn’t limited to binary classification: you\ncan add more text vectors to partition the space in more ways.`]}),`\n`,_jsx(Frame,{caption:`Making custom classifiers using CLIP. (a) Image embeddings in joint embedding space, (b) triangle-circle classifier, (c) purple-teal classifier, and (d) arrowhead-ball classifier.`,children:_jsxs(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`1rem`},children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=809a09e23a1d59b517b49bab0a3203e6`,alt:`Image embeddings in joint embedding space`,\"data-og-width\":`2916`,width:`2916`,\"data-og-height\":`2851`,height:`2851`,\"data-path\":`aiml-common/lectures/vlm/clip/images/joint_embedding.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=d88c95790ec115b1820f706d9589e4c7 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=560fdcdb354e263ea67e8bc74b7986ef 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=b1201894be21062cf1a8e351f17256c7 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=2e08f4bbb0fd4be8db550f456272281b 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=fad7e182c592ad9045c57d8ed875998a 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/joint_embedding.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=ff3a1fe8db3f91797cd1b8a68fc52d27 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=d0807de335d3370c7e6be1051105f481`,alt:`Triangle-circle classifier`,\"data-og-width\":`2916`,width:`2916`,\"data-og-height\":`2851`,height:`2851`,\"data-path\":`aiml-common/lectures/vlm/clip/images/circle_triangle.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=bee82a942dac032f9537a78aaaff90e7 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=2126e874a0cde36434d88ba5a06132ab 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=ed40043cd249caacc7b8084208de2d62 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=f5f7f9feed51b2b0f9bc29a33cfbeb3e 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=71a07d85ae4c9059b3f7af4db8d33cfa 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/circle_triangle.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=f6c7836a0d9f630ec1e18d9d4940f65d 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=aeaac3aa2a623d75e712612cc63015b1`,alt:`Purple-teal classifier`,\"data-og-width\":`2916`,width:`2916`,\"data-og-height\":`2851`,height:`2851`,\"data-path\":`aiml-common/lectures/vlm/clip/images/purple_teal.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?w=280\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=bcd8df8f298a1c55d78d40bf7c634b11 280w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?w=560\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=277f0c2e22b6e406f64fa5273ef324eb 560w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?w=840\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=980ba97faf920d5ec1324aeecf25815c 840w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=492bd910d3b9378932fa2b9ca6b4b067 1100w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=1a4d1be7e2217c6144481213617e0ef3 1650w, https://mintcdn.com/aegeanaiinc/YtrMDrzDMn8G0ikx/aiml-common/lectures/vlm/clip/images/purple_teal.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YtrMDrzDMn8G0ikx\u0026q=85\u0026s=19ea45721444122a3835bd63bd49502c 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=eab68d6495d30361d4b7d6112d0efdda`,alt:`Arrowhead-ball classifier`,\"data-og-width\":`2916`,width:`2916`,\"data-og-height\":`2851`,height:`2851`,\"data-path\":`aiml-common/lectures/vlm/clip/images/arrowhead_ball.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?w=280\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=d894bdcfa08414dc1317b774a19eb00c 280w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?w=560\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=3fdb6d46c4c7702bfd078724cb9a4e91 560w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?w=840\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=b1fd5ce358eea8de12a694838fc97d6b 840w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=365c61a08827c73c2e53a30a45197129 1100w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=70a95e6be66581d14b236680ef07255d 1650w, https://mintcdn.com/aegeanaiinc/xyxAL8JMAK6wgqoN/aiml-common/lectures/vlm/clip/images/arrowhead_ball.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xyxAL8JMAK6wgqoN\u0026q=85\u0026s=2674e3dc1fbc7aa7c8bbaf764383f97c 2500w`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`pytorch-reference`,children:`PyTorch reference`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`PyTorch class`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.pytorch.org/docs/2.12/generated/torch.nn.Conv2d.html`,children:_jsx(_components.code,{children:`nn.Conv2d`})})}),_jsx(_components.td,{children:`Applies a 2D convolution over an input signal composed of several input planes.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.pytorch.org/docs/2.12/generated/torch.nn.MultiheadAttention.html`,children:_jsx(_components.code,{children:`nn.MultiheadAttention`})})}),_jsx(_components.td,{children:`Allows the model to jointly attend to information from different representation subspaces.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.pytorch.org/docs/2.12/generated/torch.nn.LayerNorm.html`,children:_jsx(_components.code,{children:`nn.LayerNorm`})})}),_jsx(_components.td,{children:`Applies Layer Normalization over a mini-batch of inputs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.pytorch.org/docs/2.12/generated/torch.nn.Linear.html`,children:_jsx(_components.code,{children:`nn.Linear`})})}),_jsxs(_components.td,{children:[`Applies an affine linear transformation to the incoming data: `,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`y`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`x`}),_jsxs(_components.msup,{children:[_jsx(_components.mi,{children:`A`}),_jsx(_components.mi,{children:`T`})]}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mi,{children:`b`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`y = xA^T + b`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.625em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`y`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.9247em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`x`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`A`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8413em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.1389em`},children:`T`})})]})})})})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`b`})]})]})]}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.pytorch.org/docs/2.12/generated/torch.nn.Embedding.html`,children:_jsx(_components.code,{children:`nn.Embedding`})})}),_jsx(_components.td,{children:`A simple lookup table that stores embeddings of a fixed dictionary and size.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://docs.pytorch.org/docs/2.12/generated/torch.nn.GELU.html`,children:_jsx(_components.code,{children:`nn.GELU`})})}),_jsx(_components.td,{children:`Applies the Gaussian Error Linear Units function.`})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Callout,{icon:`bug`,iconType:`regular`,children:_jsxs(_components.p,{children:[`Found an error on this page? `,_jsx(_components.a,{href:`https://github.com/aegean-ai/eaia-feedback/issues/new?template=page-issue.yml\u0026page=/aiml-common/lectures/vlm/clip`,children:`Report an issue`}),`.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Contrastive Language-Image Pretraining (CLIP)","sidebarTitle":"CLIP","description":"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.","href":"/aiml-common/lectures/vlm/clip/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Self-supervised Learning","slug":"self-supervised-learning","depth":2,"children":[]},{"title":"Contrastive Learning","slug":"contrastive-learning","depth":2,"children":[{"title":"Alignment and Uniformity","slug":"alignment-and-uniformity","depth":3,"children":[]}]},{"title":"CLIP Architecture","slug":"clip-architecture","depth":2,"children":[]},{"title":"PyTorch reference","slug":"pytorch-reference","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/aegeanaiinc/d160583580826147/aiml-common/lectures/planning/task-planning/pddl/blocksworld/blocksWorldViz.js","/_mintlify/custom/aegeanaiinc/0663393b76c10385/osano.js"],"subdomain":"aegeanaiinc","siteName":"aegean.ai","title":"Contrastive Language-Image Pretraining (CLIP) - aegean.ai","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T14:03:34.507Z","originalFileLocation":"aiml-common/lectures/vlm/clip/index.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.\">\u003cmeta data-mint-head name=\"application-name\" content=\"aegean.ai\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Contrastive Language-Image Pretraining (CLIP) - aegean.ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"aegean.ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://aegean.ai/aiml-common/lectures/vlm/clip\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aegeanaiinc.mintlify.app/_mintlify/api/og/v2?division=Representation+Learning\u0026amp;title=Contrastive+Language-Image+Pretraining+%28CLIP%29\u0026amp;description=Contrastive+Language-Image+Pretraining+%28CLIP%29+-+lecture+notes+and+code+examples.\u0026amp;theme=c82b76cf1863b4602235eb36\u0026amp;signature=e6392a69056b605a7582597e8a69385a02c80d5f3a5be54998c6675ff5cfb39f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Contrastive Language-Image Pretraining (CLIP) - aegean.ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aegeanaiinc.mintlify.app/_mintlify/api/og/v2?division=Representation+Learning\u0026amp;title=Contrastive+Language-Image+Pretraining+%28CLIP%29\u0026amp;description=Contrastive+Language-Image+Pretraining+%28CLIP%29+-+lecture+notes+and+code+examples.\u0026amp;theme=c82b76cf1863b4602235eb36\u0026amp;signature=e6392a69056b605a7582597e8a69385a02c80d5f3a5be54998c6675ff5cfb39f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/aegeanaiinc/6M9Gi5GgxBzndhcq/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"aegean.ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2196C8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://aegean.ai/aiml-common/lectures/vlm/clip\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/aiml-common/lectures/vlm/clip/index.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://aegean.ai/#organization\",\"name\":\"aegean.ai\",\"url\":\"https://aegean.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/aegeanaiinc/ai8d4zdsUnwq_5J6/logo.png?fit=max\u0026auto=format\u0026n=ai8d4zdsUnwq_5J6\u0026q=85\u0026s=fe5e281c1569f8468ff85157bd7d9dc3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://aegean.ai#website\",\"name\":\"aegean.ai\",\"url\":\"https://aegean.ai\",\"publisher\":{\"@id\":\"https://aegean.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://aegean.ai/aiml-common/lectures/vlm/clip#webpage\",\"url\":\"https://aegean.ai/aiml-common/lectures/vlm/clip\",\"name\":\"Contrastive Language-Image Pretraining (CLIP)\",\"description\":\"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.\",\"dateModified\":\"2026-10-07T14:03:34.507Z\",\"isPartOf\":{\"@id\":\"https://aegean.ai#website\"},\"breadcrumb\":{\"@id\":\"https://aegean.ai/aiml-common/lectures/vlm/clip#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://aegean.ai/aiml-common/lectures/vlm/clip#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Representation Learning\",\"item\":\"https://aegean.ai/aiml-common/lectures/vlm/representation-learning/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contrastive Language-Image Pretraining (CLIP)\",\"item\":\"https://aegean.ai/aiml-common/lectures/vlm/clip\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://aegean.ai/aiml-common/lectures/vlm/clip#article\",\"headline\":\"Contrastive Language-Image Pretraining (CLIP)\",\"name\":\"Contrastive Language-Image Pretraining (CLIP)\",\"description\":\"Contrastive Language-Image Pretraining (CLIP) - lecture notes and code examples.\",\"url\":\"https://aegean.ai/aiml-common/lectures/vlm/clip\",\"mainEntityOfPage\":{\"@id\":\"https://aegean.ai/aiml-common/lectures/vlm/clip#webpage\"},\"dateModified\":\"2026-10-07T14:03:34.507Z\",\"publisher\":{\"@id\":\"https://aegean.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://aegean.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"aegean.ai\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"aegean.ai","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Products","icon":"box","menu":[{"item":"Overview","icon":"box","pages":[{"title":"Overview","href":"/products"}]},{"item":"Platforms","icon":"server","pages":[{"title":"Platforms","href":"/products/platforms"}]},{"item":"Applications","icon":"grid-2","pages":[{"title":"Applications","href":"/products/applications"}]},{"item":"Tech Demonstrations","icon":"flask","pages":[{"title":"Tech Demonstrations","href":"/products/tech-demonstrators"}]}],"pages":[{"title":"Products","href":"/products"}]},{"tab":"Book","icon":"book","menu":[{"item":"Introduction","pages":[{"title":"Introduction","href":"/book/introduction"}]},{"item":"Foundations","pages":[{"title":"Foundations","href":"/book/foundations"}]},{"item":"Neural Networks","pages":[{"title":"Neural Networks","href":"/book/training-dnns"}]},{"item":"Perception","icon":"eye","pages":[{"title":"Perception","href":"/book/perception"}]},{"item":"State Estimation \u0026 Mapping","icon":"compass","pages":[{"title":"State Estimation \u0026 Mapping","href":"/book/state-estimation-mapping"}]},{"item":"LLM","icon":"omega","pages":[{"title":"LLM","href":"/book/llms"}]},{"item":"VLM","icon":"image","groups":[{"group":"Vision and Language","icon":"image","pages":[{"title":"Learning from Images and Text","sidebarTitle":"Overview","href":"/aiml-common/lectures/vlm"}]},{"group":"Representation Learning","icon":"diagram-project","pages":[{"title":"Learning Representations from Pixels","sidebarTitle":"Learned Embeddings","tag":"DRAFT","description":"Autoencoders, k-means, and contrastive learning on a toy colored-shapes dataset, where the chosen augmentation decides whether the embedding keeps shape or color.","href":"/aiml-common/lectures/vlm/representation-learning/index"},{"title":"Contrastive Language-Image Pretraining (CLIP)","sidebarTitle":"CLIP","href":"/aiml-common/lectures/vlm/clip/index"},{"title":"CLIP Zero-Shot Classification","sidebarTitle":"CLIP Zero-shot Classification","description":"Zero-shot classification as a linear classifier whose weights come from text prompts, with PCA visualization of the shared CLIP embedding space.","href":"/aiml-common/lectures/vlm/clip/zero-shot/index"}]},{"group":"Vision-Language Models","icon":"comments","pages":[{"title":"Visual Instruction Tuning - LLaVA","sidebarTitle":"LLaVA","href":"/aiml-common/lectures/vlm/llava/index"},{"title":"Vision Language Models: A Deep Dive into the LLaVA Family","sidebarTitle":"VLM Deep Dive, LLaVA","href":"/aiml-common/lectures/vlm/llava/vlm-llava-tutorial"}]},{"group":"VLM SFT Lab","icon":"sliders","pages":[{"title":"SmolVLM SFT for food extraction","sidebarTitle":"SmolVLM SFT","tag":"DRAFT","href":"/aiml-common/lectures/vlm/finetuning/smolVLM/smolVLM"}]}]},{"item":"ALM","icon":"microphone","pages":[{"title":"ALM","href":"/aiml-common/lectures/speech/text-to-speech-and-voice-cloning"}]},{"item":"Logic","icon":"sitemap","pages":[{"title":"Logic","href":"/book/logic"}]},{"item":"Planning","icon":"route","pages":[{"title":"Planning","href":"/book/task-planning"}]},{"item":"MDPs","icon":"arrows-rotate","pages":[{"title":"MDPs","href":"/book/mdps"}]},{"item":"RL","icon":"arrows-rotate","pages":[{"title":"RL","href":"/book/reinforcement-learning"}]},{"item":"Reasoning","icon":"brain","pages":[{"title":"Reasoning","href":"/aiml-common/lectures/reasoning"}]},{"item":"Latent Transport Models","icon":"wand-magic-sparkles","pages":[{"title":"Latent Transport Models","href":"/book/latent-transport-models"}]},{"item":"Robotics Systems","icon":"robot","pages":[{"title":"Robotics Systems","href":"/book/robotics-systems"}]},{"item":"Physical AI","icon":"microchip","pages":[{"title":"Physical AI","href":"/book/physical-ai"}]},{"item":"Prerequisites","pages":[{"title":"Prerequisites","href":"/book/prerequisites"}]}]},{"tab":"Courses","icon":"graduation-cap","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/courses"}]},{"item":"Introduction to AI","pages":[{"title":"Introduction to AI","href":"/courses/ai"}]},{"item":"DL for Computer Vision","pages":[{"title":"DL for Computer Vision","href":"/courses/cv"}]},{"item":"AI for Robotics","pages":[{"title":"AI for Robotics","href":"/courses/robotics"}]},{"item":"Resources","pages":[{"title":"Resources","href":"/courses/njit-calendar"}]}],"pages":[{"title":"Courses","href":"/courses"}]},{"tab":"Media","icon":"video","pages":[{"title":"Media","href":"/media"}]},{"tab":"AI Industry","icon":"flask","pages":[{"title":"AI Industry","href":"/research"}]},{"tab":"Blog","icon":"pen-nib","pages":[{"title":"Blog","href":"/blog"}]},{"tab":"Careers","icon":"briefcase","menu":[{"item":"Internships","pages":[{"title":"Internships","href":"/careers/virtual-internships"}]}],"pages":[{"title":"Careers","href":"/careers/virtual-internships"}]},{"tab":"About","icon":"user","pages":[{"title":"About","href":"/about"}]}]},"title":"Contrastive Language-Image Pretraining (CLIP) - aegean.ai","buildId":"dpl_22zLaHtK6fmmSqApXTTP5tC7UBZn","deploymentId":"dpl_22zLaHtK6fmmSqApXTTP5tC7UBZn","dynamics":["a74be98ba7","07c022d89b"],"chunks":["zoom-image-lightbox-BxIiCHya.js","PlusIcon-Br4qdG7I.js","lightbox-handle-r17bVUz3.js","Frame-Qhh4ynaL.js","DynamicMarkdown-UgxZIUya.js"]}