上一节展示了如何使用矩阵分解来学习嵌入。但矩阵分解存在一些局限性,包括:
深度神经网络(DNN)模型可以解决矩阵分解的这些局限性。DNN可以轻松地合并查询特征和项目特征(由于网络输入层的灵活性),这有助于捕获用户的特定兴趣并提高建议的相关性。
一种可能的DNN模型是softmax,它将问题看作多类预测问题,其中:
DNN的输入可包括:
与矩阵分解方法不同,还可以添加年龄或国家区域等侧面特征。这里用x表示输入向量。
图1.输入层x
模型架构
模型架构决定了模型的复杂性和表现力。通过添加隐藏层和非线性激活函数(例如,ReLU),模型可以捕获数据中更复杂的关系。然而,增加参数的数量通常也使得模型更难以训练并且计算起来更复杂。最后一个隐藏层的输出用
表示:
图2.隐藏层的输出, ψ(X)
图4.损失函数
上一节解释了如何将softmax层合并到推荐系统的深度神经网络中。本节将详细介绍此系统的训练数据。
softmax训练数据由查询特征X以及用户与之交互的项目向量(表示为概率分布 p)组成,在下图中用蓝色标记。模型的变量是不同层中的权重,在下图中用橙色标记。通常使用随机梯度下降或其变体方法来训练模型。
DNN模型解决了矩阵分解的许多限制,但通常训练和预测的代价更高。下表总结了两种模型之间的一些重要差异。
矩阵分解 | Softmax DNN | |
---|---|---|
查询特征 | 不容易包括在内 | 可以包括在内 |
冷启动 | 不容易处理词典查询或项目。可以使用一些启发式方法(例如,对于新查询,类似查询的平均嵌入) | 容易处理新查询 |
折页 | 通过调整WALS中未观察到的重量可以轻松减少折叠 | 容易折叠,需要使用负采样或重力等技术 |
训练可扩展性 | 可轻松扩展到非常大的语料库(可能是数亿项或更多),但仅限于输入矩阵稀疏 | 难以扩展到非常大的语料库,可以使用一些技术,例如散列,负采样等。 |
提供可扩展性 | 嵌入U,V是静态的,并且可以预先计算和存储一组候选 | 项目嵌入V是静态的并且可以存储,查询嵌入通常需要在查询时计算,使得模型的服务成本更高 |
综上所述: