AI学习指南深度学习篇-对比学习的数学原理

AI学习指南深度学习篇——对比学习的数学原理

引言

在深度学习的领域中,对比学习作为一种无监督学习方法,逐渐引起了学术界和工业界的广泛关注。对比学习通过对样本间的相似性度量,来提升模型的特征表示能力,成为近年来研究的热点之一。本文将探讨对比学习的数学原理,包括对比损失函数的数学推导、样本相似性度量的数学表达,并解释对比学习的训练过程及其数学推导。

一、对比学习的背景

对比学习旨在通过成对样本之间的比较来学习特征表示。在传统的监督学习中,我们依赖标记数据指导模型的学习,而对比学习则可以利用未标记数据进行特征学习。其基本思想是,将相似样本的表示在嵌入空间中拉近,而将不同样本的表示推远。

1.1 对比学习的动机

对比学习的日益流行,源于其在视觉任务、自然语言处理等领域中优越的表现。通过利用相似性的信息,不仅可以降低对标记数据的依赖,还能在小数据集上获得更好的性能。

二、对比损失函数

对比学习的核心在于对比损失函数,它是衡量正负样本对间相似性的重要指标。通常我们使用的对比损失函数包括:对比损失(Contrastive Loss)和三元组损失(Triplet Loss)。

2.1 对比损失函数的数学推导

对比损失函数通常定义为:

L contrastive = 1 2 N ∑ i = 1 N ( y i D i 2 + ( 1 − y i ) max ⁡ ( 0 , m − D i ) 2 ) L_{\text{contrastive}} = \frac{1}{2N} \sum_{i=1}^{N} (y_i D_i^2 + (1-y_i) \max(0, m - D_i)^2) Lcontrastive=2N1i=1N(yiDi2+(1yi)max(0,mDi)2)

其中, D i D_i Di 是第 i i i 对样本的距离, y i y_i yi 是样本对的标签(1表相似,0表不相似), m m m 是一个预设的边界, N N N 是样本对总数。

数学推导:

  1. 样本距离的定义:
    在对比学习中,我们通常使用欧几里得距离或余弦相似度来计算样本之间的距离。欧几里得距离定义为:

    D i = ∣ ∣ f ( x i ) − f ( x j ) ∣ ∣ 2 2 D_i = ||\mathbf{f}(x_i) - \mathbf{f}(x_j)||_2^2 Di=∣∣f(xi)f(xj)22

    其中, f ( x ) \mathbf{f}(x) f(x) 表示样本 x x x 的特征表示。

  2. 损失函数的两个部分:

    • 当样本对相似( y i = 1 y_i = 1 yi=1)时,损失函数的第一部分 y i D i 2 y_i D_i^2 yiDi2促使相似样本对的距离趋近于0。
    • 当样本对不相似( y i = 0 y_i = 0 yi=0)时,损失函数的第二部分促使不同样本对的距离大于边界 m m m

2.2 示例

假设我们有如下数据对:

样本对标签
( x 1 , x 2 ) (x_1, x_2) (x1,x2)1
( x 3 , x 4 ) (x_3, x_4) (x3,x4)0

运用对比损失函数计算:

[ D 1 = ∣ ∣ f ( x 1 ) − f ( x 2 ) ∣ ∣ 2 2 , D 2 = ∣ ∣ f ( x 3 ) − f ( x 4 ) ∣ ∣ 2 2 ] [ D_1 = ||\mathbf{f}(x_1) - \mathbf{f}(x_2)||_2^2, \quad D_2 = ||\mathbf{f}(x_3) - \mathbf{f}(x_4)||_2^2 ] [D1=∣∣f(x1)f(x2)22,D2=∣∣f(x3)f(x4)22]

假设 D 1 = 0.5 , D 2 = 1.5 D_1 = 0.5, D_2 = 1.5 D1=0.5,D2=1.5,并设定边界 m = 1 m = 1 m=1,则损失为:

