对比学习损失函数 - InfoNCE

InfoNCE Loss :构建高效对比学习模型

引言

对比学习中的InfoNCE损失函数是自监督学习领域的重要进展,它通过最大化正样本对之间的相似度并最小化负样本对的相似度,有效地引导模型学习到数据的本质特征。InfoNCE不仅提高了表示学习的质量,还为下游任务如分类、聚类等提供了强大的基础。

在这里插入图片描述


一、背景

InfoNCE(Information Noise-Contrastive Estimation)损失是对比学习中非常重要的一个损失函数,特别是在SimCLR、MoCo等框架中被广泛应用。它通过最大化正样本对之间的相似度,同时最小化负样本对之间的相似度来学习有用的表示。下面我们详细解释InfoNCE损失的公式及其各个组成部分。
在这里插入图片描述

二、公式

1. 定义

L InfoNCE = − log ⁡ exp ⁡ ( sim ( z i , z j ) / τ ) ∑ k = 1 2 N 1 [ k ≠ i ] exp ⁡ ( sim ( z i , z k ) / τ ) \mathcal{L}_{\text{InfoNCE}} = -\log \frac{\exp(\text{sim}(z_i, z_j) / \tau)}{\sum_{k=1}^{2N} \mathbf{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k) / \tau)} LInfoNCE=logk=12N1[k=i]exp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)

2. 公式分解

为了帮助你更深入地理解InfoNCE损失公式,我们将逐步分解并解释每个部分的意义。我们通过一个直观的例子来说明这个过程,确保每个步骤都清晰明了。

2.1 分子:正样本对的相似度得分

exp ⁡ ( sim ( z i , z j ) / τ ) \exp(\text{sim}(z_i, z_j) / \tau) exp(sim(zi,zj)/τ)

  • z i z_i zi z j z_j zj 是来自同一数据点的两个不同增强视图(augmented views)。
  • sim ( z i , z j ) \text{sim}(z_i, z_j) sim(zi,zj) 衡量这两个嵌入向量之间的相似度,通常使用余弦相似度或点积。
  • τ \tau τ 是温度参数,控制相似度分布的锐度。
  • exp ⁡ ( ⋅ ) \exp(\cdot) exp() 是指数函数,用于放大相似度得分。

示例
假设 sim ( z 1 , z 3 ) = 0.9 \text{sim}(z_1, z_3) = 0.9 sim(z1,z3)=0.9,温度参数 τ = 0.1 \tau = 0.1 τ=0.1,那么:

exp ⁡ ( sim ( z 1 , z 3 ) / 0.1 ) = exp ⁡ ( 0.9 / 0.1 ) = exp ⁡ ( 9 ) ≈ 8103.08 \exp(\text{sim}(z_1, z_3) / 0.1) = \exp(0.9 / 0.1) = \exp(9) \approx 8103.08 exp(sim(z1,z3)/0.1)=exp(0.9/0.1)=exp(9)8103.08

这表示正样本对 ( z 1 , z 3 ) (z_1, z_3) (z1,z3) 的相似度得分为 8103.08。

2.2 分母:所有负样本对的相似度得分之和

∑ k = 1 2 N 1 [ k ≠ i ] exp ⁡ ( sim ( z i , z k ) / τ ) \sum_{k=1}^{2N} \mathbf{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k) / \tau) k=12N1[k=i]exp(sim(zi,zk)/τ)

  • 2 N 2N 2N 是批次中所有嵌入向量的数量(每个数据点有两个增强视图,因此总共有 2 N 2N 2N 个嵌入向量)。
  • 1 [ k ≠ i ] \mathbf{1}_{[k \neq i]} 1[k=i] 是指示函数,确保不将自身作为负样本。当 k = i k = i k=i 时,指示函数取值为0;否则为1。
  • exp ⁡ ( sim ( z i , z k ) / τ ) \exp(\text{sim}(z_i, z_k) / \tau) exp(sim(zi,zk)/τ) 是每个负样本对的相似度得分,同样经过温度参数调整后的指数形式。

