机器学习洞察 | 挖掘多模态数据机器学习的价值

news2024/12/23 16:35:04

在过去的数年里,我们见证了机器学习和计算机科学领域的很多变化。人工智能应用也愈趋广泛,正在加速融入人们的日常生活之中。机器学习作为技术核心,也在持续地发展进化,在更多领域发挥出越来越重要的作用。**机器学习会有哪些新的演进趋势和发展方向?**我们又该如何提前布局,紧跟这一热门技术的前沿变化?

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

 

《机器学习洞察》系列文章将基于机器学习的发展现状,逐一解读和分析目前机器学习在实践落地中颇具潜力的四个演进趋势,包括多模态机器学习、分布式训练、无服务器推理,以及 JAX 这一新崛起的深度学习框架。

什么是多模态数据机器学习

人们听到的声音、看到的食物、闻到的味道,这些都属于模态信息,而我们生活在多模态信息相互交融的环境之中。

为了使人工智能可以更好地理解世界,人们需要赋予人工智能学习理解和推理多模态信息的能力。多模态数据机器学习就是指通过建立模型,使机器从多模态中学习各种模态信息,并且实现各个模态的信息交流和转换的过程。

多模态应用范围广泛,既涵盖包括人工智能音箱、电商的商品推荐系统、图像识别等生活化场景,还可以应用于一些工业领域,包括导航和自动驾驶、生理病变研究、环境监测和天气预报等等,也可以支持未来元宇宙场景下虚拟人和人类之间沟通等等。

多模态学习领域的演进

随着多模态数据机器学习的热度越来越高,有关于多模态数据机器学习的研究也迎来许多创新性的突破,特别是以下三个重要进展:

  • ZSL:Zero-Shot Learning(University of Tübingen, 2009)

    Learning to detect unseen object classes by between-class attribute transfer | IEEE Conference Publication | IEEE Xplore

  • CLIP:基于对比文本-图像对的预训练(OpenAI, 2021)

    https://arxiv.org/abs/2103.00020?trk=cndc-detail

  • ZESREC:基于 Zero-Shot 的推荐系统(Amazon, 2021)

    Zero shot recommender systems - Amazon Science

Zero-Shot Learning (ZSL)

通过训练集图片学习出一些属性,将这些属性相结合得到融合特征之后,匹配与训练集图片不重合的测试集图片,来判断其类别,这一过程就是 Zero-Shot Learning (ZSL),即用见过的图片特征去判断没见过的图片类别。

让我们先以人类的一般推理过程来做个类比:

假设小明和爸爸一起到动物园游玩。首先看到了马,于是爸爸告诉小明,马就是这个形状的;之后,又看到了老虎,爸爸又告诉小明:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”

然后爸爸给小明安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小明有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后小明根据爸爸的提示,在动物园里找到了斑马。

上述例子中包含了一个人类的推理过程,就是利用过去的知识(马,老虎,熊猫的描述),在脑海中推理出新对象(斑马)的具体形态,从而能对新对象进行辨认。

例如下图中,从训练集图片 (Seen Classes Data) 中学习出一些属性 (比如 horselike、stripe 和 black&white),然后将这些属性相结合得到融合特征,融合特征刚好和测试集的斑马特征相匹配,最终得到预测结果为斑马:

图片来源:论文《Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer( University of Tübingen, 2009)》

Zero-Shot Learning 包含了一个推理的过程,就是如何利用过去的知识,在脑海中推理出新的对象的具体形态,从而对新对象进行辨认。

如今通过深度学习和监督学习虽然在很多任务上都可以给出令人惊叹的结果,但是这种学习方式也存在以下弊端:

  • 需要足够多的样本数据,给样本打标签的工作量巨大
  • 分类结果依赖训练样本,无法推理识别新类别

这显然难以满足人类对于人工智能的终极想象。而 Zero-Shot Learning 就是希望能够模拟人类通过推理识别新类别的能力,使得计算机具有识别新事物的能力,进而实现真正的智能。

CLIP:基于对比文本-图像对的预训练

2021 年之前,在自然语言处理 (Natural Language Processing, NLP) 领域有很多预训练方法都获得了成功。例如,GPT-3 175B 从网上搜集了近 5 亿 tokens 进行预训练,在很多下游任务上实现 SOTA (State-of-the-Art) 性能和 Zero-Shot Learning。这说明从海量互联网数据 (web-scale) 中学习,是可以超过高质量的人工标注 NLP 数据集的。