L contrastive = 1 2 ( 1 ⋅ 0.5 + 1 ⋅ max ⁡ ( 0 , 1 − 1.5 ) 2 ) = 1 2 ⋅ 0.5 = 0.25 L_{\text{contrastive}} = \frac{1}{2} \left( 1 \cdot 0.5 + 1 \cdot \max(0, 1 - 1.5)^2 \right) = \frac{1}{2} \cdot 0.5 = 0.25 Lcontrastive=21(10.5+1max(0,11.5)2)=210.5=0.25

三、样本相似性度量

在对比学习中,样本的相似性度量是重要的一环,主要通过计算样本间的距离来实现。常用的相似性度量包括欧几里得距离和余弦相似度。

3.1 欧几里得距离

欧几里得距离是最常用的距离度量之一,定义为:

D ( a , b ) = ∣ ∣ a − b ∣ ∣ 2 = ∑ i = 1 n ( a i − b i ) 2 D(\mathbf{a}, \mathbf{b}) = ||\mathbf{a} - \mathbf{b}||_2 = \sqrt{\sum_{i=1}^{n} (a_i - b_i)^2} D(a,b)=∣∣ab2=i=1n(aibi)2

其中, a \mathbf{a} a b \mathbf{b} b 为样本的特征向量。

3.2 余弦相似度

余弦相似度更适合高维稀疏数据,定义为:

cosine_similarity ( a , b ) = a ⋅ b ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 \text{cosine\_similarity}(\mathbf{a}, \mathbf{b}) = \frac{\mathbf{a} \cdot \mathbf{b}}{||\mathbf{a}||_2 ||\mathbf{b}||_2} cosine_similarity(a,b)=∣∣a2∣∣b2ab

3.3 示例

假设我们有如下两个样本的特征向量:

a = [ 1 , 2 , 3 ] , b = [ 4 , 5 , 6 ] \mathbf{a} = [1, 2, 3], \quad \mathbf{b} = [4, 5, 6] a=[1,2,3],b=[4,5,6]

  1. 计算欧几里得距离

D ( a , b ) = ( 1 − 4 ) 2 + ( 2 − 5 ) 2 + ( 3 − 6 ) 2 = 9 + 9 + 9 = 27 ≈ 5.196 D(\mathbf{a}, \mathbf{b}) = \sqrt{(1-4)^2 + (2-5)^2 + (3-6)^2} = \sqrt{9 + 9 + 9} = \sqrt{27} \approx 5.196 D(a,b)=(14)2+(25)2+(36)2 =9+9+9 =27 5.196

  1. 计算余弦相似度

a ⋅ b = 1 ⋅ 4 + 2 ⋅ 5 + 3 ⋅ 6 = 4 + 10 + 18 = 32 \mathbf{a} \cdot \mathbf{b} = 1 \cdot 4 + 2 \cdot 5 + 3 \cdot 6 = 4 + 10 + 18 = 32 ab=14+25+36=4+10+18=32

∣ ∣ a ∣ ∣ 2 = 1 2 + 2 2 + 3 2 = 14 , ∣ ∣ b ∣ ∣ 2 = 4 2 + 5 2 + 6 2 = 77 ||\mathbf{a}||_2 = \sqrt{1^2 + 2^2 + 3^2} = \sqrt{14}, \quad ||\mathbf{b}||_2 = \sqrt{4^2 + 5^2 + 6^2} = \sqrt{77} ∣∣a2=12+22+32 =14 ,∣∣b2=42+52+62 =77

cosine_similarity ( a , b ) = 32 14 ⋅ 77 \text{cosine\_similarity}(\mathbf{a}, \mathbf{b}) = \frac{32}{\sqrt{14} \cdot \sqrt{77}} cosine_similarity(a,b)=14 77 32

四、对比学习的训练过程

对比学习的训练过程主要包括以下几个步骤:

  1. 数据准备:选择原始数据并生成正负样本对,如通过数据增强生成相似样本。
  2. 特征提取:使用神经网络提取样本的特征表示。
  3. 计算损失:根据シ重对计算对比损失函数,更新网络权重。
  4. 模型评估:使用验证集评估模型特征表示的有效性。

4.1 训练过程示例