示例
假设我们有4个嵌入向量 z 1 , z 2 , z 3 , z 4 z_1, z_2, z_3, z_4 z1,z2,z3,z4,并且 z 1 z_1 z1 z 3 z_3 z3 来自同一个数据点,其他都是负样本。我们需要计算 z 1 z_1 z1 对所有其他嵌入向量的相似度得分之和:

∑ k = 1 4 1 [ k ≠ 1 ] exp ⁡ ( sim ( z 1 , z k ) / 0.1 ) = exp ⁡ ( sim ( z 1 , z 2 ) / 0.1 ) + exp ⁡ ( sim ( z 1 , z 3 ) / 0.1 ) + exp ⁡ ( sim ( z 1 , z 4 ) / 0.1 ) \sum_{k=1}^{4} \mathbf{1}_{[k \neq 1]} \exp(\text{sim}(z_1, z_k) / 0.1) = \exp(\text{sim}(z_1, z_2) / 0.1) + \exp(\text{sim}(z_1, z_3) / 0.1) + \exp(\text{sim}(z_1, z_4) / 0.1) k=141[k=1]exp(sim(z1,zk)/0.1)=exp(sim(z1,z2)/0.1)+exp(sim(z1,z3)/0.1)+exp(sim(z1,z4)/0.1)

具体数值为:

exp ⁡ ( sim ( z 1 , z 2 ) / 0.1 ) = exp ⁡ ( 0.1 / 0.1 ) = exp ⁡ ( 1 ) ≈ 2.72 \exp(\text{sim}(z_1, z_2) / 0.1) = \exp(0.1 / 0.1) = \exp(1) \approx 2.72 exp(sim(z1,z2)/0.1)=exp(0.1/0.1)=exp(1)2.72
exp ⁡ ( sim ( z 1 , z 4 ) / 0.1 ) = exp ⁡ ( 2 ) ≈ 7.39 \exp(\text{sim}(z_1, z_4) / 0.1) = \exp(2) \approx 7.39 exp(sim(z1,z4)/0.1)=exp(2)7.39

因此,分母为:

2.72 + 7.39 ≈ 10.11 2.72 + 7.39 \approx 10.11 2.72+7.3910.11

2.3 比值:正样本对相对于所有负样本对的相似度比值

exp ⁡ ( sim ( z i , z j ) / τ ) ∑ k = 1 2 N 1 [ k ≠ i ] exp ⁡ ( sim ( z i , z k ) / τ ) \frac{\exp(\text{sim}(z_i, z_j) / \tau)}{\sum_{k=1}^{2N} \mathbf{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k) / \tau)} k=12N1[k=i]exp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)

这个比值衡量了正样本对相对于所有负样本对的相对相似度。理想情况下,这个比值应该尽可能大,表示正样本对的相似度远高于任何负样本对。

示例

exp ⁡ ( sim ( z 1 , z 3 ) / 0.1 ) ∑ k = 1 4 1 [ k ≠ 1 ] exp ⁡ ( sim ( z 1 , z k ) / 0.1 ) = 8103.08 10.11 ≈ 801.5 \frac{\exp(\text{sim}(z_1, z_3) / 0.1)}{\sum_{k=1}^{4} \mathbf{1}_{[k \neq 1]} \exp(\text{sim}(z_1, z_k) / 0.1)} = \frac{8103.08}{10.11} \approx 801.5 k=141[k=1]exp(sim(z1,zk)/0.1)exp(sim(z1,z3)/0.1)=10.118103.08801.5

2.4 对数和负号

