登录
原创

谷歌推荐系统框架 (四) —— 深度模型训练

发布于 2020-10-29 阅读 109
  • 人工智能
原创

Softmax训练

前一页介绍了如何将softmax层合并到推荐系统的深度神经网络中。 该页面将仔细查看该系统的培训数据。

训练数据

softmax训练数据由查询特征x和与用户进行交互的项目向量组成(表示为概率分布p)。 在下图中,这些标记为蓝色。 模型的变量是不同层中的权重。 在下图中,这些标记为橙色。 通常使用随机梯度下降的任何变体来训练模型。
Image highlighting training of a softmax deep neural network

负采样

由于损失函数会比较两个概率向量<math><semantics><mrow><mi>p</mi><mo separator="true">,</mo><mover accent="true"><mi>p</mi><mo>^</mo></mover><mo>(</mo><mi>x</mi><mo>)</mo><mo>∈</mo><msup><mi>R</mi><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">p,\hat p(x) \in R^n</annotation></semantics></math>p,p^(x)Rn(分别是ground truth和模型的输出),因此如果损失损失的梯度(对于单个查询x),计算损失的梯度可能会非常昂贵。 语料库大小n太大。

您可以设置一个系统,以仅在正项(在ground truth中活动的项)上计算梯度。 但是,如果系统仅在正对上训练,则模型可能会发生折叠,如下所述。

折叠

在下图中,假设每种颜色代表查询和项目的不同类别。 每个查询(表示为正方形)仅主要与相同颜色的项目(表示为圆圈)进行交互。 例如,在YouTube中,将每个类别都视为一种不同的语言。 典型的用户通常会与一种指定语言的视频进行互动。
Image of a plane that has been folded in half showing 3 different groups of squares representing queries, and circles representing items. Each group has a different color, and queries only interact with items from the same group.
该模型可以学习如何将给定颜色的查询/项目嵌入相对于彼此放置(正确地捕获该颜色内的相似性),但是来自不同颜色的嵌入可能偶然出现在嵌入空间的同一区域中。 这种现象称为折叠,可能导致虚假的建议:在查询时,模型可能会错误地预测来自不同组的商品的高分。

负例是标记为与给定查询“无关”的项目。 在训练过程中显示模型否定示例可以教给该模型不同的嵌入应该相互远离。

负采样策略

可以使用负采样来代替使用所有项来计算梯度(这可能太昂贵)或仅使用正项(这会使模型易于折叠)。 更准确地说,您可以使用以下各项来计算近似梯度:

  • 所有正项目(出现在目标标签中的项目)

  • 负项目采样<math><semantics><mrow><mi>j</mi><mo>∈</mo><mrow><mn>1</mn><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi>n</mi></mrow></mrow><annotation encoding="application/x-tex">j \in{1...n}</annotation></semantics></math>j1...n

有多种对负片进行采样的策略:

  • 可以统一采样。

  • 可以给具有更高分数<math><semantics><mrow><mi mathvariant="normal">Ψ</mi><mo>(</mo><mi>x</mi><mo>)</mo><mi mathvariant="normal">.</mi><msub><mi>V</mi><mi>j</mi></msub></mrow><annotation encoding="application/x-tex">\Psi(x).V_j</annotation></semantics></math>Ψ(x).Vj 的项目<math><semantics><mrow><mi>j</mi></mrow><annotation encoding="application/x-tex">j</annotation></semantics></math>j赋予更高的概率。 直观地讲,这些是对梯度贡献最大的示例。 这些例子通常被称为hard negatives。

总结

对于大型语料库,矩阵分解通常是更好的选择。 它更易于扩展,查询更便宜且不易折叠。

DNN模型可以更好地捕获个性化首选项,但更难训练且查询成本更高。 DNN模型优于矩阵分解进行评分,因为DNN模型可以使用更多功能来更好地捕获相关性。 同样,DNN模型折叠通常是可以接受的,因为您最关心的是对假定相关的预过滤候选集进行排名。

评论区

哎嘿

1

0

0