【王树森推荐系统公开课】笔记08(双塔模型+自监督学习)

课程链接

        自监督学习的目的是把物品塔训练的更好。

1 双塔模型的问题

  • 推荐系统的头部效应严重:

    • 少部分物品占据大部分点击。

    • 大部分物品的点击次数不高。

  • 高点击物品的表征学得好,长尾物品的表征学得不好。

  • 自监督学习:做 data augmentation,更好地学习长尾物品的向量表征。

参考文献:

  • Tiansheng Yao et al. Self-supervised Learning for Large-scale Item Recommendations. In CIKM, 2021.

2 双塔模型 Listwise 训练

2.1 损失函数

做训练的时候希望 p_i 尽量接近 y_i

2.2  纠偏 

        笔记07中提到过:Batch 内负样本会过度打压热门物品,造成偏差。如果用 Batch  内负样本就需要纠偏。训练时做调整,热门物品不至于被过分打压。

2.3  训练双塔模型

  • 从点击数据中随机抽取 n 个用户—物品二元组,组成一个 batch。

  • 双塔模型的损失函数:L_{\text{main}}[i] = -\log\left(\frac{\exp(\cos(\mathbf{a}_i, \mathbf{b}_i) - \log p_i)}{\sum_{j=1}^{n} \exp(\cos(\mathbf{a}_i, \mathbf{b}_j) - \log p_j)}\right).

  • 做梯度下降,减小损失函数:\frac{1}{n} \sum_{i=1}^{n} L_{\text{main}}[i].

3 自监督学习

用自监督学习训练物品塔。

3.1 自监督学习 

  •  同一个物品经过不同的特征变换,最终得到的向量表征不完全相等。
  • 如果物品塔足够好,同一个物品的表征应该有很高的相似度。训练的时候会鼓励两个向量的 cos 相似度尽量大。

  • 不同物品的向量表征应该离得尽量远。

概括 

  • 物品 i 的两个向量表征 b_i'′​ 和 b_i''​ 有较高的相似度。

  • 物品 i 和 j 的向量表征 b_i'​ 和 b_j''​ 有较低的相似度。

  • 鼓励 \cos \left ( b_i',b_i'' \right )尽量大,\cos \left ( b_i',b_j'' \right ) 尽量小。

3.2 特征变换

自监督学习用到很多种特征变换。

Random Mask 

  • 随机选一些离散特征(比如类目),把它们遮住。

  • 例:

    • 某物品的类目特征是 U={数码,摄影}

    • Mask 后的类目特征是 U′={default}

Dropout(仅对多值离散特征生效

  • 一个物品可以有多个类目,那么类目是一个多值离散特征。

  • Dropout:随机丢弃特征中 50% 的值。

  • 例:

    • 某物品的类目特征是 U={美妆,摄影}

    • Dropout 后的类目特征是 U′={美妆}

互补特征(complementary

  • 假设物品一共有 4 种特征:ID类目关键词城市

  • 随机分成两组:

    • {ID关键词} 和 {类目, 城市}

    • {IDdefault关键词default}→物品表征

    • {default, 类目, default, 城市}→物品表征

鼓励两个物品表征向量相似。

Mask 一组关联的特征 

        之所以用这种方法,是因为特征之间有较强的关联,遮住一个特征并不会损失太多的信息。模型可以从其他强关联特征中学到遮住的特征。最好是把关联的特征一次全都遮住。

  • 受众性别:U={男,女,中性}

  • 类目:V={美妆,数码,足球,摄影,科技,⋯}

  • u=女v=美妆 同时出现的概率 p\left ( u,v \right ) 大。

  • u=女v=数码 同时出现的概率 p\left ( u,v \right ) 小。

  • p\left ( u \right ):某特征取值为 u 的概率。

  • p\left ( u,v \right ):某特征取值为 u,另一个特征取值为 v,同时发生的概率。

  • 离线计算特征两两两之间的关联,用互信息(mutual information)衡量MI(\mathcal{U}, \mathcal{V}) = \sum_{u \in \mathcal{U}} \sum_{v \in \mathcal{V}} p(u, v) \cdot \log \frac{p(u, v)}{p(u) \cdot p(v)}.

具体实现

  • 设一共有 k 种特征。离线计算特征两两两之间互信息 MI,得到 k\times k 的矩阵。

  • 随机选一个特征作为种子,找到种子最相关的 k/2 种特征。

  • Mask 种子及其相关的 k/2 种特征,保留其余的 k/2 种特征。

好处:比 random mask、dropout、互补特征等方法效果更好。

坏处:方法复杂,实现的难度大,不容易维护。

3.3 训练模型

如何用变换后的特征训练模型?

  • 从全体物品中均匀抽样,得到 m 个物品,作为一个 batch。

  • 做两类特征变换,物品塔输出两组向量:\mathbf{b}'_1, \mathbf{b}'_2, \cdots, \mathbf{b}'_m​ 和 \mathbf{b}''_1, \mathbf{b}''_2, \cdots, \mathbf{b}''_m

  • i 个物品的损失函数:L_{\text{self}}[i] = -\log\left(\frac{\exp(\cos(\mathbf{b}'_i, \mathbf{b}''_i))}{\sum_{j=1}^m \exp(\cos(\mathbf{b}'_i, \mathbf{b}''_j))}\right).

跟双塔模型不同,训练模型抽样时,冷门物品和热门物品被抽到的概率是相同的。 

  • 自监督学习的损失函数L_{\text{self}}[i] = -\log\left(\frac{\exp(\cos(\mathbf{b}'_i, \mathbf{b}''_i))}{\sum_{j=1}^m \exp(\cos(\mathbf{b}'_i, \mathbf{b}''_j))}\right).
  • 梯度下降,减小自监督学习的损失:\frac{1}{m} \sum_{i=1}^{m} L_{\text{self}}[i].

4 总结

  • 双塔模型学不好低曝光物品的向量表征。

  • 自监督学习:

    • 对物品做随机特征变换。

    • 特征向量 b_i'b_i''​ 相似度高(相同物品)。

    • 特征向量 b_i'​ 和 b_j'' 相似度低(不同物品)。

  • 实验效果:低曝光物品、新物品的推荐变得更准。

  • 训练模型​​​​​​​

    • 对点击做随机抽样,得到 n 对用户—物品二元组,作为一个 batch(这个 batch 用来训练双塔)。

    • 从全体物品中均匀抽样,得到 m 个物品,作为一个 batch(这个 batch 用来做自监督学习,只训练物品塔)。

    • 做梯度下降,使得损失减小:​​​​​​​

      • 其中,α 是一个超参数,用于平衡双塔模型的损失和自监督学习的损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值