− log ⁡ ( exp ⁡ ( sim ( z i , z j ) / τ ) ∑ k = 1 2 N 1 [ k ≠ i ] exp ⁡ ( sim ( z i , z k ) / τ ) ) -\log \left( \frac{\exp(\text{sim}(z_i, z_j) / \tau)}{\sum_{k=1}^{2N} \mathbf{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k) / \tau)} \right) log(k=12N1[k=i]exp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ))

  • 对数函数 log ⁡ ( ⋅ ) \log(\cdot) log() 将比值转换为对数尺度,使得优化问题更加稳定。
  • 负号 − - 确保损失值为正值,并且最小化这个损失意味着最大化正样本对相对于负样本对的相似度比值。

示例

− log ⁡ ( 801.5 ) ≈ − 6.69 -\log(801.5) \approx -6.69 log(801.5)6.69

直观理解

InfoNCE损失的目标是让模型能够从一组负样本中正确识别出正样本对。具体来说:

  • 分子:代表正样本对之间的相似度得分,经过温度参数调整后的指数形式。
  • 分母:代表所有可能的负样本对相似度得分之和,同样经过温度参数调整后的指数形式。
  • 比值:衡量正样本对相对于所有负样本对的相对相似度。
  • 对数和负号:确保损失值为正值,并且最小化这个损失意味着最大化正样本对相对于负样本对的相似度比值。

3. CV 知识补充 – 数据增强视图(Augmented Views)

让我们更清晰地解释一下“来自数据点1的两个增强视图”这句话的意思,并通过具体例子来说明正样本和负样本的概念。

在对比学习中,我们通常从同一个原始数据点(如一张图片、一段文本等)生成多个不同的版本,称为增强视图(augmented views)。这些增强视图是通过对原始数据应用随机变换(如裁剪、旋转、颜色抖动等)得到的。这样做是为了让模型能够学习到数据的本质特征,而不是依赖于具体的外观细节。

正样本与负样本

3.1 正样本对

正样本对是指来自同一个原始数据点的不同增强视图之间的配对。例如:

  • 数据点1:假设我们有一张原始图片 x 1 x_1 x1
  • 增强视图:我们通过对 x 1 x_1 x1 应用不同的随机变换,生成两个不同的增强视图 z 1 z_1 z1 z 3 z_3 z3

因此, ( z 1 , z 3 ) (z_1, z_3) (z1,z3) 是一对正样本,因为它们都来自同一个原始数据点 x 1 x_1 x1

3.2 负样本

负样本是指来自不同原始数据点的增强视图之间的配对。例如:

  • 数据点2:我们有另一张原始图片 x 2 x_2 x2,并生成两个不同的增强视图 z 2 z_2 z2 z 4 z_4 z4

对于 z 1 z_1 z1 来说,负样本就是来自其他数据点的增强视图,即 z 2 z_2 z2 z 4 z_4 z4

具体例子

假设我们有一个小批次的数据点,每个数据点有两个增强视图,总共有4个嵌入向量 z 1 , z 2 , z 3 , z 4 z_1, z_2, z_3, z_4 z1,z2,z3,z4

  • 数据点1:有两个增强视图 z 1 z_1 z1 z 3 z_3 z3
  • 数据点2:有两个增强视图 z 2 z_2 z2 z 4 z_4 z4

正样本对

  • ( z 1 , z 3 ) (z_1, z_3) (z1,z3):来自数据点1的两个增强视图
  • ( z 2 , z 4 ) (z_2, z_4) (z2,z4):来自数据点2的两个增强视图

负样本

  • 对于 z 1 z_1 z1,负样本是:

    • z 2 z_2 z2(来自数据点2)
    • z 4 z_4 z4(来自数据点2)
  • 对于 z 2 z_2 z2,负样本是:

    • z 1 z_1 z1(来自数据点1)
    • z 3 z_3 z3(来自数据点1)
  • 对于 z 3 z_3 z3,负样本是:

    • z 2 z_2 z2(来自数据点2)
    • z 4 z_4 z4(来自数据点2)
  • 对于 z 4 z_4 z4,负样本是:

    • z 1 z_1 z1(来自数据点1)
    • z 3 z_3 z3(来自数据点1)
