当前位置: 首页 > news >正文

推荐系统学习笔记(六)自监督学习

目录

为什么要做自监督学习❓

复习一下

自监督学习

目标

特征变换

1.random mask

2.dropout

 3.互补特征 complementary

4. mask一组关联特征

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


自监督学习用在双塔模型上会提高业务指标⬆️

侵删

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

为什么要做自监督学习❓

1. 推荐系统头部效应严重:少部分物品占据大部分的点击

2. 高点击物品表征学的好,长尾物品表征学的不好

自监督学习,做data augmentation,更好地学习长尾物品表征

复习一下

batch内负样本,采用listwise训练,损失函数为:

侵删

💡用batch内负样本需要纠偏

做训练时把cos(ai,bj) 替换成 cos(ai,bj) - logpi,热门物品不至于被过分打压。

线上召回还采用cos(ai,bj)。

自监督学习

目标

  • 物品i的两个向量表征bi和bi'有较高相似度 ➡️ cos(bi,bi')尽量大
  • 不同物品i和j的向量表征bi和bj、bj'有较低相似度 ➡️ cos(bi,bj)和 cos(bi,bj') 尽量小

特征变换

1.random mask

随机选择一些离线特征(比如类目), 把它们“遮住”

例如:

item的类目特征 u = {数码,摄影},如果不mask就是对'数码"和"摄影"做embedding

mask后 u' = {default} (默认的缺失值),mask后对default做embedding

2.dropout

仅对多值离散特征生效(一个物品可以有多个类目,所以类目是一个多值离散特征)

dropout:随机丢弃特征中50%的值

例如:

item的类目特征 u = {数码,摄影},dropout之后 u' = {数码}

区别:mask是整个u的特征全部丢掉,dropout是u保留一半

 3.互补特征 complementary

例如:

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

随机分两组:{ID,关键词}、{类目,城市}

{ID,关键词} ➡️ {ID,default,关键词,default} 向量bi

{类目,城市} ➡️ {default,类目,default,城市} 向量bj

训练时鼓励cos(bi,bj)尽量大

4. mask一组关联特征

较复杂。特征之间有较多关联,遮住一个并不会损失太多信息。模型可以从其他强关联的特征中学习到mask掉的特征。

例如:

受众性别 u ={男性,女性,中性},类目 v={美妆,数码,摄影,科技,……}

u=女性 和 v=美妆 同时出现的概率 p(u,v) 较大

u=男性 和 v=美妆 同时出现的概率 p(u,v) 较小

离线计算特征两两之间的关联,互信息衡量:

MI({u}, {v}) = \sum_{u \in U} \sum_{v \in V} {p(u, v)} \cdot \log \frac{​{p(u, v)}}{p(u) \cdot p(v)}

关联越强,p(u,v) 越大,MI 越大

操作流程

  • k个特征,离线计算两两之间的MI,得到k*k的矩阵
  • 随机选一个特征作为种子,找到种子最相关的 k/2 种特征
  • mask掉种子及其相关的 k/2 种特征,保留其余的 k/2 种特征

好处:实验效果好

坏处:复杂,实现难度大,且不容易维护,新加一个特征就得重算一遍MI

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

  1. 从全体物品中均匀抽样,得到m个物品(与双塔区别:双塔根据点击行为抽,热门抽中概率大)
  2. 做两类特征变换,输出两组向量:(b1,b2,……,bm)和 (b1‘,b2’,……,bm‘)
  3. 第i个物品的损失函数为:

    L_{\text{self}}[i] = -\log \left( \frac{\exp(\cos(\text{\textcolor{red}{b}}_i, \text{\textcolor{red}{b}}'_i))}{\sum_{j=1}^{m} \exp(\cos(\text{\textcolor{red}{b}}_i, \text{\textcolor{red}{b}}'_j))} \right)
  4. 做梯度下降,减小损失:

    \frac{1}{m} \sum_{i=1}^{m} L_{\text{self}}[i].

http://www.dtcms.com/a/311594.html

相关文章:

  • 【语音技术】意图与语料
  • gcc-arm-none-eabi安装后,找不到libgcc.a的拉置
  • 边缘计算优化!陌讯轻量化模型实现路面裂缝误检率↓78%
  • 【大模型LLM】大模型训练加速 - 深度混合精度训练(Mixed Precision Training)原理详解
  • 数字化生产管理系统设计
  • Leetcode 11 java
  • Agentic RAG:自主检索增强生成的范式演进与技术突破
  • ADB 查看 CPU 信息、查看内存信息、查看硬盘信息
  • 计算学习理论(PAC学习、有限假设空间、VC维、Rademacher复杂度、稳定性)
  • PHP 与 MySQL 详解实战入门(2)
  • Linux中使用Qwen模型:Qwen Code CLI工具
  • stm32F407 实现有感BLDC 六步换相 cubemx配置及源代码(二)
  • JavaScript将String转为base64 笔记250802
  • 人工智能篇之计算机视觉
  • golang——viper库学习记录
  • 牛客 - 旋转数组的最小数字
  • 题单【模拟与高精度】
  • 先学Python还是c++?
  • 工具自动生成Makefile
  • 机器学习——K 折交叉验证(K-Fold Cross Validation),实战案例:寻找逻辑回归最佳惩罚因子C
  • 深入理解C++中的vector容器
  • VS2019安装HoloLens 没有设备选项
  • 大模型(五)MOSS-TTSD学习
  • 二叉树的层次遍历 II
  • 算法: 字符串part02: 151.翻转字符串里的单词 + 右旋字符串 + KMP算法28. 实现 strStr()
  • Redis数据库存储键值对的底层原理
  • 信创应用服务器TongWeb安装教程、前后端分离应用部署全流程
  • Web API安全防护全攻略:防刷、防爬与防泄漏实战方案
  • Dispersive Loss:为生成模型引入表示学习 | 如何分析kaiming新提出的dispersive loss,对扩散模型和aigc会带来什么影响?
  • 二、无摩擦刚体捉取——抗力旋量捉取