CLEFT 基于高效大语言模型和快速微调的语言-图像对比学习

news2024/11/15 1:49:03

CLEFT: Language-Image Contrastive Learning with Efficient Large Language Model and Prompt Fine-Tuning

github.com

paper

CLEFT是一种新型的对比语言图像预训练框架,专为医学图像而设计。它融合了医学LLM的预训练、高效微调和提示上下文学习,展现出卓越的性能!该框架由耶鲁大学研发。

最新进展证明了对比语言-图像预训练(CLIP)在自监督表征学习方面取得显著成功。然而,类似CLIP的现有方法通常需要大量GPU资源和长时间训练,因为模型和数据集规模较大,这使其不适用于医疗应用场景中,并非所有都有大规模数据集可供使用。同时,手动从与图像相关联的标签中提取语言模型提示可能会忽略丰富信息样本所包含的内容。我们引入了一种创新的语言-图像对比学习方法CLEFT,在充分利用广泛预训练语言和视觉模型优势时实现高效率微调提示。此外,本文还提出了一种有效策略来基于上下文进行提示学习,以缩小临床诊断数据和简单类别标签之间差距,并充分利用其中丰富信息内容。相较于各种基线算法,在多个胸部X光和乳房X光检查数据集上验证结果显示提出的方法达到了最先进水平。与当前BERT编码器相比,所提出参数高效框架可以减少39%总可训练模型大小,并将可训练语言模型减少至仅4%。

动机

问题

  1. 资源消耗大
    • 现有的CLIP(Contrastive Language-Image Pre-training)类方法通常需要大量的GPU资源和长时间的训练,这主要是由于模型和数据集规模庞大。这使得这些方法在医疗领域的应用受限,因为医疗数据往往不如自然图像数据丰富。
  2. 语言模型提示的局限性
    • 现有的CLIP方法中的语言模型提示主要基于与图像绑定的标签手动生成,这可能忽略了训练样本中丰富的信息。
    • 手工制作的提示语缺乏多样性,可能导致文本编码器中的灾难性遗忘现象,并限制模型性能。
  3. 模型大小限制
    • 现有的医疗CLIP方法使用基于BERT的语言模型,其模型大小有限,影响了在嵌入空间中的表达能力,进一步限制了预训练能力。

解决问题的策略

  1. 引入高效的大型语言模型
    • 利用大规模预训练的语言模型和视觉模型的优势,以弥补医疗数据稀缺的问题。
    • 引入GPT-2基础的因果语言模型作为文本编码器,该模型在扩展到数十亿参数时表现出更好的能力。
  2. 参数高效的微调
    • 采用参数高效的微调(PEFT)模块,以减少训练期间的参数数量,同时保持大型语言模型中的稳健预训练知识。
    • 通过在冻结的大型语言模型中注入少量可训练参数,调整注意力层的输出,避免过拟合和灾难性遗忘。
  3. 学习上下文相关的提示
    • 提出一个高效的策略来学习上下文相关的提示,以弥补信息量丰富的临床诊断数据与简单类标签之间的差距。
    • 通过第二阶段的训练,优化可学习的上下文提示标记,提高模型的泛化能力。

方法

1. Boosting CLIP with an LLM
  1. 基础CLIP框架
    • 包括视觉编码器和文本编码器,通过相应的投影头将图像-文本对编码到特征空间,并映射到同一特征空间以桥接两种模态。
  2. PEFT LLM作为文本编码器
    • 使用GPT-2因果语言模型代替BERT模型,因为GPT-2在扩展到数十亿参数时表现出更强的能力。
    • 引入PEFT模块,在每个Transformer块中注入少量可训练参数,以调整注意力层的输出,同时保持大多数参数冻结。
    • 解锁LLM的嵌入层,在预训练期间更新相应的令牌嵌入,以缩小预训练文本数据与CLIP提示之间的领域差距。
  3. CLIP作为知识蒸馏
    • 将预训练的文本编码器视为教师模型,因为它已经有一个完善的嵌入空间,能够区分不同的样本。
    • 视觉编码器作为学生模型,其输出被优化以与教师模型的嵌入空间对齐,从而蒸馏出教师模型中的知识。