3.3 总结
  • 正样本对:来自同一个原始数据点的不同增强视图之间的配对。例如 ( z 1 , z 3 ) (z_1, z_3) (z1,z3) 都来自数据点1。
  • 负样本:来自不同原始数据点的增强视图之间的配对。例如对于 z 1 z_1 z1,负样本是 z 2 z_2 z2 z 4 z_4 z4,它们分别来自数据点2。

三、举个 🌰

InfoNCE Loss 10个嵌入向量的例子

为了更全面地理解InfoNCE损失的计算过程,我们通过一个包含10个嵌入向量的例子来详细说明。假设我们有一个批次的数据点,每个数据点有两个增强视图(augmented views),总共有5个数据点,因此有10个嵌入向量 z 1 , z 2 , … , z 10 z_1, z_2, \ldots, z_{10} z1,z2,,z10

1. 数据点和增强视图的关系

  • 数据点1:有两个增强视图 z 1 z_1 z1 z 6 z_6 z6
  • 数据点2:有两个增强视图 z 2 z_2 z2 z 7 z_7 z7
  • 数据点3:有两个增强视图 z 3 z_3 z3 z 8 z_8 z8
  • 数据点4:有两个增强视图 z 4 z_4 z4 z 9 z_9 z9
  • 数据点5:有两个增强视图 z 5 z_5 z5 z 10 z_{10} z10

2. 正样本对和负样本

对于每个正样本对 ( z i , z j ) (z_i, z_j) (zi,zj),我们需要计算InfoNCE损失。以 ( z 1 , z 6 ) (z_1, z_6) (z1,z6) 为例:

  • 正样本对 ( z 1 , z 6 ) (z_1, z_6) (z1,z6)
  • 负样本:所有其他来自不同数据点的增强视图,即 z 2 , z 3 , z 4 , z 5 , z 7 , z 8 , z 9 , z 10 z_2, z_3, z_4, z_5, z_7, z_8, z_9, z_{10} z2,z3,z4,z5,z7,z8,z9,z10

3. 计算相似度得分

假设我们已经计算了所有成对的余弦相似度,并将温度参数设为 τ = 0.1 \tau = 0.1 τ=0.1。以下是相似度矩阵的部分示例值(假设已经归一化):

z 1 z 2 z 3 z 4 z 5 z 6 z 7 z 8 z 9 z 10 z 1 1.0 0.1 0.2 0.3 0.4 0.9 0.1 0.2 0.3 0.4 z 2 0.1 1.0 0.2 0.3 0.4 0.1 0.9 0.2 0.3 0.4 z 3 0.2 0.2 1.0 0.3 0.4 0.2 0.2 0.9 0.3 0.4 z 4 0.3 0.3 0.3 1.0 0.4 0.3 0.3 0.3 0.9 0.4 z 5 0.4 0.4 0.4 0.4 1.0 0.4 0.4 0.4 0.4 0.9 z 6 0.9 0.1 0.2 0.3 0.4 1.0 0.1 0.2 0.3 0.4 z 7 0.1 0.9 0.2 0.3 0.4 0.1 1.0 0.2 0.3 0.4 z 8 0.2 0.2 0.9 0.3 0.4 0.2 0.2 1.0 0.3 0.4 z 9 0.3 0.3 0.3 0.9 0.4 0.3 0.3 0.3 1.0 0.4 z 10 0.4 0.4 0.4 0.4 0.9 0.4 0.4 0.4 0.4 1.0 \begin{array}{c|cccccccccc} & z_1 & z_2 & z_3 & z_4 & z_5 & z_6 & z_7 & z_8 & z_9 & z_{10} \\ \hline z_1 & 1.0 & 0.1 & 0.2 & 0.3 & 0.4 & 0.9 & 0.1 & 0.2 & 0.3 & 0.4 \\ z_2 & 0.1 & 1.0 & 0.2 & 0.3 & 0.4 & 0.1 & 0.9 & 0.2 & 0.3 & 0.4 \\ z_3 & 0.2 & 0.2 & 1.0 & 0.3 & 0.4 & 0.2 & 0.2 & 0.9 & 0.3 & 0.4 \\ z_4 & 0.3 & 0.3 & 0.3 & 1.0 & 0.4 & 0.3 & 0.3 & 0.3 & 0.9 & 0.4 \\ z_5 & 0.4 & 0.4 & 0.4 & 0.4 & 1.0 & 0.4 & 0.4 & 0.4 & 0.4 & 0.9 \\ z_6 & 0.9 & 0.1 & 0.2 & 0.3 & 0.4 & 1.0 & 0.1 & 0.2 & 0.3 & 0.4 \\ z_7 & 0.1 & 0.9 & 0.2 & 0.3 & 0.4 & 0.1 & 1.0 & 0.2 & 0.3 & 0.4 \\ z_8 & 0.2 & 0.2 & 0.9 & 0.3 & 0.4 & 0.2 & 0.2 & 1.0 & 0.3 & 0.4 \\ z_9 & 0.3 & 0.3 & 0.3 & 0.9 & 0.4 & 0.3 & 0.3 & 0.3 & 1.0 & 0.4 \\ z_{10} & 0.4 & 0.4 & 0.4 & 0.4 & 0.9 & 0.4 & 0.4 & 0.4 & 0.4 & 1.0 \\ \end{array} z1z2z3z4z5z6z7z8z9z10z11.00.10.20.30.40.90.10.20.30.4z20.11.00.20.30.40.10.90.20.30.4z30.20.21.00.30.40.20.20.90.30.4z40.30.30.31.00.40.30.30.30.90.4z50.40.40.40.41.00.40.40.40.40.9z60.90.10.20.30.41.00.10.20.30.4z70.10.90.20.30.40.11.00.20.30.4z80.20.20.90.30.40.20.21.00.30.4z90.30.30.30.90.40.30.30.31.00.4z100.40.40.40.40.90.40.40.40.41.0

4. 计算InfoNCE损失

( z 1 , z 6 ) (z_1, z_6) (z1,z6) 为例:

  1. 分子:正样本对的相似度得分

exp ⁡ ( sim ( z 1 , z 6 ) / τ ) \exp(\text{sim}(z_1, z_6) / \tau) exp(sim(z1,z6)/τ)

假设 sim ( z 1 , z 6 ) = 0.9 \text{sim}(z_1, z_6) = 0.9 sim(z1,z6)=0.9,温度参数 τ = 0.1 \tau = 0.1 τ=0.1,那么:

exp ⁡ ( sim ( z 1 , z 6 ) / 0.1 ) = exp ⁡ ( 0.9 / 0.1 ) = exp ⁡ ( 9 ) ≈ 8103.08 \exp(\text{sim}(z_1, z_6) / 0.1) = \exp(0.9 / 0.1) = \exp(9) \approx 8103.08 exp(sim(z1,z6)/0.1)=exp(0.9/0.1)=exp(9)8103.08

  1. 分母:所有负样本对的相似度得分之和

∑ k = 1 10 1 [ k ≠ 1  and  k ≠ 6 ] exp ⁡ ( sim ( z 1 , z k ) / τ ) \sum_{k=1}^{10} \mathbf{1}_{[k \neq 1 \text{ and } k \neq 6]} \exp(\text{sim}(z_1, z_k) / \tau) k=1101[k=1 and k=6]exp(sim(z1,zk)/τ)

具体数值为:

