Press "Enter" to skip to content

使用基础模型来提高使用亚马逊SageMaker的模型准确性

Scott Webb在Unsplash上的照片

Scott Webb在Unsplash上的照片

确定房屋价值是使用机器学习(ML)的典型示例。Harrison和Rubinfeld(1978)产生了重大影响,他们发表了一篇开创性的论文和数据集,被非正式地称为波士顿房屋数据集。这项开创性的工作提出了一种估算房屋价格的方法,该方法涉及多个维度,包括空气质量,这是他们研究的主要关注点。近50年来,房屋价格的估算已成为对使用数据和ML进行商业决策的学生和专业人士的重要教学工具。

在本文章中,我们讨论了一种专门用于视觉问答(VQA)任务的开源模型的使用。通过VQA,您可以使用自然语言对照片提问,并以简单的语言获得问题的答案。我们在本文章中的目标是激发和展示使用此技术的可能性。我们建议将此功能与Amazon SageMaker服务平台一起使用,以提高ML用例中回归模型的准确性,并独立用于视觉图像的自动标记。

我们提供了一个相应的YouTube视频来演示这里所讨论的内容。视频将从中间开始播放以突出最重要的观点。我们建议您在观看视频之前阅读本文,以加深和获得更深入的理解。

基础模型

此解决方案集中在使用发布到Hugging Face模型仓库的基础模型。在这里,我们使用基础模型一词来描述在大量多样化数据上进行预训练的人工智能(AI)能力。部分基础模型有时可以直接使用,无需从零开始训练模型。有些基础模型可以进行微调,这意味着向其教授在原始通用发布模型中缺失但与您的业务相关的其他模式。微调有时需要提供您用例或知识体系独有的正确响应。

Hugging Face仓库中,有几个可供选择的VQA模型。我们选择了此编写时下载次数最多的模型。尽管本文演示了使用开源模型仓库中的模型的能力,但相同的概念也适用于您从零开始训练的模型或从其他可信提供者那里使用的模型。

传统用例的现代方法

房屋价格估算传统上是通过使用房屋特征来确定价格的表格数据进行的。尽管可能有数百个要考虑的特征,但一些基本示例包括完成空间的家庭大小、卧室和浴室的数量以及住所的位置。

机器学习能够整合除表格数据之外的多样化输入源,例如音频、静态图像、运动视频和自然语言。在AI中,多模态一词指的是使用各种媒体类型,如图像和表格数据。在本文中,我们展示了如何使用多模态数据来发现和释放现代世界丰富数字产生的隐藏价值。

鉴于这个想法,我们演示了使用基础模型从房屋图像中提取潜在特征的方法。通过利用图像中的洞察力,这些洞察力在表格数据中以前是不可用的,我们可以提高模型的准确性。本文中讨论的图像和表格数据最初由Ahmed和Moustafa(2016)提供并发布在GitHub上。

一张图片胜过千言万语

既然我们了解了VQA的功能,让我们来考虑下面这两张厨房图片。从这些图片中,你会如何评估这个家的价值?你会问自己哪些问题?每张图片可能会在你脑海中引发数十个问题。其中一些问题可能会得到有意义的答案,从而改进房屋估值过程。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第2张 使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第3张

图片来源:Francesca Tosolini(左)和 Sidekix Media(右),来自Unsplash

以下表格通过显示问题及其相应答案的形式,提供了关于VQA交互的一些例子。答案可以是分类、连续值或二进制响应的形式。

示例问题 基础模型的示例答案
台面是由什么材料制成的? 花岗岩、瓷砖、大理石、层压板等
这是一个昂贵的厨房吗? 是的、不是
有几个分开的水槽? 0个、1个、2个

参考架构

