深度神经网络模型

上一部分介绍了如何使用矩阵分解 学习嵌入的方法。矩阵分解的一些限制包括:

  • 使用辅助特征(即, 查询 ID/商品 ID)。因此,只能使用 训练集中存在的用户或推荐项。
  • 建议的相关性。正如您在第 1 步中看到的 Colab、 都会向所有人推荐热门商品 使用点积作为相似度度量。最好的做法是 用户兴趣。

深度神经网络 (DNN) 模型可以解决矩阵的这些局限性 分解。DNN 可以轻松整合查询特征和商品特征 (由于网络输入层的灵活性), 把握用户的具体兴趣并提高广告的相关性 建议。

用于建议的 Softmax DNN

一种可能的 DNN 模型是 softmax, 该方法将此问题视为多类别预测问题,其中:

  • 输入的是用户查询。
  • 输出是概率矢量,其大小等于 语料库中的 1 个字词,表示 每一项例如,点击或观看 YouTube 视频。

输入

DNN 的输入可包括:

  • 密集特征(例如,观看时长和自上次观看以来经过的时间)
  • 稀疏特征(例如,观看记录和国家/地区)

与矩阵分解方法不同,您可以添加辅助特征,例如 年龄或国家/地区。我们将用 x 表示输入矢量。

突出显示 softmax 深度神经网络中的输入层的图片
图 1. 输入层 x。

模型架构

模型架构决定了模型的复杂性和表现力。 通过添加隐藏层和非线性激活函数(例如 ReLU), 模型可以捕获数据中更复杂的关系。不过, 增加参数通常也会使模型更难 而且传送费用也更高。我们将使用最后一个隐藏层的 \(\psi (x) \in \mathbb R^d\)的图层。

突出显示 softmax 深度神经网络中的隐藏层的图片
图 2. 隐藏层的输出 \(\psi (x)\)。

Softmax 输出:预测的概率分布

模型通过 softmax 函数映射最后一层 \(\psi (x)\)的输出。 映射到概率分布 \(\hat p = h(\psi(x) V^T)\),其中:

  • \(h : \mathbb R^n \to \mathbb R^n\) 为 softmax 函数, 提供方: \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)
  • \(V \in \mathbb R^{n \times d}\) 是 softmax 层。

softmax 层映射得分向量 \(y \in \mathbb R^n\) (有时称为 logits) 生成概率分布图。

显示 softmax 深度神经网络中预测概率分布的图片
图 3. 预测的概率分布 \(\hat p = h(\psi(x) V^T)\)。

损失函数

最后,定义一个损失函数来比较以下内容:

  • \(\hat p\),softmax 层的输出(概率分布)
  • \(p\),标准答案,表示用户拥有的商品 互动过(例如,用户点击或观看过的 YouTube 视频)。 这可以表示为归一化的多热分布( 概率矢量)。

例如,您可以使用交叉熵损失, 概率分布。

显示 softmax 深度神经网络中的损失函数的图片
图 4. 损失函数。

Softmax 嵌入

推荐项的概率由以下公式计算得出: \(j\) \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), 其中, \(Z\) 是一个不依赖于 \(j\)的归一化常量。

也就是说, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\), 因此项的对数概率为 \(j\) (加上常数) 二 \(d\)维向量的点积,可解释为 查询和项嵌入:

  • \(\psi(x) \in \mathbb R^d\) 是最后一个隐藏层的输出。我们称之为查询的嵌入 \(x\)。
  • \(V_j \in \mathbb R^d\) 是将最后一个隐藏层连接到输出 j 的权重向量。我们称之为项的嵌入。 \(j\)
显示 softmax 深度神经网络中的嵌入的图片
图 5.嵌入 \(j\)、 \(V_j \in \mathbb R^d\)

DNN 和矩阵分解

在 softmax 模型和矩阵分解模型中, 系统学习一个嵌入向量, \(V_j\) 每一项 \(j\)。我们称之为 矩阵中的项嵌入矩阵 \(V \in \mathbb R^{n \times d}\) 因式分解现在是 softmax 层的权重矩阵。

不过,查询嵌入则不同。与其学习 \(U_i\) 每次查询 \(i\)嵌入一次,系统就会学习到一个映射, 从查询特征 \(x\) 到嵌入 \(\psi(x) \in \mathbb R^d\)。 因此,您可以将这个 DNN 模型视为对 因式分解,即用非线性模型来替换查询端 函数 \(\psi(\cdot)\)。

可以使用商品功能吗?

您能否在商品方面运用同样的想法?也就是说, 模型可以学习一个非线性函数来映射 项特征到嵌入的概率?可以。为此,请使用双塔 神经网络,由两个神经网络组成:

  • 一个神经网络映射查询特征 \(x_{\text{query}}\) 查询嵌入 \(\psi(x_{\text{query}}) \in \mathbb R^d\)
  • 一个神经网络映射项特征 \(x_{\text{item}}\) 到项嵌入 \(\phi(x_{\text{item}}) \in \mathbb R^d\)

模型的输出可以定义为 \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\)。 请注意,它不再是 softmax 模型。新模型 每对一个值 \((x_{\text{query}}, x_{\text{item}})\) 而不是概率向量 \(x_{\text{query}}\)。