exp ⁡ ( sim ( z 1 , z 2 ) / 0.1 ) = exp ⁡ ( 0.1 / 0.1 ) = exp ⁡ ( 1 ) ≈ 2.72 \exp(\text{sim}(z_1, z_2) / 0.1) = \exp(0.1 / 0.1) = \exp(1) \approx 2.72 exp(sim(z1,z2)/0.1)=exp(0.1/0.1)=exp(1)2.72
exp ⁡ ( sim ( z 1 , z 3 ) / 0.1 ) = exp ⁡ ( 0.2 / 0.1 ) = exp ⁡ ( 2 ) ≈ 7.39 \exp(\text{sim}(z_1, z_3) / 0.1) = \exp(0.2 / 0.1) = \exp(2) \approx 7.39 exp(sim(z1,z3)/0.1)=exp(0.2/0.1)=exp(2)7.39
exp ⁡ ( sim ( z 1 , z 4 ) / 0.1 ) = exp ⁡ ( 0.3 / 0.1 ) = exp ⁡ ( 3 ) ≈ 20.09 \exp(\text{sim}(z_1, z_4) / 0.1) = \exp(0.3 / 0.1) = \exp(3) \approx 20.09 exp(sim(z1,z4)/0.1)=exp(0.3/0.1)=exp(3)20.09
exp ⁡ ( sim ( z 1 , z 5 ) / 0.1 ) = exp ⁡ ( 0.4 / 0.1 ) = exp ⁡ ( 4 ) ≈ 54.60 \exp(\text{sim}(z_1, z_5) / 0.1) = \exp(0.4 / 0.1) = \exp(4) \approx 54.60 exp(sim(z1,z5)/0.1)=exp(0.4/0.1)=exp(4)54.60
exp ⁡ ( sim ( z 1 , z 7 ) / 0.1 ) = exp ⁡ ( 0.1 / 0.1 ) = exp ⁡ ( 1 ) ≈ 2.72 \exp(\text{sim}(z_1, z_7) / 0.1) = \exp(0.1 / 0.1) = \exp(1) \approx 2.72 exp(sim(z1,z7)/0.1)=exp(0.1/0.1)=exp(1)2.72
exp ⁡ ( sim ( z 1 , z 8 ) / 0.1 ) = exp ⁡ ( 0.2 / 0.1 ) = exp ⁡ ( 2 ) ≈ 7.39 \exp(\text{sim}(z_1, z_8) / 0.1) = \exp(0.2 / 0.1) = \exp(2) \approx 7.39 exp(sim(z1,z8)/0.1)=exp(0.2/0.1)=exp(2)7.39
exp ⁡ ( sim ( z 1 , z 9 ) / 0.1 ) = exp ⁡ ( 0.3 / 0.1 ) = exp ⁡ ( 3 ) ≈ 20.09 \exp(\text{sim}(z_1, z_9) / 0.1) = \exp(0.3 / 0.1) = \exp(3) \approx 20.09 exp(sim(z1,z9)/0.1)=exp(0.3/0.1)=exp(3)20.09
exp ⁡ ( sim ( z 1 , z 10 ) / 0.1 ) = exp ⁡ ( 0.4 / 0.1 ) = exp ⁡ ( 4 ) ≈ 54.60 \exp(\text{sim}(z_1, z_{10}) / 0.1) = \exp(0.4 / 0.1) = \exp(4) \approx 54.60 exp(sim(z1,z10)/0.1)=exp(0.4/0.1)=exp(4)54.60

因此,分母为:

2.72 + 7.39 + 20.09 + 54.60 + 2.72 + 7.39 + 20.09 + 54.60 ≈ 170.6 2.72 + 7.39 + 20.09 + 54.60 + 2.72 + 7.39 + 20.09 + 54.60 \approx 170.6 2.72+7.39+20.09+54.60+2.72+7.39+20.09+54.60170.6

  1. 比值:正样本对相对于所有负样本对的相似度比值

exp ⁡ ( sim ( z 1 , z 6 ) / τ ) ∑ k = 1 10 1 [ k ≠ 1  and  k ≠ 6 ] exp ⁡ ( sim ( z 1 , z k ) / τ ) = 8103.08 170.6 ≈ 47.5 \frac{\exp(\text{sim}(z_1, z_6) / \tau)}{\sum_{k=1}^{10} \mathbf{1}_{[k \neq 1 \text{ and } k \neq 6]} \exp(\text{sim}(z_1, z_k) / \tau)} = \frac{8103.08}{170.6} \approx 47.5 k=1101[k=1 and k=6]exp(sim(z1,zk)/τ)exp(sim(z1,z6)/τ)=170.68103.0847.5

  1. 对数和负号

