前言
爱彼迎利用视觉转换器技术打造的人工智能照片导览功能,通过提升计算机视觉的准确性和性能,为用户提供更全面的住宿空间理解。今日前端早读课文章由 @Pei Xiong 分享,@飘飘翻译。
译文从这开始~~
引言
近年来,人工智能与旅游平台的结合,彻底改变了人们搜索和预订住宿的方式。作为全球领先的旅行体验和住宿市场,Airbnb 始终致力于提升用户体验,通过提供丰富的信息,帮助旅客更好地了解房东共享的各类房源。其中,我们的一项创新功能 ——AI 驱动的照片导览,让用户在预订前就能清晰了解房源的具体情况。
这个 AI 驱动的照片导览 功能位于房源列表(Listings)标签页,能够帮助房东更有条理地整理房源照片。它利用 Vision Transformer(ViT)技术,精准分析房源的多种图片,并自动识别和分类不同房间及空间的照片。在本篇博客中,我们将深入探讨这一功能的核心技术,包括模型选择、预训练、微调技术,以及计算成本与可扩展性之间的权衡。此外,我们还将重点介绍如何在训练数据有限的情况下,提高模型的识别准确性。
图 1:基于机器学习的照片导览功能
方法论
房间分类
房间分类是照片导览功能的核心之一,其目标是精准地将房源照片归类为 16 种不同的房间类型,这些类别是 Airbnb 产品中定义的,包括 “卧室”、“全功能浴室”、“半功能浴室”、“客厅” 和 “厨房” 等。这一功能可以帮助用户全面了解房源的各个空间。然而,由于房间布局多样、光照条件复杂,以及不同环境下的变化较大,如何构建一个能够泛化适应各种情况的模型成为一大挑战。
为了解决这一问题,我们测试了多种最先进的计算机视觉模型,包括 Vision Transformer(ViT)的不同版本(如 ViT-base 和 ViT-large)及不同分辨率的模型。此外,我们还评估了 ConvNext2(一种性能与 ViT 相当的最新卷积神经网络)以及 MaxVit(结合了 Vision Transformer 和 CNN 优势的混合模型)的表现。在项目初期,我们使用 Airbnb 房东提供的数据进行图像分类实验,结果表明 ViT 在分类任务上的表现优于其他模 *,因此我们最终选择了 ViT 作为主要模型进行进一步研究。
图像相似度
照片导览功能的另一个关键部分是图像聚类,即将同一房间的图片归为一组。而实现聚类的前提是衡量两张图片的相似度,这意味着我们需要判断两张照片是否属于同一房间。本质上,这是一个监督分类问题,输入是两张图片,输出是一个二元标签(0 或 1),表示它们是否属于同一房间。
如 图 2 所示,我们采用了一种 Siamese(孪生)网络结构,该网络会同时处理两张图片,并使用相同的图像嵌入模型对其进行特征提取。随后,我们计算得到的嵌入向量之间的余弦相似度(cosine similarity),以判断两张图片的相似程度。
图 2:用于图像相似性计算的孪生网络示意图
准确率提升
我们的分析发现,训练数据量对提高预测准确率至关重要。将训练数据量翻倍通常会导致错误率平均降低约 5%,并且在早期阶段效果更为显著。
图 3:数据量与准确率的相关性
很不幸的是,获取高质量的训练数据非常昂贵,因为这需要人工标注。因此,我们必须寻找其他方法,在有限的训练数据下提升模型的准确率。我们采取了以下步骤来优化模型性能:
步骤 1 — 预训练
我们从一个在 ImageNet 上预训练的模型开始,然后用大量的主机提供数据对其进行训练。这些数据的准确率较低,并且只涵盖部分类别标签,但它为后续的迁移学习提供了一个基础模型。
步骤 2 — 多任务训练
在此基础上,我们对模型进行微调,使用高准确率的目标任务训练数据(如房间类型分类),以及另一种已标注的相关任务数据(如目标检测)。这样不仅增加了训练数据量,还在不同任务上训练出了多个模型,为后续步骤奠定基础。
步骤 3 — 集成学习
我们将步骤 2 中的多个模型进行集成。通过训练不同的辅助任务,并使用不同版本的 Vision Transformers(ViTs)(如 ViT-base 与 ViT-large,或者输入图像尺寸为 224 vs 384 的模型),我们构建了多样化的模型集合,并从中挑选表现最佳的模型组成最终的集成模型。
步骤 4 — 蒸馏
尽管集成模型比单一模型的准确率更高,但它需要更多计算资源,导致延迟增加和成本上升。为了解决这一问题,我们训练了一个蒸馏模型,使其模仿集成模型的行为,在保持类似准确率的同时,将计算成本降低数倍。
预训练与传统微调
在预训练过程中,我们利用了 Airbnb 房源照片库,其中包含数百万张图片,用于训练 Vision Transformer(ViT)模型。这一过程提供了显著的优势,但也存在一定的局限性。例如,人工标注的数据可能存在错误或误标,影响模型识别模式的能力。此外,预训练数据集仅覆盖了 16 种房间类型中的 4 种,导致类别覆盖范围有限。
因此,在微调阶段,扩大数据集的类别覆盖范围至关重要。我们制定了一套详细的更新指南,并构建了涵盖 16 种房间类型的全新人工标注数据集。通过迭代微调,我们逐步扩展至所有 16 种房间类型,使模型更加全面和多功能。
多任务学习
由于人工标注数据的获取成本高昂且耗时,我们充分利用了已有的大量标注数据。这些数据涵盖多个任务,包括房间类型分类、图像质量预测、同房间分类、类别分类和目标检测等。通过整合这些数据,我们显著提高了模型的预测准确率。
具体而言,我们采用多任务训练方法,结合现有任务的数据标签,如图 4 所示。每个学习器都是一个 Vision Transformer,除了学习单一类别标签,我们还让不同的学习器学习其他标签类型,例如房间设施信息和 ImageNet21k 标签。这种方法进一步提升了整体性能,如表 1 所示。
图 4:多任务学习示意图
集成学习
集成学习是一种强大的机器学习技术,它通过整合多个准确率相近但多样化的模型,提高整体预测准确性和泛化能力。
在我们的研究中,我们对不同架构、不同模型规模以及不同辅助任务(如房间设施预测、ImageNet21k 类别预测等)的模型应用了集成学习。当我们将多个模型的预测结果进行聚合时,整体准确率明显提升,超过了任何单一模型的表现。
这一提升主要归因于集成模型能够有效减少单个模型的错误分类和预测偏差,即使在有限的人工标注数据下,依然能提供更准确的预测结果。
知识蒸馏