多模态模型的迁移学习
在前面的章节中,我们深入探讨了多模态模型(如 CLIP 及其相关模型)的基本概念。在本章中,我们将尝试了解如何将不同类型的多模态模型用于您的任务。
有多种方法可以将多模态模型应用于您的用例
零/少样本学习。零/少样本学习涉及利用大型预训练模型来解决训练数据中不存在的问题。当某个任务的标记数据很少(5-10 个示例)或根本没有时,这些方法非常有用。单元 11 将更深入地探讨此主题。
从头开始训练模型。当预训练模型权重不可用或模型的数据集与您自己的数据集大不相同时,此方法就变得必要。在这里,我们随机初始化模型权重(或通过更复杂的方法,如 He 初始化)并继续进行常规训练。但是,这种方法需要大量的训练数据。
迁移学习。与从头开始训练不同,迁移学习使用预训练模型的权重作为初始权重。
本章主要关注多模态模型中的迁移学习方面。它将回顾迁移学习的内容,阐明其优势,并提供实际示例,说明如何将迁移学习应用于您的任务!
迁移学习
更正式地说,迁移学习是一组机器学习技术,其中从解决一个问题中获得的知识、表示或模式被重复使用以解决另一个但相似的问题。
在深度学习的背景下,在迁移学习中,当训练模型以执行特定任务时,我们使用另一个模型的权重作为初始权重。预训练模型通常在海量数据上进行训练,并且具有关于该数据性质和关系的有用知识。这些知识嵌入在该模型的权重中,因此,如果我们将它们用作初始权重,我们将预训练模型中嵌入的知识转移到我们正在训练的模型中。
这种方法有几个优点
资源效率:由于预训练模型在长时间内在大量数据上进行了训练,因此迁移学习需要更少的计算资源才能使模型收敛。
减少标记数据的大小:出于同样的原因,需要更少的数据才能在测试样本上获得不错的质量。
知识转移:在微调到新任务时,模型利用预训练模型权重中编码的预先存在的知识。这种先前知识的整合通常会导致新任务上的性能增强。
然而,尽管具有优势,但迁移学习也存在一些挑战,也应予以考虑
领域偏移:如果数据分布存在很大差异,则将知识从源域适应到目标域可能具有挑战性。
灾难性遗忘:在微调过程中,模型调整其参数以适应新任务,这通常会导致它丢失与初始任务相关的先前学习的知识或表示。
迁移学习应用
我们将探索迁移学习在各种任务中的实际应用。从提供的表格中导航到与您感兴趣的任务相关的 Jupyter Notebook。
任务 | 描述 | 模型 | Notebook |
---|---|---|---|
微调 CLIP | 在自定义数据集上微调 CLIP | openai/clip-vit-base-patch32 | CLIP Notebook |
视觉问答 (VQA) | 基于图像以自然语言回答问题 语言 | dandelin/vilt-b32-finetuned-vqa | VQA Notebook |
图像到文本 | 以自然语言描述图像 | Salesforce/blip-image-captioning-large | 文本到图像 Notebook |
开放集目标检测 | 通过自然语言输入检测对象 | Grounding DINO | Grounding DINO Notebook |
助手(类似 GTP-4V) | 多模态领域的指令微调 | LLaVA | LLaVa Notebook |