− log ⁡ ( 8103.08 170.6 ) ≈ − log ⁡ ( 47.5 ) ≈ − 3.86 -\log \left( \frac{8103.08}{170.6} \right) \approx -\log(47.5) \approx -3.86 log(170.68103.08)log(47.5)3.86

5. 总结

最终,对于正样本对 ( z 1 , z 6 ) (z_1, z_6) (z1,z6),InfoNCE损失为:

L InfoNCE ( z 1 , z 6 ) ≈ − 3.86 \mathcal{L}_{\text{InfoNCE}}(z_1, z_6) \approx -3.86 LInfoNCE(z1,z6)3.86

同样的步骤可以应用于其他正样本对 ( z 2 , z 7 ) , ( z 3 , z 8 ) , ( z 4 , z 9 ) , ( z 5 , z 10 ) (z_2, z_7), (z_3, z_8), (z_4, z_9), (z_5, z_{10}) (z2,z7),(z3,z8),(z4,z9),(z5,z10),分别计算它们的InfoNCE损失。

四、总结

InfoNCE(Information Noise-Contrastive Estimation)损失函数通过从一组负样本中区分出正样本对,指导模型学习有意义的数据表示。它利用温度参数调整相似度分布,确保正样本对的相似度远高于所有负样本。该方法在SimCLR、MoCo等框架中广泛应用,显著提升了无监督和自监督学习的表现,成为构建高效深度学习模型的关键工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

家用万兆网络实践:紧凑型家用服务器静音化改造(二)

大家好,这篇文章我们继续分享家里网络设备的万兆升级和静音改造经验,希望对有类似需求的朋友有所帮助。 写在前面 在上一篇《家用网络升级实践:低成本实现局部万兆(一)》中,我们留下了一些待解决的问题。…

【STC库函数】Compare比较器的使用

如果我们需要比较两个点的电压,当A点高于B点的时候我们做一个操作,当B点高于A点的时候做另一个操作。 我们除了加一个运放或者比较器,还可以直接使用STC内部的一个比较器。 正极输入端可以是P37、P50、P51,或者从ADC的十六个通道…

东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。

东京大学联合Adobe提出的InstructMove是一种基于指令的图像编辑模型,使用多模态 LLM 生成的指令对视频中的帧对进行训练。该模型擅长非刚性编辑,例如调整主体姿势、表情和改变视点,同时保持内容一致性。此外,该方法通过集成蒙版、…

海思Linux(一)-Hi3516CV610的开发-ubuntu22_04环境创建

目 录 前 言 一、芯片介绍 二、环境搭建 2.1 前提准备 2.2 虚拟机创建 2.3 ubuntu环境安装 2.4 基础ubuntu环境搭建 2.5 使用MobaXterm登陆ubuntu 前 言 芯片选型:HI3516CV610 选择的开发板是:酷电科技馆的Hi3516CV610-MINI开发板 上一篇文章&#xf…

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。 1.设计思路:2.设计细节3.详细代码实现 1.设计思路: 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…

Spring boot 项目 Spring 注入 代理 并支持 代理对象使用 @Autowired 去调用其他服务

文章目录 类定义与依赖注入方法解析createCglibProxy注意事项setApplicationContext 方法createCglibProxy 方法 类定义与依赖注入 Service: 标识这是一个 Spring 管理的服务类。ApplicationContextAware: 实现该接口允许你在类中获取 ApplicationContext 对象,从而…

应用程序越权漏洞安全测试总结体会

应用程序越权漏洞安全测试总结体会 一、 越权漏洞简介 越权漏洞顾名思议超越了自身的权限去访问一些资源,在OWASP TOP10 2021中归类为A01:Broken Access Control,其本质原因为对访问用户的权限未进行校验或者校验不严谨。在一个特定的系统或…

