MoreRSS

site iconRunye | 算法花园修改

滴滴、飞猪。分享算法,竞赛性编程,阅读等主题内容。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Runye | 算法花园的 RSS 预览

batch 内负采样

2025-04-30 08:00:00

示意图 #card
image.png

优点 #card
image.png

缺点 #card
image.png

混合负采样

2025-04-30 08:00:00

image.png

  • 额外建立了一个 向量缓存 ,存储物料塔在训练过程中得到的最新的物料向量。

  • 如何采样 #card

    • 在训练每个Batch的时候,先进行Batch内负采样,同一个Batch内两条样本中的物料互为Hard Negative

    • 额外从向量缓存采样一些由物料塔计算好的之前的物料向量 b,作为Easy Negative的Embedding

  • 尽管在一个Batch内热门物料比较集中,但是向量缓存汇集了多个Batch计算出的物料向量,从中还是能够采样到一些小众、冷门物料作为Easy Negative的。所以,混合负采样对物料库的覆盖更加全面,更加符合负样本要让召回模型“开眼界、见世面”的一般原则。

向量化召回统一建模框架

2025-04-30 08:00:00

如何定义正样本,即哪些q和t在向量空间内应该相近;

  • 取决于不同的召回场景

    • I2I召回。 q 和 t 是物料。 #card

      • 比如我们认为同一个用户在同一个会话(session,间隔时间较短的用户行为序列)交互过(例如点击,观看,购买等)的两个物料,在向量空间是相近的。这体现的是两个物料的相似性。
    • U2I召回。 qq 是用户,tt 是物料。#card

      • 一个用户与其交互过的物料在向量空间中应该是相近的。这体现的是用户与物料的匹配性。
    • U2U召回。 qqtt 都是用户。#card

      • 比如使用孪生网络,qq 是用户一半的交互历史,tt 是同一用户另一半交互历史,二者在向量空间应该是相近的,这体现的是同一性。

如何定义负样本,即哪些q和t在向量空间内应该较远;#card

  • [[负样本主要靠随机采样]]

  • hard negative

如何将q和t映射成Embedding;#card

  • 排序鼓励交叉,召回要求解耦。

如何定义优化目标,即损失函数。#card

  • 多分类的Softmax Loss,只要求把正样本的概率值预测得越高越好。正样本来自用户真实反馈,负样本往往未曾想用户曝光过。

    • nce loss

      • [[Noise Contrastive Estimation]]
    • Sampled Softmax Loss

  • LTR 思想,把用户喜欢的排在前面,最求排序的相对准确

Bayesian Personalized Ranking Loss

2025-04-30 08:00:00

BPR的思想是给定一个由用户,正向物料,随机采样的负向物料组成的三元组 (ui,ti+,ti)\left(u_i, t_{i+}, t_{i-}\right) ,针对用户 uiu_i 的正确排序(将 ti+t_{i+} 排在 tit_{i-} 前面)的概率是 PConectorder =sigmoid(uiti+uiti)P_{\text {Conectorder }}=\operatorname{sigmoid}\left(\boldsymbol{u}_{\boldsymbol{i}} \cdot \boldsymbol{t}_{i+}-\boldsymbol{u}_{\boldsymbol{i}} \cdot \boldsymbol{t}_{i-}\right) ,BPR Loss就是要 :-> 将这一正确排序的概率最大化。
由于 PCorrectorder P_{\text {Correctorder }} 对应的真实label永远是1,因此将 PCorrectorder P_{\text {Correctorder }} 代入Binary Cross-Entropy的公式,得到BPR Loss如公式(5-14)所示,符号含义参考公式(5-13)。

第4章 精排

2025-04-29 08:00:00

[[推荐算法的"五环之歌"]]

4.2 交叉结构

4.3 用户 [[行为序列建模]]

  • [[@日久见人心:论建模用户长期兴趣的几种姿势]]

  • DIN实现了用户兴趣的“千物千面”​,但是仍有不足,就是它只刻画了候选物料与序列元素的交叉,却忽略了行为序列内部各元素之间的依赖关系。对用户行为序列建模的方法是采用双层Attention#card
    +

image.png

第5章 召回

2025-04-29 08:00:00

5.2 向量化召回统一建模框架

  • [[向量化召回统一建模框架]]

  • [[向量召回]] 基本流程 #incremental #card

    • (1)训练一个模型 MM ,将 QQ 中的每个实例 qq 和T中的每个实例 tt 都映射到同一个向量空间。

    • (2)将T中几十万,上百万个实例喂入模型M,映射成向量。再把这几十万,上百万个向量灌入Faiss或Milvus这样的向量数据库,建立索引。

    • (3)在线服务时,对于一个Q类的实例 qq ,通过模型M将其映射成向量 Embq\mathbf{E m b}_q 。再在向量数据库中,通过近似最近邻(ANN)搜索算法,查找与 Embq\mathbf{E m b}_q 最近的 KKTT 类的邻居向量 Embti\mathbf{E m b}_{t_i} 。这些邻居向量对应的 ti(1iK)t_i(1 \leqslant i \leqslant K) 作为召回结果返回。

5.3 借助 [[Word2Vec]]

5.4 “瑞士军刀”FM的召回功能