2. 学习上下文相关的提示
  1. 替换手工制作的提示
    • 在预训练后,冻结两个编码器,并用一系列可训练的标记替换原始手工制作的提示。
    • 这些可学习的上下文提示标记用于所有类别,以确保其泛化能力。
  2. 优化可学习的提示
    • 使用零样本分类交叉熵损失来优化这些可学习的上下文提示标记。
    • 允许提示标记适应不同的类别,避免潜在的捷径问题。

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

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

相关文章

什么是报表?分析报表在零售行业中的应用,并推荐“免费高质量”的报表工具

随着业务数据洪流般的激增,数据孤岛现象严重、处理流程冗长低效,以及报表管理体系的碎片化等问题,正悄然成为阻碍企业持续发展的绊脚石。 在此背景下,报表工具的角色变得愈发重要,它不仅是企业整合散落数据、加速工作…

【docker】php容器安装扩展

环境说明 操作系统:ubuntu 22.04 架构:x86_64 docker运行php容器,php版本7.4。 一、安装php自带扩展 说明:php自带扩展,可看php.ini文件中的,如gd、pdo_mysql、opcache、mysqli等等。这里只举例安装了…

【网站项目】SpringBoot749乡村日常政务管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Android RadioGroup实现多行显示,并保持单选

公司项目最近有个这样的需求&#xff0c;要求实现【多个文本&#xff0c;多行显示&#xff0c;且同时只能选中一个】。设计图效果如下&#xff1a; 看上去很简单&#xff0c;使用 RadioGroup LinearLayout RadioButton 快速实现&#xff1a; <RadioGroupandroid:id"…

项目细节优化

文章目录 1.解决重复注册1.AuthUserDomainServiceImpl.java 在注册之前从db查询是否已经存在该用户2.AuthUserService.java3.AuthUserServiceImpl.java4.测试1.请求2.后台&#xff0c;提示已经注册 2.用户信息查询1.接口设计2.代码实现1.UserController.java2.AuthUserDomainSe…

C语言:复读机2种写法(输入什么就输出什么)

&#xff08;1&#xff09;题目&#xff1a;输入什么内容&#xff0c;输出就是什么内容&#xff0c;遇到"#"为止。输入一个随便的字符 &#xff08;2&#xff09;代码&#xff1a; 【1】getchar()和putchar() #include "stdio.h"int main() {char ch;pr…

基于Python的Scrapy爬虫的个性化书籍推荐系统【Django框架、超详细系统设计原型】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍系统分析系统设计展示总结 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 近年来&#xff0c;随着互联网的蓬勃发展&#xff0c;企事业单…

linux docker 仓库拉取失败问题(已解决)

仓库拉取失败问题 前言错误示例解决注意 前言 我在服务器拉取仓库的镜像时&#xff0c;出现如下错误&#xff1a; Error response from daemon: Get “http://192.168.37.51:8050/v2/”: net/http: HTTP/1.x transport connection broken: malformed HTTP response “\x15\x0…

数据结构_study(七)

查找 查找表&#xff1a;同一类型的数据元素构成的集合 关键字&#xff08;键值&#xff09;&#xff1a;数据元素中某个数据项的值&#xff0c;用来标识数据元素 主关键字&#xff1a;唯一标识一个记录的关键字 次关键字&#xff1a;可以标识多个数据元素的关键字 查找&…

浅析DNS服务器:办公网DNS的架构思路分享

办公网 DNS 不同于业务网 DNS&#xff0c;主要承担的是企业或组织机构内部员工的日常办公的域名解析需求。比如日常的办公系统的访问、通过第三方认证系统进行身份认证才能访问办公系统资源、办公PC需要进行AD域控管理等……由于此办公网DNS服务器的设计需求也不尽相同&#xf…