但是在计算机视觉 (Computer Vision, CV) 领域的预训练模型还是主要基于人工标注的 ImageNet 数据进行训练。由于人工标注的工作量巨大,许多科学家们开始设想,如何构建更为高效、便捷的方式用于训练视觉表征模型呢?

在 2021 年发表的论文《Learning Transferable Visual Models From Natural Language Supervision》中隆重推出了 CLIP (Contrastive Language-Image Pre-training) 模型,并且详细地介绍了如何通过自然语言处理监督信号,训练可迁移的视觉模型。

论文中是怎样处理 NLP 的监督信号呢?

在论文中主要介绍了以下三个部分:

图片来自论文

第一部分:对比的预训练。

在训练的过程中,通过两个编码器:文字编码器和图片编码器,完成模型输入的配对,形成 N 组图片和文本的特征。上图矩阵中蓝色对角线上的特征组作为正样本,其他白色特征组作为负样本, CLIP 会基于这些特征进行对比学习,完全不需要手工标注。

需要注意的是,这种无监督的对比学习需要大量的数据训练。在论文中的数据集中有 4 亿组文字图片的配对,保证了输出结果的质量。

第二部分:用 CLIP 实现 Zero-Shot 分类。

在下游任务中,CLIP 避免使用特殊的分类头,以实现完全不需要进行微调的数据集迁移。论文中设计了一个很巧妙的方法 ,Prompt Template,利用自然语言将分类任务巧妙的移植到现有的训练方法中。

第三部分:Zero-Shot 推理。

通过将样本图片输入到图像编码器中得到图像的特征,然后拿这个图像的特征去和所有的文本特征计算相似度,选择相似度最大的文本特征对应的句子来完成分类任务,最后形成结果图片。

通过验算,我们能够看到基于 CLIP 训练出来的模型效果非常理想:

图片来自论文

这个实验经过 ImageNet 数据集的重新筛选,制作了几个变种的版本。

在 ImageNet 数据集上训练出来的 ResNet 101 模型准确率是 76.2%,用 CLIP 训练出来的 VIT-Large 模型准确率同样是 76.2%。然而当我们换成其它数据集,严格按照 1000 类的分类头再次训练,得出的模型准确率却下降得很快。特别是使用上图中最后两行样本(素描画或者对抗性样本)时,准确度仅为 25.2% 和 2.7%,基本属于随机猜测,迁移效果惨不忍睹。对比使用 CLIP 训练出来的模型,准确率基本在线。

这从侧面说明了:因为和自然语言处理的结合,所以导致 CLIP 学出来的这个视觉特征,和我们用语言所描述的某个物体,已经产生了强烈的联系。

代码示例:在 Amazon SageMaker 运行 CLIP 模型

这个示例展示了如何下载和运行 CLIP 模型,计算任意图像和文本输入之间的相似性,以及执行 ZSL 图像分类。

  1. 下载和运行 CLIP 模型,输入之后可得到我们需要的模型;
import clip

clip.available_models()
model, preprocess = clip.load("ViT-B/32")
model.cuda().eval()
input_resolution = model.visual.input_resolution
context_length = model.context_length
vocab_size = model.vocab_size

图片来源:ImageNet 数据集

  1. 计算相似度:通过对特征进行归一化并计算每对的点积,来计算余弦相似度。

图片来源:CIFAR100 数据集

  1. ZSL 图像分类:使用余弦相似度(乘以 100)作为 softmax 运算的对数对图像进行分类。
from torchvision.datasets import CIFAR100

cifar100 = CIFAR100(os.path.expanduser("~/.cache"), transform=preprocess, download=True)

text_descriptions = [f"This is a photo of a {label}" for label in cifar100.classes]
text_tokens = clip.tokenize(text_descriptions).cuda()

with torch.no_grad():
    text_features = model.encode_text(text_tokens).float()
    text_features /= text_features.norm(dim=-1, keepdim=True)

text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)
top_probs, top_labels = text_probs.cpu().topk(5, dim=-1)

这里展示了执行 ZSL 图像分类的最终结果:在一个模型从未见过的图像集(这里以 CIFAR100 图像集为例)上,CLIP ViT-B/32 模型针对 CIFAR100 图像集分类标签的匹配结果。

图片来源:CIFAR100 数据集