在本文中,我们使用Amazon SageMaker Data Wrangler对数据集中的成千上万张照片提出了一套统一的视觉问题。SageMaker Data Wrangler专门用于简化数据准备和特征工程的过程。通过提供300多种内置的转换功能,SageMaker Data Wrangler帮助缩短了准备表格和图像数据进行机器学习所需的时间,从几周缩短到几分钟。在这里,SageMaker Data Wrangler将原始表格集的数据特征与基础模型的照片生成特征结合起来,用于模型训练。

接下来,我们使用Amazon SageMaker Canvas构建回归模型。SageMaker Canvas可以在2-15分钟内生成模型的初步结果,无需编写任何代码。在接下来的部分中,我们介绍了用于实现此解决方案指导的参考架构。

许多来自Hugging Face和其他提供商的热门模型都可以使用Amazon SageMaker JumpStart进行一键部署。这些存储库中有数十万个可用的模型。在本文中,我们选择了SageMaker JumpStart中没有的一个模型,需要进行客户部署。如下图所示,我们使用Amazon SageMaker Studio笔记本来部署用于实时推断的Hugging Face模型。该笔记本用于部署端点进行实时推断。笔记本使用了Hugging Face二进制模型、指向容器映像的指针以及与模型的预期输入和输出相匹配的专用inference.py脚本。当阅读本文时,可用的VQA模型可能会发生变化。重要的是在阅读时审查可用的VQA模型,并准备好部署所选择的模型,该模型将具有其自己的API请求和响应合同。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第4张

在SageMaker端点提供VQA模型之后,我们使用SageMaker Data Wrangler来协调流程,最终将表格数据与从数字图像中提取的特征相结合,并重新整理数据以进行模型训练。下图展示了完整数据转换作业的运行方式。

在下图中,我们使用SageMaker Data Wrangler来协调数据准备任务,使用SageMaker Canvas进行模型训练。首先,SageMaker Data Wrangler使用Amazon Location Service将原始数据中的ZIP代码转换为纬度和经度特征。其次,SageMaker Data Wrangler能够协调将成千上万张照片发送到托管的SageMaker端点进行实时推断,并针对每个场景提问统一的一组问题。这样可以得到丰富的特征数组,描述了厨房、浴室、房屋外部等观察到的特征。在SageMaker Data Wrangler准备好数据之后,训练数据集可在Amazon Simple Storage Service(Amazon S3)中使用。使用S3数据作为输入,SageMaker Canvas能够在2至15分钟内进行模型训练,无需编写任何代码。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第5张

使用SageMaker Data Wrangler进行数据转换

以下屏幕截图展示了SageMaker Data Wrangler的工作流程。工作流程从存储在Amazon S3中的成千上万张房屋照片开始。接下来,场景检测器确定场景,例如厨房或浴室。最后,针对图像提问特定于场景的一组问题,从而生成更丰富的可用于训练的表格数据集。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第6张

以下是SageMaker Data Wrangler自定义转换代码的示例,用于与基础模型交互并获取有关厨房图片的信息。在前面的屏幕截图中,如果选择厨房特征节点,将显示以下代码:

from botocore.config import Configimport jsonimport boto3import base64from pyspark.sql.functions import col, udf, struct, litdef get_answer(question,image):   encoded_input_image = base64.b64encode(bytearray(image)).decode()   payload = {     "question": question,       "image": encoded_input_image    }   payload = json.dumps(payload).encode('utf-8')   response = boto3.client('runtime.sagemaker', config=Config(region_name='us-west-2')).invoke_endpoint(EndpointName='my-vqa-endpoint-name', ContentType='application/json', Body=payload) return json.loads(response['Body'].read())["predicted_answer"]vqaUDF = udf(lambda q,img: get_answer(q,img))# process only images of bathroom typedf = df[df['scene']=='kitchen']visual_questions = [    ('kitchen_floor_composition', 'what is the floor made of'), ('kitchen_floor_color', 'what color is the floor'), ('kitchen_counter_composition', 'what is the countertop made of'),  ('kitchen_counter_color', 'what color is the countertop'),  ('kitchen_wall_composition', 'what are the walls made of'), ('kitchen_refrigerator_stainless', 'is the refrigerator stainless steel'),  ('kitchen_refrigerator_builtin', 'is there a built-in refrigerator'),   ('kitchen_refrigerator_visible', 'is a refrigerator visible'),  ('kitchen_cabinet_composition', 'what are the kitchen cabinets made of'),   ('kitchen_cabinet_wood', 'what type of wood are the kitchen cabinets'), ('kitchen_window', 'does the kitchen have windows'),    ('kitchen_expensive', 'is this an expensive kitchen'),  ('kitchen_large', 'is this a large kitchen'),   ('kitchen_recessed_lights', 'are there recessed lights')    ]for i in visual_questions: df = df.withColumn(i[0], vqaUDF(lit(i[1]),col('image_col.data')))

