迁移学习之领域自适应(domain adaptation)

news2024/12/23 4:21:48

        比如有一堆有标注的训练数据,这些数 据来自源领域,用这些数据训练出一个模型,这个模型可以用在不一样的领域。在训练的时 候,我们必须要对测试数据所在的目标领域有一些了解。

        随着了解的程度不同,领域自适应的方法也不同。如果目标领域上有一大堆有标签的数 据,这种情况其实不需要做领域自适应,直接用目标领域的数据训练。如果目标领域上有一点 有标签的数据,这种情况可以用领域自适应,可以用这些有标注的数据微调在源领域上训练 出来的模型。这边的微调跟BERT的微调很像,已经有一个在源领域上训练好的模型,只要 拿目标领域的数据跑个两、三个回合就足够了。在这一种情况下,需要注意的问题是,因为目 标领域的数据量非常少,所以要小心不要过拟合,不要在目标领域的数据上迭代太多次。在目 标数据上迭代太多次,可能会过拟合到目标领域的少量数据上,在真正的测试集的表现可能 就不好。(为了避免过拟合的情况,有很多的解决方法,比如调小一点学习率。要让微调前、后的 模型的参数不要差很多,或者让微调前、后的模型的输入跟输出的关系,不要差很多等 等。)

        下面主要介绍下在目标领域上有大量未标注的数据的这种情况。这种情况其实是很符合 实际会发生的情况。比如在实验室里面训练了一个模型,并想要把它用在真实的场景里面,于 是将模型上线。上线后的模型确实有一些人来用,但得到的反馈很差,大家嫌弃系统正确率很 低。这种情况就可以用领域自适应的技术,因为系统已经上线后会有人使用,就可以收集到一 大堆未标注的数据。这些未标注的数据可以用在源领域上训练一个模型,并用在目标领域。

        最基本的想法如图1 所示,训练一个特征提取器(feature extractor)。特征提取器也 是一个网络,这个网络输入是一张图片,输出是一个特征向量。虽然源领域与目标领域的图像 不一样,但是特征提取器会把它们不一样的部分去除,只提取出它们共同的部分。虽然源领域 和目标领域的图片的颜色不同,但特征提取器可以学习到把颜色的信息滤掉,忽略颜色。源领 域和目标领域的图片通过特征提取器以后,其得到的特征是没有差异的,分布相同。通过特征提取器可以在源领域上训练一个模型,直接用在目标领域上。通过领域对抗训练(domain adversarial training)可以得到领域无关的表示。

图1 通过特征提取器过滤颜色信息

        一般的分类器可分成特征提取器和标签预测器(labelpredictor)两个部分。图像的分类 器输入一张图像,输出分类的结果。假设图像的分类器有10层,前5层是特征提取器,后5 层是标签预测器。前5层可看成特征提取器,一个图像通过前5层,其输出是一个向量;如 果使用卷积神经网络,其输出是特征映射,但特征映射“拉直”也可以看做是一个向量,该向量 再输入到后面5层(标签预测器)来产生类别。

        图2 给出了特征提取器和标签预测器的训练过程。对于源领域上标注的数据,把源领 域的数据“丢”进去,这跟训练一个一般的分类器一样,它通过特征提取器,再通过标签预测器, 可以产生正确的答案。但不一样的地方是,目标领域的一堆数据是没有任何标注的,把这些图 片“丢”到图像分类器,把特征提取器的输出拿出来看,希望源领域的图片“丢”进去的特征跟目 标领域的图片“丢”进去的特征相同。图2 中蓝色的点表示源领域图片的特征,红色的点表 示目标领域图片的特征,通过领域对抗训练让蓝色的点跟红色的点分不出差异。

图2 训练特征提取器,让源领域和目标领域的特征无差异

        如图3 所示,我们要训练一个领域分类器。领域分类器是一个二元的分类器,其输入 是特征提取器输出的向量,其目标是判断这个向量是来自于源领域还是目标领域,而特征提 取器学习的目标是要去想办法骗过领域分类器。领域对抗训练非常像是生成对抗网络,特征 提取器可看成生成器,领域分类器可看成判别器。但在领域对抗训练里面,特征提取器优势太 大了,其要骗过领域分类器很容易。比如特征提取器可以忽略输入,永远都输出一个零向量。 这样做领域分类器的输入都是零向量,其也无法判断该向量的领域。但标签预测器也需要特 征判断输入的图片的类别,如果特征提取器只会输出零向量,标签预测器无法判断是哪一张 图片。特征提取器还是需要产生向量来让标签预测器可以输出正确的预测。因此特征提取器 不能永远都输出零向量。

