上一部分介绍了如何使用矩阵分解 学习嵌入的方法。矩阵分解的一些限制包括:
- 使用辅助特征(即, 查询 ID/商品 ID)。因此,只能使用 训练集中存在的用户或推荐项。
- 建议的相关性。正如您在第 1 步中看到的 Colab、 都会向所有人推荐热门商品 使用点积作为相似度度量。最好的做法是 用户兴趣。
深度神经网络 (DNN) 模型可以解决矩阵的这些局限性 分解。DNN 可以轻松整合查询特征和商品特征 (由于网络输入层的灵活性), 把握用户的具体兴趣并提高广告的相关性 建议。
用于建议的 Softmax DNN
一种可能的 DNN 模型是 softmax, 该方法将此问题视为多类别预测问题,其中:
- 输入的是用户查询。
- 输出是概率矢量,其大小等于 语料库中的 1 个字词,表示 每一项例如,点击或观看 YouTube 视频。
输入
DNN 的输入可包括:
- 密集特征(例如,观看时长和自上次观看以来经过的时间)
- 稀疏特征(例如,观看记录和国家/地区)
与矩阵分解方法不同,您可以添加辅助特征,例如 年龄或国家/地区。我们将用 x 表示输入矢量。
模型架构
模型架构决定了模型的复杂性和表现力。 通过添加隐藏层和非线性激活函数(例如 ReLU), 模型可以捕获数据中更复杂的关系。不过, 增加参数通常也会使模型更难 而且传送费用也更高。我们将使用最后一个隐藏层的 ψ(x)∈Rd的图层。
Softmax 输出:预测的概率分布
模型通过 softmax 函数映射最后一层 ψ(x)的输出。 映射到概率分布 ˆp=h(ψ(x)VT),其中:
- h:Rn→Rn 为 softmax 函数, 提供方: h(y)i=eyi∑jeyj
- V∈Rn×d 是 softmax 层。
softmax 层映射得分向量 y∈Rn (有时称为 logits) 生成概率分布图。
。损失函数
最后,定义一个损失函数来比较以下内容:
- ˆp,softmax 层的输出(概率分布)
- p,标准答案,表示用户拥有的商品 互动过(例如,用户点击或观看过的 YouTube 视频)。 这可以表示为归一化的多热分布( 概率矢量)。
例如,您可以使用交叉熵损失, 概率分布。
Softmax 嵌入
推荐项的概率由以下公式计算得出: j ˆpj=exp(⟨ψ(x),Vj⟩)Z, 其中, Z 是一个不依赖于 j的归一化常量。
也就是说, log(ˆpj)=⟨ψ(x),Vj⟩−log(Z), 因此项的对数概率为 j (加上常数) 二 d维向量的点积,可解释为 查询和项嵌入:
- ψ(x)∈Rd 是最后一个隐藏层的输出。我们称之为查询的嵌入 x。
- Vj∈Rd 是将最后一个隐藏层连接到输出 j 的权重向量。我们称之为项的嵌入。 j
DNN 和矩阵分解
在 softmax 模型和矩阵分解模型中, 系统学习一个嵌入向量, Vj 每一项 j。我们称之为 矩阵中的项嵌入矩阵 V∈Rn×d 因式分解现在是 softmax 层的权重矩阵。
不过,查询嵌入则不同。与其学习 Ui 每次查询 i嵌入一次,系统就会学习到一个映射, 从查询特征 x 到嵌入 ψ(x)∈Rd。 因此,您可以将这个 DNN 模型视为对 因式分解,即用非线性模型来替换查询端 函数 ψ(⋅)。
可以使用商品功能吗?
您能否在商品方面运用同样的想法?也就是说, 模型可以学习一个非线性函数来映射 项特征到嵌入的概率?可以。为此,请使用双塔 神经网络,由两个神经网络组成:
- 一个神经网络映射查询特征 xquery 查询嵌入 ψ(xquery)∈Rd
- 一个神经网络映射项特征 xitem 到项嵌入 ϕ(xitem)∈Rd
模型的输出可以定义为 ⟨ψ(xquery),ϕ(xitem)⟩。 请注意,它不再是 softmax 模型。新模型 每对一个值 (xquery,xitem) 而不是概率向量 xquery。