假设我们正在训练一个图像分类的对比学习模型,初步步骤如下:

  1. 数据准备

    假设我们有10张图片,通过旋转、反转和缩放等操作生成正样本。

  2. 特征提取

    使用卷积神经网络(CNN)提取特征,例如ResNet。

  3. 损失计算

    对生成的正负样本对使用对比损失函数计算损失。
    设定超参数,例如学习率和训练周期。

  4. 模型评估

    选择一些相关任务(如分类任务)进行评估,测试模型在下游任务中的表现。

结论

对比学习是一种具有广泛适应性的无监督学习方法,通过相似性比较学习样本的特征表示。本文详细探讨了对比学习的数学原理,包括对比损失函数的推导、样本之间的相似性度量,以及对比学习的训练过程。随着对比学习的不断深入,应用场景也将更加广泛,期待未来的研究能带来更多的创新和成果。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第502题IPO

题目&#xff1a; 题解&#xff1a; #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX_INT_NUMBER 0x7FFFFFFEtypedef struct {int capital;int profit; } ProNode;int CompareProfit(const ProNode *a, const ProNode *b) { /* 从大到小排序 */return b->pr…

根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的可能原因,确定排查方向,快速定位C++软件问题

目录 1、前言 2、初步分析dump文件 3、加载更多模块的pdb文件&#xff0c;可能能看到更多行的函数调用堆栈 4、从内存的角度去看&#xff0c;估计是访问了野指针导致的&#xff0c;沿着这个怀疑的方向快速地定位了问题 5、最后 C软件异常排查从入门到精通系列教程&#xf…

力扣OJ算法题:合并两个有序链表

—————————————————————————————————————————— 正文开始 OJ算法题&#xff1a;合并两个有序链表 思路 创建一个新的空链表&#xff08;可以用malloc优化&#xff09;和两个指针L1、L2分别指向两个链表&#xff0c;遍历两个链表&am…

Chromium 中chrome.contextMenus扩展接口实现分析c++

一、chrome.contextMenus 使用 chrome.contextMenus API 向 Google Chrome 的上下文菜单中添加项。您可以选择从右键菜单中添加的对象类型&#xff0c;例如图片、超链接和页面。 权限 contextMenus 您必须在扩展程序的清单中声明 "contextMenus" 权限&#xff0c…

R语言机器学习算法实战系列(十二)线性判别分析分类算法 (Linear Discriminant Analysis)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍LDA的原理LDA的步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺…

Ubuntu(22.04)本地部署Appsmith

Ubuntu&#xff08;22.04&#xff09;安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台&#xff0c;旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件&#xff0c;Appsmith 让用户无需编写大量代码即可创建…

Postman使用-基础篇

前言 本教程将结合业界广为推崇和使用的RestAPI设计典范Github API&#xff0c;详细介绍Postman接口测试工具的使用方法和实战技巧。 在开始这个教程之前&#xff0c;先聊一下为什么接口测试在现软件行业如此重要&#xff1f; 为什么我们要学习Postman&#xff1f; 现代软件…

数据轻松上云——Mbox边缘计算网关

随着工业4.0时代的到来&#xff0c;工厂数字化转型已成为提升生产效率、优化资源配置、增强企业竞争力的关键。我们凭借其先进的边缘计算网关与云平台技术&#xff0c;为工厂提供了高效、稳定的数据采集与上云解决方案。本文将为您介绍Mbox边缘计算网关如何配合明达云平台&…

基于SpringBoot微信小程序的书院预约系统【附源码】

基于SpringBoot微信小程序的书院预约系统 效果如下&#xff1a; 微信小程序首页界面 用户登录界面 书院信息界面 会议室界面 管理员登录界面 管理员主界面 用户界面 书院信息界面 会议室界面 会议室预约界面 研究背景 随着社会的快速发展&#xff0c;计算机技术的影响是全面…

SpringBoot 单元测试 - 登录认证在 Spring Boot 上的标准单元测试写法。

