- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
论文标题:PCL: Proxy-based Contrastive Learning for Domain Generalization 论文作者: 论文来源: 论文地址:download 论文代码: download 引用次数:
域泛化是指从一组不同的源域中训练一个模型,可以直接推广到不可见的目标域的问题。一个很有前途的解决方案是对比学习,它试图通过利用来自不同领域的样本到样本对之间丰富的语义关系来学习领域不变表示。一种简单的方法是将来自不同域的正样本对拉得更近,同时将其他负样本对推得更远.
在本文中,我们发现直接应用基于对比的方法(如有监督的对比学习)在领域泛化中是无效的。本文认为,由于不同域之间的显著分布差距,对准正样本到样本对往往会阻碍模型的泛化。为了解决这个问题,提出了一种新的基于代理的对比学习方法,它用代理到样本关系代替了原始的样本-样本关系,显著缓解了正对齐问题.
整体框架 。
现有对比学习的对比损失大多考虑正对和负对,本文受到 [ 61 ] 损失函数的启发,它只考虑正样本之间的关系,假设 $x_i$、$x_j$ 是从同一类的不同源域进行采样。设 $z=F_{\theta}(\boldsymbol{x})$ 是由特征提取器 $F_{\theta}$ 提取的特征,我们有: 。
$\mathcal{L}_{\mathrm{pos}}=\frac{1}{\alpha} \log \left(1+\sum \exp \left(-\boldsymbol{z}_{i}^{\top} \boldsymbol{z}_{j} \cdot \alpha\right)\right) \quad\quad\quad(1)$ 。
实验:是否使用 包含正对之间对比的 $\text{instance} - \text{instance}$ 之间的对比学习?
结果:单纯使用交叉熵损失比 交叉熵损失 + 正对之间的对齐 效果还好,所以跨域之间的正对对齐是有害的.
多源域适应; 。
特征提取器:$F_{\theta}: X \rightarrow Z$ 。
分类器:$G_{\psi}: \mathcal{Z} \rightarrow \mathbb{R}^{C}$ 。
交叉熵损失函数:
$\mathcal{L}_{\mathrm{CE}}=-\log \frac{\exp \left(\boldsymbol{w}_{c}^{\top} \boldsymbol{z}_{i}\right)}{\exp \left(\boldsymbol{w}_{c}^{\top} \boldsymbol{z}_{i}\right)+\sum_{j=1}^{C-1} \exp \left(\boldsymbol{w}_{j}^{\top} \boldsymbol{z}_{i}\right)} \quad\quad\quad(2)$ 。
其中,$\boldsymbol{w}_{c}$ 代表目标域的某一类中心; 。
$\text{Softmax CE}$ 损失只考虑了代理到样本的关系,而忽略了丰富的语义样本与样本之间的关系.
对比损失函数:
$\mathcal{L}_{\mathrm{CL}}=-\log \frac{\exp \left(\boldsymbol{z}_{i}^{\top} \boldsymbol{z}_{+} \cdot \alpha\right)}{\exp \left(\boldsymbol{z}_{i}^{\top} \boldsymbol{z}_{+} \cdot \alpha\right)+\sum \exp \left(\boldsymbol{z}_{i}^{\top} \boldsymbol{z}_{-} \cdot \alpha\right)}$ 。
基于对比的损失考虑了丰富的样本与样本之间的关系。其关键思想是学习一个距离,将 $\text{positive pairs}$ 拉近,将 $\text{negative pairs}$ 推远.
公式:
$\begin{aligned}\mathcal{L}_{\mathrm{CL}} & =\lim _{\alpha \rightarrow \infty} \frac{1}{\alpha}-\log \left(\frac{\exp \left(\alpha \cdot s_{p}\right)}{\exp \left(\alpha \cdot s_{p}\right)+\sum_{j=1}^{N-1} \exp \left(\alpha \cdot s_{n}^{j}\right)}\right) \\& =\lim _{\alpha \rightarrow \infty} \frac{1}{\alpha} \log \left(1+\sum_{j=1}^{N-1} \exp \left(\alpha\left(s_{n}^{j}-s_{p}\right)\right)\right) \\& =\max \left[s_{n}^{j}-s_{p}\right]_{+} .\end{aligned}$ 。
理解:由于域之间的域差异很大,简单的拉近正对之间的距离,拉远负对之间的距离是不合适的,这是由于往往存在某些难学的样本,使得模型总是识别错误.
$\text{Softmax}$ 损失 在学习类代理方面是有效的,能够快速、安全地收敛,但不考虑样本与样本之间的关系。基于对比损失利用了丰富的 样本-样本 关系,但在优化密集的 样本-样本 关系方面训练复杂性高.
$\mathcal{L}_{\mathrm{PCL}}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp \left(\boldsymbol{w}_{c}^{\top} \boldsymbol{z}_{i} \cdot \alpha\right)}{Z}$ 。
基于代理的对比损失:
$\mathcal{L}_{\mathrm{PCL}}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp \left(\boldsymbol{w}_{c}^{\top} \boldsymbol{z}_{i} \cdot \alpha\right)}{Z}$ 。
其中, 。
$Z=\exp \left(\boldsymbol{w}_{c}^{\top} \boldsymbol{z}_{i} \cdot \alpha\right)+\sum_{k=1}^{C-1} \exp \left(\boldsymbol{w}_{k}^{\top} \boldsymbol{z}_{j} \cdot \alpha\right)+\sum_{j=1, j \neq i}^{K} \exp \left(\boldsymbol{z}_{i}^{\top} \boldsymbol{z}_{j} \cdot \alpha\right)$ 。
Note :$N$ 代表的是 $\text{batch_size}$ 的大小,$K$ 代表的是 $x_i$ 负样本的数量.
公式:
$\mathcal{L}_{\mathrm{PCL}-\mathrm{in}}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp \left(\boldsymbol{v}_{c}^{\top} \boldsymbol{e}_{i}\right)}{E}$ 。
其中, 。
$E=\exp \left(\boldsymbol{v}_{c}^{\top} \boldsymbol{e}_{i}\right)+\sum_{k=1}^{C-1} \exp \left(\boldsymbol{v}_{k}^{\top} \boldsymbol{e}_{j}\right)+\sum_{j=1, j \neq i}^{B} \exp \left(\boldsymbol{e}_{i}^{\top} \boldsymbol{e}_{j}\right)$ 。
训练目标:
$\mathcal{L}_{\text {final }}=\mathcal{L}_{\mathrm{CE}}+\lambda \cdot \mathcal{L}_{\text {PCL-in }}$ 。
正对齐实验的细节 。
消融实验 。
超参数实验 。
困难样本分析 。
。
略 。
。
最后此篇关于迁移学习(PCL)《PCL:Proxy-basedContrastiveLearningforDomainGeneralization》的文章就讲到这里了,如果你想了解更多关于迁移学习(PCL)《PCL:Proxy-basedContrastiveLearningforDomainGeneralization》的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在这里阅读了有关代理的示例: http://docs.oracle.com/javase/1.3/docs/guide/reflection/proxy.html 可以看到,'invoke'方法中的
在我的通用 nuxt 应用程序中,我将代理设置为 true 并重写了我的 url 以避免 CORS 问题。但是当我将代理设置为 true 时,我所有的发布请求都会更改为获取请求。不明白为什么以及如何将
我正在开发一个连接到 SFTP 服务器并使用 Apache Commons VFS 下载文件的应用程序,它工作得很好,但系统需要允许用户根据需要指定代理。 现在,我知道 Apache Commons
跟随线程[实体无法转换为javassist.util.proxy.Proxy,我现在确实有服务器端错误(tks thomas) 我无法在我的应用程序中面对真正的问题。 java.lang.ClassC
我正在使用 Charles Proxy 重写 API 的响应以进行测试。 如果我设置断点,我就可以按照自己的意愿完全重写原始响应。 但是,如果我想通过“重写”工具自动化它,我就陷入困境了,似乎你无法修
让我解释一下困境。 我使用 Amazon 的 3 项服务:EC2、S3 和 CloudFront。 EC2 接收上传的文件,并将其存储在 S3 存储桶中。然后 CloudFront 镜像 S3 存储桶
我正在使用 Caddy 在 DigitalOcean Ubuntu droplet 上反向代理某些站点。 这是我的 Caddy 文件,非常简单:upside_down: my-site.com {
我正在尝试测试承受多台计算机负载的 SOCKS 代理。我的代码大纲类似于 使用一个客户端直接连接到服务器,下载测试文件,并记录所花费的时间。 通过代理与一个客户端连接,下载测试文件,并记录所花费的时间
以下情况: 如果我将浏览器的 http/https 代理设置为 Charles 为 (127.0.0.1:8888) 配置的端口,使用 Charles 代理拦截 Web 流量就可以正常工作 如果我将浏
我有一个使用 grunt 构建的 angularJs 应用程序和一个用 Java 编写的在 tomcat 服务器上运行的服务器后端。为了在开发时将它们连接在一起,我想使用 grunt-connect-
对于文件上传,我试图在我的 Spring Controller 中注入(inject)并使用 validator ,如下所示: @RestController @RequestMapping("/ap
我需要使用 CaSTLe DynamicProxy 来代理接口(interface),方法是向 ProxyGenerator.CreateInterfaceProxyWithTarget 提供接口(i
我已经看到,当不同框架(例如实现 EJB 规范的框架或某些 JPA 提供程序)中发生错误时,堆栈跟踪包含像 com.sun.proxy.$Proxy 这样的类。我知道代理是什么,但我正在寻找更技术性和
我正在使用带有多个 apiserver 的集群设置,它们前面有一个负载均衡器,用于外部访问,并安装在裸机上。 就像 High Availability Kubernetes Clusters 中提到的
我使用 Charles 代理(在 OS X 10.9.3 下,Mavericks 下)修改 Origin header ,以便我连接的 API(开发中)接受来自开发环境的传入请求。 我设法通过一个简单
我已经在 Python 中实现了一个“网络服务”父类(super class),如下所示: class NetworkService (threading.Thread): """
我正在使用node.js代理。但是它工作成功: proxy.on('proxyResponse', function (proxyRes, req, res) { console.log("h
我正在尝试使用Nginx-Proxy在Ubuntu VPS的docker容器内运行WordPress网站。 我创建了以下docker-compose.yml文件 version: '3.4' serv
我一直在使用 DataKinds 扩展以类型安全的方式将类型级别 Nats 传递给函数,我只是想知道是否有更好的编写方式: (Proxy :: Proxy 42) 例如,如果类型系统看到参数需要,是否
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我是一名优秀的程序员,十分优秀!