作为一项安全考虑,您必须先通过AWS身份和访问管理(IAM)启用SageMaker Data Wrangler来调用您的SageMaker实时端点。同样,通过SageMaker Data Wrangler调用的任何AWS资源都需要类似的许可。

SageMaker Data Wrangler之前和之后的数据结构

在本节中,我们讨论了原始表格数据和增强数据的结构。增强数据相对于此示例用例包含了新的数据特征。在应用程序中,想象一下您的图像中可用的各种问题,以帮助您的分类或回归任务。关键是尽可能想象出尽可能多的问题,然后测试它们以确保它们确实提供了增值。

原始表格数据结构

如源GitHub repo所述,示例数据集包含535个表格记录,每个属性有四个图像。下表描述了原始表格数据的结构。

特征 注释
卧室数量 .
浴室数量 .
面积(平方英尺) .
邮政编码 .
价格 这是要预测的目标变量。

增强数据结构

下表描述了增强数据结构,其中包含从图像中派生的多个新特征。

特征 注释
卧室数量 .
浴室数量 .
面积(平方英尺) .
纬度 通过将原始邮政编码传递给Amazon位置服务计算得出。这是邮政编码的中心值。
经度 通过将原始邮政编码传递给Amazon位置服务计算得出。这是邮政编码的中心值。
卧室是否有拱形天花板? 0 = 否;1 = 是
浴室是否昂贵? 0 = 否;1 = 是
厨房是否昂贵? 0 = 否;1 = 是
价格 这是要预测的目标变量。

使用SageMaker Canvas进行模型训练

SageMaker Data Wrangler处理作业完全准备并使整个表格训练数据集在Amazon S3中可用。接下来,SageMaker Canvas处理ML生命周期中的模型构建阶段。Canvas通过打开S3训练集来开始。能够理解模型通常是客户需求的关键。在不编写代码的情况下,通过几次点击,SageMaker Canvas可以提供关于模型性能的丰富视觉反馈。如下一节的屏幕截图所示,SageMaker Canvas显示单个特征如何影响模型。

使用原始表格数据和从房地产图像中提取的特征训练的模型

从下面的屏幕截图中可以看到,从房产图像中开发的特征非常重要。根据这些结果,照片中的问题“这个厨房贵吗”比原始表格集中的“卧室数量”更重要,其特征重要性值分别为7.08和5.498。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第7张

以下屏幕截图提供了有关模型的重要信息。首先,残差图显示大部分点集聚在紫色阴影区域附近。在此,有两个异常值手动注释在SageMaker Canvas之外用于说明。这些异常值代表真实房屋价值与预测价值之间的差异。此外,R2值(可能范围为0-100%)显示为76%。这意味着该模型并不完美,没有足够的信息点能全面估计房屋价值的各种变化。

我们可以使用异常值来查找并提出额外的信号来构建一个更全面的模型。例如,这些异常值可能包括一座游泳池或位于大地块上的房产。数据集中没有包含这些特征;然而,您可以找到这些数据并训练一个包括“有游泳池”作为额外特征的新模型。理想情况下,在您的下一次尝试中,R2值会增加,MAE和RMSE值会减少。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第8张