&#x1f449; 请投票支持这款 全新设计的脚手架 &#xff0c;让 Java 再次伟大&#xff01; 不要使用 SpringBootTest 使用 SpringBootTest 进行单元测试会启动整个 Spring Boot 容器&#xff0c;并引入整个项目的 development&test 依赖。缺点是速度慢、体积大、测试目标…

HarmonyOS Next应用开发——图像PixelMap变换

【高心星出品】 图像变换 图片处理指对PixelMap进行相关的操作&#xff0c;如获取图片信息、裁剪、缩放、偏移、旋转、翻转、设置透明度、读写像素数据等。图片处理主要包括图像变换、位图操作&#xff0c;本文介绍图像变换。 图形裁剪 // 裁剪图片 x&#xff0c;y为裁剪的起…

【element-tiptap】如何把分隔线改造成下拉框的形式?

当前的分隔线只有细横线这一种形式 但是咱们可以看一下wps中的分隔线&#xff0c;花里胡哨的 这些在wps里都需要使用快捷键打出来&#xff0c;真没找到菜单在哪里 那么这篇文章咱们就来看一下如何改造分隔线组件&#xff0c;改造成下拉框的形式&#xff0c;并且把咱们想要的分…

如何调试浏览器中的内存泄漏?

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介⭐ 如何调试浏览器中的内存泄漏&#xff1f;1. 什么是内存泄漏&#xff1f;2. 调试内存泄漏的工具3. 如何使用 Memory 面板进行内存调试3.1 获取内存快照&#xff08;Heap Snapshot&#xff09;获取内存快照的步骤&#xff1a;快照…

【二刷hot100】day 4

终于有时间刷刷力扣&#xff0c;求实习中。。。。 目录 1.最大子数组和 2.合并区间 3.轮转数组 4.除自身以外数组的乘积 1.最大子数组和 class Solution {public int maxSubArray(int[] nums) {//就是说可以转换为计算左边的最大值&#xff0c;加上中间的值&#xff0c…

1.6,unity动画Animator屏蔽某个部位,动画组合

动画组合 一边跑一边攻击 using System.Collections; using System.Collections.Generic; using UnityEngine;public class One : MonoBehaviour {private Animator anim;// Start is called before the first frame updatevoid Start(){anim GetComponent<Animator>();…

PPT自动化:Python如何修改PPT文字和样式!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 使用 Python 修改 PPT 文本内容📝 遍历所有幻灯片和文本框📝 设置和修改文本样式📝 复制和保留文本样式⚓️ 相关链接 ⚓️📖 介绍 📖 在日常工作中,PPT 的文字内容和样式修改似乎是一项永无止境的…

渗透测试实战—教育攻防演练中突破网络隔离

免责声明&#xff1a;文章来源于真实渗透测试&#xff0c;已获得授权&#xff0c;且关键信息已经打码处理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本…

基准线markLine的值超过坐标轴范围导致markline不显示

解决问题&#xff1a;动态设置yAxis的max值&#xff08;解决基准线不在y轴范围&#xff09; yAxis: [{name: 单位&#xff1a;千,...yAxis,nameTextStyle:{...yAxis.nameTextStyle,padding: [0,26,0,24]},paddingLeft:24,paddingRight:26},{name: 单位&#xff1a;百分比,...yA…

基金好书入门阅读笔记《基金作战笔记:从投基新手到配置高手的进阶之路》笔记3

公募基金的分类方式按投资范围分 80%以上资产投资于股票的&#xff0c;叫股票基金&#xff1b;80%以上资产投资于债券的&#xff0c;叫债券基金&#xff1b;80% 以上资产投资于其他基金的&#xff0c;叫FOF; 80%以上资产投资于货币市场的&#xff0c;叫货币基金&#xff1b;以上…

建库建表练习

目录 根据以下需求完成图书管理系统数据库及表设计&#xff0c;并建库建表&#xff0c;并截图创建表的详细信息(desc 表名),不用添加数据 1. 用户表: 字段: 姓名&#xff0c;用户名&#xff0c;密码&#xff0c;电话&#xff0c;住址&#xff0c;专业及年级 2. 图书表: 字段: 图…