假设您正在开发一款食物推荐应用,其中 用户输入他们喜爱的餐点,应用就会推荐类似的餐点 来展示自己喜欢的内容您想要开发机器学习 (ML) 模型 预测食物相似性,让您的应用 推荐(“由于您喜欢薄煎饼,因此我们推荐可丽饼”)。
为了训练模型,您精心挑选了一个数据集,其中包含 5,000 个热门 餐食,包括罗宋汤, 热狗、 salad、 披萨、 和沙威玛。
您要创建一个 meal
地图项,其中包含
独热编码
每个膳食项目的表示法。
稀疏数据表示法的误区
查看这些独热编码时,您会注意到 数据的表示形式。
- 权重数量。输入矢量大意味着有大量
权重
用于神经网络。
在独热编码中使用 M 个条目,
节点,则模型必须训练
该层的 MxN 权重。权重过大会引发进一步的问题:
- 数据点数量。模型中的权重越多,您获得的数据就越多, 进行有效训练。
- 计算量。权重越多,所需的计算就越多 来训练和使用模型。您很容易就会超出 硬件。
- 内存量。模型中的权重越多, 训练和处理它的加速器上都需要有负载。扩大规模 是非常困难的
- 难以提供支持 设备端机器学习 (ODML)。 如果您希望在本地设备上运行机器学习模型(而不是 您需要专注于缩小模型,并且需要 以减少权重的数量。
- 向量之间缺少有意义的关系。输入的 对于食物的独热编码并没有提供任何有关 食品的相似度。从数学角度来说,索引 1(“热狗”)是指 比索引 2(“沙拉”)更接近索引 4999(“沙威玛”), 狗狗比沙拉更类似于沙威玛(均含肉和面包)。
在本单元中,您将学习如何创建低维嵌入 可以解决这两个问题。