JAVA:Spring Boot 集成 Quartz 实现分布式任务的技术指南

1、简述 Quartz 是一个强大的任务调度框架,允许开发者在应用程序中定义和执行定时任务。在 Spring Boot 中集成 Quartz,可以轻松实现任务的调度、管理、暂停和恢复等功能。在分布式系统中,Quartz 也支持集群化的任务调度,确保任务…

改善 Kibana 中的 ES|QL 编辑器体验

作者:来自 Elastic Marco Liberati 随着新的 ES|QL 语言正式发布,Kibana 中开发了一种新的编辑器体验,以帮助用户编写更快、更好的查询。实时验证、改进的自动完成和快速修复等功能将简化 ES|QL 体验。 我们将介绍改进 Kibana 中 ES|QL 编辑器…

【深度学习入门_基础篇】线性代数本质

开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 熟悉向量、线性组合、线性变换、基变换、矩阵运算、逆函数、秩、列空间、零空间、范式、特征指、特征向量等含义与应用。 强烈推荐此视频: 【官方双语/合集】…

【SpringBoot】当 @PathVariable 遇到 /,如何处理

1. 问题复现 在解析一个 URL 时,我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码: RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…

VBA(Visual Basic for Applications)编程|excel|一系列网址或文件路径快速转换为可点击的超链接

很多时候,我们需要把导入的数据某一列转换成超链接,比如URL形式的列。 那么,大批量的情况下,无疑一个个手动点击是非常愚蠢的办法,这个时候我们就需要VBA编程来编写宏,通过编写宏来简化这些手动操作并不现…

小程序开发全解析 快速构建高效应用的核心指南

内容概要 小程序开发是当前数字世界中炙手可热的领域,吸引了无数开发者和企业的关注。随着技术的进步,小程序成为了提升用户体验、增强品牌曝光以及增加客户互动的重要工具。了解小程序的基本概念,就像是打开了一扇通往新世界的大门。 在这…

SQL—Group_Concat函数用法详解

SQL—Group_Concat函数用法详解 在LC遇见的一道很有趣的SQL题,有用到这个函数,就借这道题抛砖引玉,在此讲解一下group_concat函数的用法。🤣 GROUP_CONCAT([DISTINCT] expression [ORDER BY expression] [SEPARATOR separator])…

Edge Scdn的应用场景有哪些?

酷盾安全Edge Scdn 具备强大的安全防护能力,通过多层防御机制,如防火墙、DDoS 攻击防护、入侵检测和防御、数据加密等,有效抵御各种网络攻击,包括 DDoS 攻击、CC 攻击、SQL 注入攻击、XSS 跨站脚本攻击等,保障网站和应…

流光效果

1、流光效果是什么 在 Unity Shader 中的流光效果是一种动态的视觉效果,通常用于给材质增加一种闪光或光线移动的效果,使物体表面看起来像是有光在流动。这种效果常用于武器光效、能量护盾、传送门等等,可以让物体看起来更加生动富有科技感 …

滑动窗口——串联所有单词的子串

一.题目描述 30. 串联所有单词的子串 - 力扣(LeetCode) 二.题目解析 题目前提:s是一个字符串,words是一个字符串数组,里面所有的字符串的长度都是相等的。 题目要求:找到s中的一段连续的子串&#xff0…

【微软,模型规模】模型参数规模泄露:理解大型语言模型的参数量级

模型参数规模泄露:理解大型语言模型的参数量级 关键词: #大型语言模型 Large Language Model #参数规模 Parameter Scale #GPT-4o #GPT-4o-mini #Claude 3.5 Sonnet 具体实例与推演 近日,微软在一篇医学相关论文中意外泄露了OpenAI及Claud…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时,我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过,在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理,现在我们就撸一把构建元素中插件的用法。 一、…

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…