Embeddings
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
假设您正在开发一款餐点推荐应用,用户输入自己喜欢的餐点,应用会建议他们可能喜欢的类似餐点。您想开发一个可以预测食物相似度的机器学习 (ML) 模型,以便您的应用可以提供高质量的推荐(“因为您喜欢煎饼,所以我们推荐可丽饼”)。
为了训练模型,您需要整理一个包含 5,000 种热门餐点的数据集,包括罗宋汤、热狗、沙拉、披萨和沙瓦玛。
图 1. 食品数据集中包含的餐点示例。
您可以创建一个 meal
特征,其中包含数据集中每种餐点的独热编码表示法。编码是指选择数据的初始数值表示法以训练模型的过程。
图 2. 罗宋汤、热狗和沙瓦玛的独热编码。
每个独热编码向量的长度为 5,000(数据集中的每个餐点都有一个条目)。图中的省略号表示未显示的 4,995 个条目。
稀疏数据表示法的陷阱
查看这些独热编码时,您会发现这种数据表示法存在一些问题。
- 权重数量。较大的输入向量意味着神经网络需要大量的权重。在独热编码中,如果有 M 个条目,并且在网络输入层后的第一层中有 N 个节点,那么模型必须为该层训练 MxN 个权重。
- 数据点数。模型中的权重越多,高效训练所需的数据就越多。
- 计算量。权重越多,训练和使用模型所需的计算就越多。这很容易就会超出硬件的能力范围。
- 内存占用量。模型中的权重越多,用于训练和应用模型的加速器就需要越多的内存。要高效地扩大规模非常困难。
- 难以支持设备端机器学习 (ODML)。如果您希望在本地设备上运行机器学习模型(而不是在云端提供模型),则需要专注于缩小模型,并希望减少权重数量。
在本模块中,您将学习如何创建嵌入(稀疏数据的低维表示),以解决这些问题。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-05-20。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-05-20。"],[],[]]