图3 领域对抗训练

        假设标签预测器的参数为θp,领域分类器的参数为θd,特征提取器的参数为θf。源领域的图像是有标签的,所以可以计算它们的交叉熵来得出损失L。领域分类器要想办法判断 图片是源领域还是目标领域,这就是一个二元分类的问题,该分类问题的损失为Ld。我们要 去找一个θp,它可以让L越小越好,即

我们要去找一个θd,它可以让这个Ld 越小越好,即 

        标签预测器要让源领域的图像分类越正确越好,领域分类器要让领域的分类越正确越好。 而特征提取器站在标签预测器这边,它要去做领域分类器相反的事情,所以特征提取器的损 失是标签预测器的损失L减掉领域分类器的损失Ld,所以特征提取器的损失是L−Ld,找 一组参数θf 让L−Ld 的值越小越好,即 

        假设领域分类器的工作是把源领域跟目标领域分开,根据特征提取器的特征,来判断数据是 来自源领域还是目标领域,把源领域和目标领域的两组特征分开。而特征提取器的损失中是 −Ld,这意味着它要做的事情跟领域分类器相反。如果领域分类器根据某张图片的特征判断这 张图片属于源领域,而特征提取器要让领域分类器根据这张图片的特征判断这张图片属于目 标领域,这样做也就可以分开源领域和目标领域的特征。本来领域分类器是让Ld的值越小越 好,特征提取器要让Ld的值越大越好,其目的都是分开源领域跟目标领域的特征。以上是最 原始的领域对抗训练做法。 

        领域对抗训练最原始的论文做了如图4所示的四个从源领域到目标领域的任务。如果 用目标领域的图片训练,目标领域的图片测试,结果如表 1所示,每一个任务正确率都是 90% 以上。但如果用源领域训练,目标领域测试,结果比较差。如果使用领域对抗训练,正 确率会有明显的提升。

图4 领域对抗训练最原始论文使用的任务

 

表1 不同源领域和目标领域的数字图像分类的准确率

        领域对抗训练最早的论文发表在2015 年的 ICML 上面,其比生成对抗网络还要稍微晚 一点,不过它们几乎可以是同时期的作品。

        刚才这整套想法,有一个小小的问题。用蓝色的圆圈和三角形表示源领域上的两个类别, 用正方形来表示目标领域上无类别标签的数据。可以找一个边界去把源领域上的两个类别分 开。训练的目标是要让正方形的分布跟圆圈、三角形合起来的分布越接近越好。在图5(a) 所示的情况中,红色的点跟蓝色的点是挺对齐在一起的。在图5 (b)所示的情况中,红 色的点跟蓝色的点是分布挺接近的。虽然正方形的类别是未知的,但蓝色的圆圈跟蓝色的三 角形的决策边界是已知的,应该让正方形远离决策边界。因此两种情况相比,我们更希望在 图5 (b)的情况发生,而避免让在图5(a)的状况发生。

图5 决策边界

        让正方形远离边界(boundary)最简单的做法如图13.8所示。把很多无标注的图片先“丢” 到特征提取器,再“丢”到标签预测器,如果输出的结果集中在某个类别上,就是离边界远;如 果输出的结果每一个类别非常地接近,就是离边界近。除了上述比较的简单的方法外,还可以 使用DIRT-T、最大分类器差异(maximum classifier discrepancy)等方法。这些方法在 领域自适应中是不可或缺的。

图6 离边界越远越好

        目前为止都假设源领域跟目标领域的类别都要是一模一样,比如图像分类,源领域有老 虎、狮子跟狗,目标领域也应该要有老虎、狮子跟狗,但实际上目标领域是没有标签的,其里面的类别是未知的。如图7所示,实线的椭圆圈代表源领域里面有的东西,虚线的椭圆圈 代表目标领域里面有的东西。图7(a)中源领域里面的东西比较多,目标领域里面的东西 比较少;图7(b)中源领域里面的东西比较少,目标领域的东西比较多。图7(c)中两 者虽然有交集,但是各自都有独特的类别。