整个过程无需在下游做微调,不用在数据集上训练,直接在基准上评估。

关于 CLIP 论文的完整代码请参考: GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image

ZESREC:基于 Zero-Shot 的推荐系统

除此之外,在多模态数据机器学习中,除了 CLIP 以外,我们也有一些其他的探索,例如亚马逊云科技的 AI Labs。

在论文 《Zero-Shot Recommender Systems》中分享了基本思路,即使用 BERT 训练的商品详情描述信息替代商品 id embedding 作为产品输入,上层连接 mlp 转为300 dim,然后连接 hmn 学习序列特征。

对于未出现的商品和用户进行推荐,它很好地解决了推荐的冷启动问题,甚至在跨数据集的 Zero-Shot 也有很好的表现,适用于新零售的全渠道 (Omni-Channel),并扩展增加输入的维度,例如视频和商品图等。

架构案例:多模态数据的模型训练

在下图中介绍了多模态数据管道在生命科学领域的参考部署架构。

图片来源:官方博客《在 Amazon SageMaker 上使用多模态健康数据训练机器学习模型》

该架构将处理来自基因组数据、临床数据和医学成像数据,并将每种模式的处理功能加载到 Amazon SageMaker Feature Store 中。

这个案例展示了如何汇集来自不同模式的特征,并训练一个预测模型,该模型的性能优于在一种或两种数据模式上训练的模型。

我们会在后续文章中继续介绍有关分布式训练、无服务器推理,以及 JAX 框架的演进趋势,请持续关注 Build On Cloud 微信公众号。

随着机器学习的重要程度不断突显,以及相关技术研究的不断丰富,相信在未来围绕机器学习的技术将会逐渐完善,并以此赋能、推动人工智能等技术领域迎来更广阔的发展空间,造福人类。

 

 

 

作者黄浩文

亚马逊云科技资深开发者布道师,专注于 AI/ML、Data Science 等。拥有 20 多年电信、移动互联网以及云计算等行业架构设计、技术及创业管理等丰富经验,曾就职于 Microsoft、Sun Microsystems、中国电信等企业,专注为游戏、电商、媒体和广告等企业客户提供 AI/ML、数据分析和企业数字化转型等解决方案咨询服务。

文章来源:https://dev.amazoncloud.cn/column/article/63e32a58e5e05b6ff897ca0c?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 将 csv转excel (.xls和.xlsx)的几种方式

前言 excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。 .xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。 .xlsx格式最多…

torch分布式训练笔记

torch分布式训练笔记 1. 数据并行(DistributedDataParallel)2. 模型并行(单机多卡)3. 混合并行(数据并行 模型并行/PipeLine并行) 1. 数据并行(DistributedDataParallel) 官方文档…

github搜索案例

目录结构 public/index.html <!DOCTYPE html> <html lang""><head><meta charset"utf-8"><!-- 针对IE浏览器的一个特殊配置&#xff0c;含义是让IE浏览器以最高的渲染级别渲染页面 --><meta http-equiv"X-UA-Comp…

海量文件高速传输解决方案(基于Rsync)

​​随着互联网的飞速发展和社会的数字化转型&#xff0c;企业信息化建设推动了数据的快速增长&#xff0c;越来越多的信息服务依赖海量数据的采集与应用。传统的FTP、网盘等工具无法满足海量数据的传输与分发&#xff0c;导致企业无法高效完成海量数据传输 。 传统的ftp传输效…

【使用驱动代码实现如下要求 应用程序通过阻塞的io模型来读取number变量的值】

驱动应用层代码 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h> #include "head.h"…

记一次JVM调优过程

文档修订记录 版本 日期 撰写人 审核人 批准人 变更摘要 & 修订位置 JVM相关理论 JVM内存 可分配内存&#xff1a; JVM可以调度使用的总的内存数&#xff0c;这个数量受操作系统进程寻址范围、系统虚…

学无止境·MySQL⑦(索引和视图)

索引和视图练习 索引练习1、建立一个utf8编码的数据库test12、建立商品表goods和栏目表category3、删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段4、在 goods_name 列上加唯一性索引&#xff08;用alter table方式&#xff09;5、在 shop_price 列上加…

基于linux下的高并发服务器开发(第一章)-GCC(1)1.2