未使用从房地产图像中提取的特征训练的模型

最后,在进入下一部分之前,让我们看看图像的特征是否有帮助。以下屏幕截图展示了另一个没有VQA模型特征的SageMaker Canvas训练模型。我们可以看到模型的误差率从282K的RMSE增加到了352K的RMSE。由此可知,图像中的三个简单问题使模型的准确性提高了约20%。并未展示,但为了完整起见,下一个模型的R2值也有所恶化,从具有VQA特征的76%降至62%。这是SageMaker Canvas如何简化快速实验和使用数据驱动方法从而生成适合业务需求的模型的例子。

使用基础模型来提高使用亚马逊SageMaker的模型准确性 四海 第9张

展望未来

许多组织对基础模型越来越感兴趣,特别是自2022年12月起,通用预训练转换器(GPTs)正式成为主流话题。对基础模型的兴趣大部分集中在大型语言模型(LLM)任务上;然而,还有其他各种各样的用例可用,例如计算机视觉,以及更狭隘的VQA任务。

本文是一个示例,旨在激发使用多模态数据解决行业用例的想法。虽然我们在回归模型中演示了VQA的使用和好处,但它也可以用于标记和标记图像以进行后续搜索或业务工作流路由。想象一下,你能够搜索到出售或出租的房产。假设你想找一个有瓷砖地板或大理石台面的房产。如今,你可能需要获得一个候选房产的长列表,并在浏览每个候选房产时通过视觉进行筛选。相反,想象一下能够筛选包含这些特征的房产列表,即使没有人明确标记它们。在保险行业,想象一下通过图像估计索赔损失的能力,或根据图像从一项业务工作流路由到下一个操作。在社交媒体平台上,照片可以自动标记以供后续使用。

总结

本文演示了如何使用基础模型通过SageMaker平台改进经典机器学习用例。作为所提出方案的一部分,我们找到了一个位于公共模型注册表上的热门VQA模型,并使用SageMaker端点进行实时推理部署。

接下来,我们使用SageMaker Data Wrangler编排了一个工作流程,通过对图像提问来生成丰富的表格数据。最后,我们使用SageMaker Canvas训练了一个回归模型。需要注意的是,示例数据集非常简单,并且故意设计成不完美。即便如此,SageMaker Canvas使得理解模型准确度并寻找额外信号以提高基线模型准确度变得非常容易。

我们希望这篇文章能够鼓励您使用您的组织可能拥有的多模态数据。此外,我们希望这篇文章能够激发您将模型训练视为一个迭代的过程。只要有耐心,就可以实现一个优秀的模型。接近完美的模型可能过于美好而不真实,这可能是目标泄漏或过拟合的结果。理想的情况是从一个良好但不完美的模型开始。通过错误、损失和残差图,您可以获取更多的数据信号来提高初始基线估计的准确性。

AWS提供了最广泛和最深入的机器学习服务和支持云基础设施,使机器学习成为每个开发者、数据科学家和专业人士的必备工具。如果您对SageMaker平台(包括SageMaker Data Wrangler和SageMaker Canvas)想了解更多信息,请与您的AWS账户团队联系并开启一次对话。同时,考虑阅读更多关于SageMaker Data Wrangler 自定义转换的内容。

参考资料

Ahmed, E. H., & Moustafa, M. (2016). 从视觉和文本特征中估计房价。IJCCI 2016第8届国际联合智能会议论文集,3, 62–68。

Harrison Jr, D., & Rubinfeld, D. L. (1978). 次品房屋价格和对清洁空气的需求。环境经济学与管理杂志,5(1), 81-102。

Kim, W., Son, B. & Kim, I.. (2021). ViLT:无卷积或区域监管的视觉语言变换器。机器学习国际会议第38届会议论文集,机器学习研究论文集. 139:5583-5594。

Leave a Reply

Your email address will not be published. Required fields are marked *