图 7 强制完全对齐源领域跟目标领域的问题

        强制把源领域跟目标领域完全对齐在一起是有问题的,比如图13.9(c)里面,要让源领 域的数据跟目标领域的数据的特征完全匹配,这意味是要让老虎去变得跟狗像,或者让老虎 变得跟狮子像,这样老虎这个类别就不能区分了。源领域跟目标领域有不同标签问题的解决 方法,可参考论文“Universal Domain Adaptation”。

        但是有一个可能是目标领域的数据不仅没有标签,而且还很少,比如目标领域只有一张 图片,也就无法跟源领域对齐。这种情况可使用测试时训练(TestingTime Training,TTT) 方法,读者可参考论文“Test-Time Training with Self-Supervision for Generalization under Distribution Shifts”。

        如果特征提取器是卷积神经网络,而不是线性层(linear layer)。领域分类器输入 是特征映射,特征映射本来就有空间的关系。把两个领域“拉”在一起会不会有影响隐空 间(latent space),让隐空间没能学到本来希望它学到的东西? A:会有影响。领域自适应训练需要同时做好两个方面的事:一方面要骗领域分类器, 另一方面是要让分类变正确。即不仅要把两个领域对齐在一起,还要让隐空间的分布 是正确的。比如我们觉得1跟7比较像,为了要让分类器做好,特征提取器会让1跟 7 比较像。因为要提高标签预测器的性能,所以隐表示(latentrepresentation)里面的 空间仍然是一个比较好的隐空间。但如果给领域分类器就是要骗过领域分类器,这件 事情的权重太大。模型就会学到只想骗过领域分类器,它就不会产生好的隐空间。

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

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

相关文章

(C++ STL)vector类的简单模拟实现与源码展示

