作者: 裴雄, 殷晓晓, 张健, 杨立凡, 张璐, 陈 Dean
前言最近几年,人工智能与旅游平台的结合改变了人们搜索和预订住宿的方法。作为全球领先的市场平台,Airbnb不断努力提升客人的体验,通过提供关于我们房东提供的各种房源的信息。因此,我们通过我们的AI驱动的照片导览帮助客人在预订前更好地了解房源的特点。
在列表选项卡中的AI驱动的照片巡游功能,可以帮助房东更好地整理他们的房源照片。该功能利用了经过微调的视觉变换器功能,来评估各种各样的房源图片,并准确地识别和分类图片,归类到特定的房间和空间。在这篇博客文章中,我们将深入了解照片巡游功能的内部运作,包括模型选择、预训练阶段、微调技术,以及计算成本与可扩展性之间的平衡。我们还将具体讨论如何在数据有限的情况下提高模型的准确性。
图1:由机器学习驱动的照片之旅产品
研究方法 房间类型房型分类是照片浏览的第一个方面。房型分类的目的是将图像准确地归类到Airbnb产品中设计的16种房型,例如“卧室”、“全套浴室”、“半套浴室”、“起居室”和“厨房”,让用户全面了解可用空间。挑战在于房型布局的多样性、光照条件的差异,以及需要能够适应各种环境的模型。
我们使用了几种最先进的模型进行了实验,包括Vision Transformer(ViT)的各种变体——ViT-base 和 ViT-large 等,以及不同的分辨率。此外,我们还探索了ConvNext2的性能,这是一种最近提出的新型卷积神经网络,与ViT性能相当,以及MaxVit,一种结合了Vision Transformer 和 CNN 优势的变体。在项目的初期,我们使用Airbnb房东提供的图像数据进行图像分类任务测试,发现ViT的表现优于其他方法。所以在接下来的研究中我们选择了ViT。
图像相似性另一个照片之旅的关键组成部分是图像聚类,它将同一房间的图片归为一类。这需要测量两张图像之间的相似性,这表明这两张图片可能来自同一个房间。这是一个监督分类问题,输入是两张图片,输出是一个二元标签,表示两张图片是否属于同一房间。如图2所示:我们使用了Siamese网络,该网络可以同时处理两张图像,通过将相同的图像嵌入模型应用到每张图像上,并随后计算两者的余弦相似度。
图2:Siamese网络用于图像相似性的图示
提升准确性我们的分析发现,训练数据的数量是提高预测准确性的重要因素。将训练数据量翻倍通常可以使误差率平均降低约5%,尤其是在早期阶段,这种效果更为明显。
图3:数据量与准确性的关系
很遗憾,高质量的训练数据非常贵,因为这需要人工标注。因此,我们需要找到在有限的数据下提高模型准确性的其他方法。我们依照以下步骤来提高模型准确性。
第一步 — 预训练:我们从ImageNet上的一个预训练模型开始。我们使用由主机提供的大量数据对该模型进行了训练,这些数据的准确性不高,且只覆盖了我们一部分类别标签。这为接下来的迁移学习提供了一个基准模型。
第二步 — 多任务微调:我们用高精度的目标任务数据(例如房间类型分类),以及为另一个相关任务(例如物体检测)标记的数据,来微调上一步的模型。这样不仅提供了更多的训练数据,还为后续步骤准备了多种不同的模型。
第三步:集成学习:我们通过在第二步中使用不同的辅助任务进行训练,并使用不同版本的ViTs(例如,ViT-base与ViT-large,以及处理224像素和384像素图像的版本),创建了一个模型集合。这种方法使我们生成了一组多样化的模型,并从这些模型中挑选出表现最好的来构建最终集成模型。
步骤4 — 蒸馏:虽然集成模型的准确性高于任何单一模型,但它需要更多的计算资源,从而增加了我们产品的延迟时间并提高了成本。我们训练了一个蒸馏模型来模仿集成模型,该蒸馏模型具有相似的准确性,但计算成本减少了数倍。
预训练和传统精调我们的预训练过程利用了庞大的Airbnb房源照片库,其中包括数百万张图片,来训练一个视觉变压器(Vision Transformer,简称ViT)模型。虽然利用Airbnb房源照片进行预训练提供了显著的优势,但数据集也存在一些局限性。人类标注的数据集中存在不准确或错误的标签,这影响了模型识别模式的能力。另一个显著的局限性是,预训练数据集中仅包括了16个房间分类中的4个。
因此,扩展精调的覆盖范围以包含更多类别是必要的。我们制定了一个详细的、更新过的指南,并生成了一个涵盖16个房间分类的人工标注数据集。经过迭代的精调过程,逐步纳入了所有16种房间类型,从而使得模型更加全面和多功能。
多任务处理获取高质量的人工标注训练数据是一项艰巨的任务,因为标注过程既耗时又耗资。尽管如此,我们已经积累了大量跨越各种任务的数据集,包括房间类型识别、图像质量预测、房间内对象分类、类别分类和目标检测等。利用这个广泛且多样化的标注数据集,我们显著提高了预测准确率。为了实现这一点,我们采用了多任务训练,结合了现有任务中的额外标注类别,如图4所示。每个学习器都是一个视觉变压器,除了预测一组标签外,我们还允许学习器学习其他类型的标签,比如设施标签和ImageNet21k标签,这些进一步提升了整体性能,如表1所示。
图4:多任务学习的示例
集成学习模型集成学习是机器学习中一种强大的技术,它通过结合准确度相似但多样化的模型来提高准确性和泛化能力,从而实现更好的性能。
我们利用集成学习,将多种具有不同架构和大小的模型与辅助任务(例如设施识别和ImageNet21k类别预测)相结合。在聚合各个模型的预测结果后,我们注意到整体准确率相比任何单一模型有了显著提升。这一提升归因于集成模型能够解决并减少单个模型中的误分类和不准确性,从而实现更准确的预测。即使在有限的人工标注训练数据的情况下,也能达到这一效果。
知识提炼
虽然集成学习在准确性方面带来了显著的提升,但它需要更高的计算资源需求,因为每个推理任务都会涉及多个大型模型。为了在不影响性能的情况下提高模型效率,我们转向了知识精炼,这是一种将知识从复杂的模型集合转移到更紧凑单一模型的技术。
我们的蒸馏过程将复杂模型集成中的硬标签及软预测所包含的知识转移至一个更小更简单的模型中。硬标签是指真实标签,而软预测则是集成的概率预测,这使得较小的模型能够捕捉到集成学习到的细微决策边界。总的训练目标是这两个损失的加权总和。
第一个损失项是基于硬目标的交叉熵损失项,第二个损失项是 Kullback-Leibler 散度,用于评估集成的软目标与学生模型预测之间交叉熵,蒸馏系数则决定了蒸馏损失的权重。
值得注意的是,我们的蒸馏模型在性能指标上与集成模型持平,尽管其推理时间显著减少,且资源消耗大幅降低。这表明知识蒸馏能够有效地将集成模型的集体智慧浓缩到一个更简洁的模型中。
黄金评价作为我们从头到尾Photo Tour启动准备的一部分,我们采用了一种严格的评估流程,称为“Golden Evaluation”或“黄金评估”,该流程通过计算将我们的模型生成的Photo Tour与人类标注的参考照片集(即Golden Evaluation)完全一致所需的最小改动数量来模拟实际用户体验。与训练数据均匀分布在各个类别中不同,“黄金评估”则是在每个Airbnb房源级别上进行,旨在模拟用户的实际体验。我们选取了每个房源样本,每个房源大约包含25至30张照片,并将准确率定义为使分配与人类标签完全一致所需的最少修改次数。这些修改指的是房间分配的变更,即一张照片的初始房间预测被修改以匹配由多个审核员达成一致的房间标签。例如,如果一张卧室1的照片被错误地标注在客厅,那么就需要修改一次,将其从客厅调整到卧室1。
有些照片无法适当地归类到具体的空间类别中。我们将杂项照片,包括特写照片、包含人物或动物的照片,以及商场、餐厅和公园附近的照片,归入了“其他”一类。此外,如果一张照片显示的是一个空房间,无法明确判断其具体所在房间,我们也可以将这些照片标为“未分配”,这些照片不计入准确性计算中。这种情况很少发生(详见表3),主要用于让用户在最难以判断的情况下做出决定。这一评估成为了最终的发布标准。最终,我们将错误率降低到5.28%,达到了Airbnb内部的评估标准,Photo Tour作为一个展示功能在2023年11月的产品发布中亮相。
结语我们使用视觉变压器来改进照片游览产品的探索成功且令人满意。通过预训练、多任务学习、集成学习和知识蒸馏的应用,我们显著提高了模型的准确性。为模型奠定了坚实的基础,而多任务学习增强了模型解读视觉内容的能力。集成学习结合了模型的优势,实现了稳健的预测,知识蒸馏使我们能够高效部署而不牺牲准确性。
AI驅動的照片導遊作為Airbnb的2023冬季發佈的一部分而推出。從那以后,我們一直在密切關注該產品的表現,並持續優化我們的模型,以提供更順暢的用戶體驗。
感谢我们想感谢所有参与该项目的人。特别感谢Airbnb的用户、房东和平台团队在开发和发布产品过程中的不懈努力,确保其持续优秀。此外,还要特别感谢Airbnb的机器学习基础设施团队,他们为我们构建了照片游览所依赖的强大基础设施,提供了关键的支持。
如果你对这类工作感兴趣,看看我们的一些相关职位。
共同学习,写下你的评论
评论加载中...
作者其他优质文章