打开XShell,在连接虚拟机Ubuntu的窗口中输入&#xff1a;sudo apt install gcc g gcc -v,查看gcc的版本,gcc version 7.5.0 也可以是gcc --version,查看信息相对少一些 g -v g --version ls查看当前目录的文件/文件夹 cd Linux/ 进入Linux文件夹 mkdir lession02 创建lession0…

校内VPN如何访问web of science?

web of science简介 Web of Science是获取全球学术信息的重要数据库&#xff0c;它收录了全球13000多种权威的、高影响力的学术期刊&#xff0c;内容涵盖自然科学、工程技术、生物医学、社会科学、艺术与人文等领域。Web of Science收录了论文中所引用的参考文献&#xff0c;通…

【Leetcode】24. 两两交换链表中的节点

给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 画图&#xff01;&#xff01;&#xff01; 1. 先定义一个头节点之前的节点 2.…

《向量数据库指南》——向量数据库与向量搜索库

目录 概览 向量数据库与向量搜索库 在这个数据量与日俱增的时代,大部分数据都可以归为半结构化数据和非结构化数据。近似最近邻(Approximate Nearest Neighbor,ANN)搜索是处理这类数据的有效方式。向量数据库是一种数据库管理系统,有助于处理不断增加的非结构化数据。 …

MySQL原理探索——29 如何判断一个数据库是不是出问题了

在第25和27篇文章中&#xff0c;介绍了主备切换流程。通过这些内容的讲解&#xff0c;你应该已经很清楚了&#xff1a;在一主一备的双 M 架构里&#xff0c;主备切换只需要把客户端流量切到备库&#xff1b;而在一主多从架构里&#xff0c;主备切换除了要把客户端流量切到备库外…

Linux:rsync+inotify实时同步

首先要客户机向服务器单次下载 而实时同步是向服务器实时上传 首先要实现单次下载&#xff0c;本章基于下面这章的续作 Linux&#xff1a;rsync_鲍海超-GNUBHCkalitarro的博客-CSDN博客 准备一个inotify-tools源码包 服务器配置 vim /etc/rsyncd.conf read only no setfa…

msfconsole

msfconsole 文章目录 msfconsole安装使用 msfconsole Msfconsole是Metasploit框架的主要控制台界面。它提供了一个命令行界面来与Metasploit框架进行交互&#xff0c;并允许用户执行各种渗透测试任务。Msfconsole是Metasploit的核心组件之一&#xff0c;它充当了一个交互式命令…

基于霍夫变换的航迹起始算法研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 一、设计内容 利用Hough变换处理量测得到的含杂波的二维坐标&#xff0c;解决多目标航迹起始问题。使用Matlab进行仿真&#x…

设计模式详解(一):工厂方法——Factory Method

目录导航 工厂方法及其作用工厂方法的好处工厂方法的实现关系图实现步骤 工厂方法的适用场景工厂方法举例 工厂方法及其作用 工厂方法是一种创建型设计模式。所谓创建型设计模式是说针对创建对象方面的设计模式。在面向对象的编程语言里&#xff0c;我们通过对象间的相互协作&…

【聚类算法】密度峰值聚类算法DPC(Density Peak Clustering Algorithm)

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 密度峰值聚类算法&#xff08;Density Peak Clustering Algorithm&#xff09;&#xff0c;能够自动发现数据中的密度峰值点&#xff0c;并根据峰值点将数…

Java:创建文件夹并输出内容到文件中

前言 在实际开发当中我们往往会遇到需要用 Java 代码来进行在我们项目的部署的服务器上创建一个文件并向里面写入想要的数据&#xff0c;下面就是具体的实现方式&#xff0c;希望对小伙伴们有用。 代码 这里我把这个操作封装成了一个工具类&#xff0c;方便根据不同业务场景…

中国品牌在海外做独立站有什么优势?

从人口红利驱动转向消费升级驱动——品牌出海行业的变局正在上演&#xff0c;低价不再是适用于所有出海企业的策略。从产品出海走向真正意义上的品牌出海&#xff0c;正在成为一部分中国商家的选择。 无论是做品牌还是做全球化&#xff0c;都不容易。消费者购买的不止产品&…

从零开始 verilog 以太网交换机(六)帧处理单元设计与实现

从零开始 verilog 以太网交换机&#xff08;六&#xff09;帧处理单元设计与实现 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f9e8; 从零开始 verilog 以太网交换机系列专栏&#xff1a;点击这里 &#x1f511;未经作者允许&a…