本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Object2Vec 算法
Amazon SageMaker Object2Vec 算法是一种高度可定制的通用神经嵌入算法。它可以学习高维对象的低维密集嵌入。将以某种方式学习嵌入,以便在嵌入空间中保留原始空间中的对象对之间的关系语义。例如,您可以使用学到的嵌入有效地计算对象的最近邻点,以及可视化低维空间中的相关对象的自然聚类。您还可以将嵌入用作下游指导式任务中相应对象的功能,例如分类或回归。
Object2Vec 概括了众所周知的 Word2Vec 嵌入技术,用于在中进行了优化的单词。 SageMaker BlazingText 算法有关讨论如何将 Object2Vec 应用于一些实际用例的博客文章,请参阅 Amazon Object2Vec 简介。 SageMaker
主题
Object2Vec 算法的 I/O 接口
您可以在很多输入数据类型上使用 Object2Vec,包括以下示例。
输入数据类型 | 示例 |
---|---|
语句-语句对 |
“A soccer game with multiple males playing.” 和“Some men are playing a sport.” |
标签-序列对 |
“Titanic”电影的流派标签(如“Romance”和“Drama”)及其简短描述“James Cameron's Titanic is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic. She was the most luxurious liner of her era, a ship of dreams, which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912.” |
客户-客户对 |
Jane 的客户 ID 和 Jackie 的客户 ID。 |
产品-产品对 |
足球的产品 ID 和篮球的产品 ID。 |
项审查用户-项对 |
用户的 ID 以及她购买的商品,例如苹果、梨和橙子。 |
要将输入数据转换为支持的格式,必须对其进行预处理。目前,Object2Vec 本身支持两种类型的输入:
-
离散标记,它表示为单个
integer-id
的列表。例如,[10]
。 -
离散标记序列,它表示为
integer-ids
列表。例如,[0,12,10,13]
。
每个对中的对象可以是不对称的。例如,这些对可以是 (标记, 序列)、(标记, 标记) 或 (序列, 序列)。对于标记输入,该算法支持简单嵌入作为兼容编码器。对于标记向量序列,该算法支持以下编码器:
-
平均池化嵌入
-
分层卷积神经网络 (CNN)
-
多层双向长短期记忆 (BiLSTM)
每个对的输入标签可以是以下内容之一:
-
分类标签,表示对中的对象之间的关系
-
分数,表示两个对象之间的相似性强度
对于分类中使用的分类标签,该算法支持交叉熵损失函数。对于回归中使用的基于评级/分数的标签,该算法支持均方误差 (MSE) 损失函数。在创建模型训练作业时,请使用 output_layer
超参数指定这些损失函数。
Object2Vec 算法的 EC2 实例建议
您使用的 Amazon Elastic Compute Cloud (Amazon EC2) 实例的类型取决于是训练还是运行推理。
在 CPU 上使用 Object2Vec 算法训练模型时,请从 ml.m5.2xlarge 实例开始。要在 GPU 上进行训练,请从 ml.p2.xlarge 实例开始。如果此实例的训练时间过长,则可以使用更大的实例。目前,Object2Vec 算法只能在单个机器上训练。但是,它提供对多个 GPU 的支持。Object2Vec 支持使用 P2、P3、G4dn 和 G5 GPU 实例系列进行训练和推理。
对于使用经过训练的 Object2Vec 模型(具有深层神经网络)的推理,我们建议使用 ml.p3.2xlarge GPU 实例。由于 GPU 内存稀缺,可以指定 INFERENCE_PREFERRED_MODE
环境变量来优化是将 GPU 优化:分类或回归还是将 GPU 优化:编码器嵌入推理网络加载到 GPU 中。
Object2Vec 示例笔记本
注意
要在笔记本实例上运行笔记本,请参阅示例笔记本。要在 Studio 上运行笔记本,请参阅创建或打开 Amazon SageMaker Studio 经典笔记本电脑。