TRL之为视觉语言多模态模型进行偏好优化

Preference Optimization for Vision Language Models with TRL

训练模型使得它能够理解并预测人类偏好是一项比较复杂的任务。诸如 SFT (Supervised finetuning) 的传统的方法一般都需要耗费较大成本,因为这些算法需要对数据打上特定的标签。而偏好优化 (Preference Optimization) 作为一种替代选项,通常可以简化这一过程,并产出更准确的结果。通过对候选回答的对比和排序,而不是赋予固定的标签,偏好优化使得模型能更高效地捕捉人类偏好中的细微差别。

偏好优化已经在大语言模型中广泛使用了,但现在,它也可以用在视觉语言模型 (VLM) 上。得益于 TRL 的开发,现在我们可以 使用 TRL 对 VLM 进行直接偏好优化 (Direct Preference Optimization)。本文将会介绍使用 TRL 和 DPO 对视觉语言模型进行训练的全过程。

偏好数据集

进行偏好优化,首先我们需要有一个能体现用户偏好的数据集。在双项选择的设定下,相应的数据一般包含一个提示词 (Prompt) 和两个候选回答,两个回答中一个被记为选中 (chosen),另一个被记为淘汰 (rejected)。模型将要去学习着给出选中的回答,而不是被淘汰的那个。下图就是一个例子:

图片来自 openbmb/RLAIF-V-Dataset 数据集

❔ Question: How many families?

  • ❌ Rejected: The image does not provide any information about families.
  • ✅ Chosen: The image shows a Union Organization table setup with 18,000 families.

需要注意的是,尽管选中的回答也不是完全正确的 (回答 18000 个家庭还是不对,应该是 18000000),但它也好于那个被淘汰的回答。

本文将使用 openbmb/RLAIF-V-Dataset 作为示例数据集,它包含了超过 83000 条标注的数据。可以通过下面代码查看一下数据集:

>>> from datasets import load_dataset
>>> dataset = load_dataset("openbmb/RLAIF-V-Dataset", split="train[:1%]")
>>> sample = dataset[1]
>>> sample["image"].show()
>>> sample["question"]
'how many families?'
>>> sample["rejected"]
'The image does not provide any information about families.'
>>> sample["chosen"]
'The image shows a Union Organization table setup with 18,000 families.'

我们将要训练的 VLM 模型需要文本和图像同时作为输入,所以这里的第一步还是要对数据集格式进行改造。一条数据应该被结构化成能模拟人机对话的形式。用户提供一个提示语,其中包含一张图片和一个问题,然后模型需要能够给出一个回答。我们用以下代码实现格式转换:

from datasets import features
from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics2-8b", do_image_splitting=False)

def format(example):
    # Prepare the input for the chat template
    prompt = [
        {
   
            "role": "user",
            "content": [{
   "type": "image"}, {
   "type": "text", "text": example["question"]}],
        },
    ]
    chosen = [
        {
   
            "role": "assistant",
            "content": [{
   "type": "text", "text": example["chosen"]}],
        },
    ]
    rejected = [
        {
   
            "role": "assistant",
            "content": [{
   "type": "text", "text": example["rejected"]}],
        },
    ]
    # Apply the chat template
    prompt = processor.apply_chat_template(prompt, tokenize=False)
    chosen = processor.apply_chat_template(chosen, tokenize=False)
    rejected =
  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴为您推荐这些多模态模型!这里是20个推荐的模型: 1. 基于内容的协同过滤(Content-based Collaborative Filtering) 2. 协同过滤(Collaborative Filtering) 3. 基于图的协同过滤(Graph-based Collaborative Filtering) 4. 基于协同过滤的自动标注(Collaborative Filtering-based Automatic Tagging) 5. 多任务学习(Multi-task Learning) 6. 多模态降维(Multi-modal Dimensionality Reduction) 7. 多模态聚类(Multi-modal Clustering) 8. 多模态神经机器翻译(Multi-modal Neural Machine Translation) 9. 多模态信息检索(Multi-modal Information Retrieval) 10. 多模态文本分类(Multi-modal Text Classification) 11. 多模态文本生成(Multi-modal Text Generation) 12. 多模态语音识别(Multi-modal Speech Recognition) 13. 多模态情感分析(Multi-modal Sentiment Analysis) 14. 多模态视觉问答(Multi-modal Visual Question Answering) 15. 多模态视觉对话(Multi-modal Visual Dialogue) 16. 多模态视觉描述(Multi-modal Visual Description) 17. 多模态视觉目标检测(Multi-modal Visual Object Detection) 18. 多模态图像生成(Multi-modal Image Generation) 19. 多模态图像分类(Multi-modal Image Classification) 20. 多模态图像检索(Multi-modal Image Retrieval) 希望这些模型能对您有所帮助! ### 回答2: 以下是推荐给您的20个比较流行的多模态模型: 1. FusionNet:将多个模态的信息进行融合的神经网络模型。 2. CMTF:基于张量分解的多模态数据建模方法。 3. M3N:结合多模态特征的最大间隔马尔科夫网络模型。 4. DeepFuse:基于深度学习的多模态图像融合模型。 5. MMFA:基于因子分析的多模态因子模型。 6. TriModalNet:结合图像、文本、语音多模态信息的神经网络模型。 7. Cross-Modal Retrieval:用于跨模态检索任务的模型。 8. TRL:基于图像文本关系知识的多模态迁移学习模型。 9. Multi-Channel Compact Bilateral Attention Network:用于视频目标检测的多模态模型。 10. Mixture of Experts:结合多个模态的专家模型。 11. Multi-modal Transformer:使用Transformer模型结合多模态信息进行任务建模。 12. Multi-modal Variational Autoencoder:结合变分自编码器的多模态生成模型。 13. Bi-STMM:结合文本和图像信息的时空多模态建模模型。 14. Multi-model Deep Neural Networks:结合多个深度神经网络模型多模态学习方法。 15. Dual-bootstrap AutoEncoders:用于图像和文本的多模态特征学习模型。 16. Multimodal Partial Least Squares Regression:用于多模态数据回归建模的模型。 17. HMTL:基于混合注意力机制的多模态迁移学习模型。 18. Deep Cross-Modal Hashing:用于多模态数据哈希学习的深度模型。 19. DeepSES:多模态情感分析任务中的深度学习模型。 20. MVAE-GAN:结合变分自编码器和生成对抗网络的多模态生成模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值