vector类的简单模拟实现 一、前言二、vector 的成员变量三、vector 部分函数实现size、capacityreserveresizeinsert 与注意事项erase构造、析构、赋值拷贝 四、vector 源代码 以下代码环境为 VS2022 C。 一、前言 vector类 本质上就是数据结构中的顺序表。(可参考&#xff1…

【最新华为OD机试E卷】boos的收入(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

4.负载均衡

文章目录 1.多级部署2.实现请求计数器3.负载均衡3.1服务端负载均衡3.2客户端负载均衡3.3自定义负载均衡3.4负载均衡策略3.5 LoadBalance 原理 4.部署实现 大家好,我是晓星航。今天为大家带来的是 负载均衡 相关的讲解!😀 1.多级部署 复制一…

C语言 | Leetcode C语言题解之第378题有序矩阵中第K小的元素

题目&#xff1a; 题解&#xff1a; bool check(int **matrix, int mid, int k, int n) {int i n - 1;int j 0;int num 0;while (i > 0 && j < n) {if (matrix[i][j] < mid) {num i 1;j;} else {i--;}}return num > k; }int kthSmallest(int **matri…

面试题小总结

一、为什么要使用Redis&#xff1f; 因为它是内存数据库&#xff0c;运行速度快因为它的工作线程是单线程&#xff0c;具有串行化&#xff0c;原子性具有IO模型&#xff0c;天生支撑高并发是kv模型&#xff0c;v具有多个数据结构具有本地方法&#xff0c;可以计算数据移动是二…

Mac用户必备:轻松添加Git SSH密钥全攻略

最近新买了一台MacBook笔记本&#xff0c;然后安装了git&#xff0c;准备下载代码&#xff0c;正好遇到配置GitHub的ssh密钥&#xff0c;记录一下整个操作流程。 操作步骤 在Mac上添加Git SSH密钥的步骤如下&#xff1a; 检查是否已有SSH密钥&#xff1a; 打开终端&#xff0…

Nginx: https解决安全问题

https原理 1 &#xff09;http协议存在的问题 数据使用明文传输&#xff0c;可能被黑客窃取 (需要信息加密)报文的完整性无法验证&#xff0c;可能被黑客篡改 (需要完整性校验)无法验证通信双方的身份&#xff0c;可能被黑客伪装 (需要身份认证) 2 ) https 原理 所谓 https,…

新160个crackme - 043-riijj_cm_20041121

运行分析 除了主程序还有一个dll文件&#xff0c;应该是要加载pf1.dll这个动态链接库运行主程序&#xff0c;需破解Name和Serial&#xff0c;点击注册无反应 PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 尝试ida动调加载动态链接库pf1.dll&#xff0c…

全能型AI“草莓”:未来趋势还是市场泡沫?

你好&#xff0c;我是三桥君 近日&#xff0c;OpenAI宣布将在秋季推出代号为“草莓”的新AI模型。这一消息迅速引起了科技界和市场的广泛关注。 OpenAI的新项目“草莓”&#xff08;Strawberry&#xff09;是一个备受关注的人工智能模型&#xff0c;预计将在今年秋季发布。这个…

算法复盘——LeetCode hot100:哈希

文章目录 哈希表哈希表的基本概念哈希表的使用1. 插入操作2. 查找操作3. 删除操作 哈希表的优点和缺点1.两数之和复盘 242.有效的字母异位词复盘 49.字母异位词分组复盘 128. 最长连续序列复盘HashSet 哈希表 先来搞清楚什么是哈希表吧~ 概念不清楚方法不清楚怎么做题捏 哈希表…

MongonDB-索引

一、索引-index (一) 概述 索引支持在MongoDB中高效地执行查询。如果没有索引&#xff0c;MongoDB必须执行全集合扫描&#xff0c;即扫描集合中的每个文档&#xff0c;以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的&#xff0c;特别在处理大量的数据时&am…

firewalld 防火墙常用命令,新手必看

firewalld 防火墙常用命令 防火墙状态命令 systemctl start firewalld #启动防火墙 systemctl stop firewalld #关闭防火墙 systemctl restart firewalld #重启防火墙 systemctl enable firewalld #设置开机自启 systemctl disable firewalld #禁用开机自启 systemctl s…

自己开发完整项目一、登录功能-03(使用springSecurity安全框架,查询用户角色权限)

一、说明 在前面两章节&#xff0c;实现了通过springsecurity来进行用的登录认证&#xff0c;当用户输入用户名和密码之后&#xff0c;通过额数据库中的信息比对&#xff0c;比对成功那么放行。但是还存在一个问题&#xff1a;因为系统的所有页面包括按钮都是有各自的权限&…

全网最全robotframework自动化测试环境搭建

一、前言 1、在2019年之前&#xff0c;robotframework-ride的版本一直是1.5.2.1&#xff0c;是2016年1月份的版本&#xff0c;只能安装在python2.7的环境上&#xff0c;导致如果想同时使用robotframework做测试且又需要python3环境编写python代码的小伙伴都需要在操作系统上安…

Golang 读取文件

GoLang读取文件需要用到os类去打开文件&#xff0c;然后再用其他方式分析文件里的内容。打开文件比较简单&#xff0c;使用os.Open就可以了&#xff0c;记住用defer关闭就行。但是读取文件内容就头疼了&#xff0c;以文本文件为例子&#xff0c;就有各种方式 读取到byte数组 首…

渐进式衰老?医美三剑客的“市梦率”幻灭了

医美股神话彻底幻灭了。 从股价蒸发到业绩失速&#xff0c;“医美三剑客”上演着繁华落幕&#xff0c;回归平凡的剧本。 近一年来&#xff0c;爱美客、华熙生物、昊海生科股价分别累计下跌52.97%、46.03%、16.09%。 “医美三剑客”近一年累计跌幅&#xff08;资料来源&#x…

分水岭算法简介

分水岭算法是一种经典的图像分割技术&#xff0c;广泛应用于图像处理领域。它的名称源自地理学中的“分水岭”概念&#xff0c;即在地形中&#xff0c;水从高处流向低处&#xff0c;最终汇聚成河流的过程。在图像分割中&#xff0c;分水岭算法将灰度图像视为地形&#xff0c;将…

STM32(八):定时器——输入捕获实验

目录 输入捕获模式测频率&#xff1a; 结构图&#xff1a; 步骤&#xff1a; 部分函数详解&#xff1a; 源码&#xff1a; PWMI模式测频率占空比&#xff1a; 结构图&#xff1a; ​编辑 举例说明 源码&#xff1a; 输入捕获模式测频率&#xff1a; 结构图&#xf…

using showdown js with openAi streaming response

题意&#xff1a;"使用 Showdown.js 处理 OpenAI 流式响应" 问题背景&#xff1a; I tried using showdownjs to translate streamed markdown from OpenAi to HTML "我尝试使用 Showdown.js 将来自 OpenAI 的流式 Markdown 转换为 HTML" I changed the …

机器学习第五十四周周报 MAGNA

文章目录 week54 MAGNA摘要Abstract一、文献阅读1. 题目2. Abstract3. 文献解读3.1 Introduce3.2 创新点 4. MAGNA4.1 基础4.2 多跳注意力扩散机制4.3 网络架构4.4 图注意力扩散机制的分析 5. 实验分析5.1 节点分类5.2 知识图谱 6.结论 二、若依系统1. 权限管理2. 数据字典3. 其…