【脚本说明撰写markdown】如何基于VScode 撰写使用说明文档,及格式转换.md、.html、.pdf格式

如何基于VScode 撰写使用说明文档&#xff0c;及格式转换.md、.html、.pdf格式 下载插件 下载markdown 进入vscode后&#xff0c;进入扩展工具&#xff08;快捷键ctrlshiftX&#xff09;&#xff0c;搜索markdown&#xff0c;选择markdown All in One并安装 安装Markdown Pr…

SolidWorks钣金中如何定义K因子、折弯系数

在使用SolidWorks设计钣金零件时总是会遇到折弯系数、K因子这样的专业名称&#xff0c;不知如何去定义他们的。 在SolidWorks中除了直接指定K因子确定折弯系数之外还可以利用折弯系数表来确定。在折弯系数表中指定钣金零件的折弯系数或折弯扣除数值等&#xff0c;折弯系数表还…

【Material-UI】按钮组:Split Button 详解

文章目录 一、Split Button 概述1. 组件介绍2. 基本用法 二、Split Button 的应用场景1. 提交操作2. 导出操作3. 文件操作 三、Split Button 的样式定制1. 变体&#xff08;Variants&#xff09;2. 颜色&#xff08;Colors&#xff09; 四、Split Button 的优势1. 提升用户体验…

江科大/江协科技 STM32学习笔记P20

文章目录 编码器接口测速定时器有关的库函数Encoder.cmain.c 编码器接口测速 编码器接口的初始化&#xff0c;第一步&#xff0c;RCC开启时钟&#xff0c;开启GPIO和定时器的时钟&#xff0c;第二步&#xff0c;配置GPIO&#xff0c;这里把PA6和PA7配置成输入模式&#xff0c;第…

【环绕字符串中唯一的子字符串】python刷题记录

R4-字符串 动态规划 class Solution:def findSubstringInWraproundString(self, s: str) -> int:dp[0]*26num1#dp初始化dp[ord(s[0])-ord(a)]1for c1,c2 in pairwise(s):if not (ord(c2)-ord(c1)-1)%26:num1else:num1dp[id]max(dp[id : ord(c2)-ord(a)],num)return sum(dp)p…

Java设计模式(适配器模式)

定义 将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。 角色 目标抽象类&#xff08;Target&#xff09;&#xff1a;目标抽象类定义客户所需的接口&#xff08;在类适配器中&#xff0c;目标抽象类只能是接口&#xff09;。 适配器类…

笔记小结:《利用Python进行数据分析》之字符串操作(含正则表达式)

目录 字符串对象方法 使用split分割字符串 连接字符串 查找子串 字串计数 替换字串 字符串方法表 正则表达式 分割数量不定的空白符 匹配正则表达式的所有模式 匹配字符串 替换字符串 将字符串分组 带有分组功能的findall pandas矢量化字符串函数 Python能够成…

hongmeng开发

Image图片组件 Text组件 如在两个限定目录里面定义完后&#xff0c;也要在 base牡蛎下去定义一下&#xff0c;不然会报错 TextInput Button Slider 案例 State imageWidth:number30//构建 → 界面build() {Column(){Image($r(app.media.startIcon)).width(this.imageWidth)Te…

帆软填报报表单元格根据其它单元格内容决定另外的单元格可筛选什么值

效果图&#xff1a; 方法有三种&#xff1a; 方法一&#xff1a; 添加链接描述

基于sklearn的机器学习 — 支持向量机(SVM)

支持向量机&#xff08;SVM&#xff1a;support vector machine&#xff09;另一种功能强大、应用广泛的学习算法&#xff0c;可应用于分类、回归、密度估计、聚类等问题。SVM可以看作是感知器&#xff08;可被视为一种最简单形式的前馈神经网络&#xff0c;是一种二元线性分类…