首页 > 其他分享 >推荐模型梳理

推荐模型梳理

时间:2024-11-10 20:30:39浏览次数:1  
标签:Transformer based -- 模型 用户 推荐 序列 梳理

Summary

目录

标准序列推荐模型

非深度学习 Pooling RNN CNN Transformer 对比学习
FPMC(最终得分 = 用户特征+物品特征) DNN GRU4Rec(GRU-based) Caser SASRec(第一次使用self-attention) CLS4Rec
GRU4Rec+(改进损失函数与负采样) DIN(attention换成了AU)
BERT4Rec(使用Bert-based)
TiSASRec(相对时间self-attention)
FMLP-Rec(把self-attention换成滤波器)

其他推荐模型

  • 多个attention:SHAN(两层attention,一层表示长期兴趣,一层表示短期兴趣)
  • 多个兴趣:ComiRec(使用多头attention提取多个向量,并分别做最近邻检索)
  • 多个行为:MKM-SR(多任务训练;item sequence embedding+micro-behavior sequence embedding)

FPMC

  • 背景:推荐系统需要同时考虑用户的长期偏好和顺序行为。现有方法要么只考虑一般偏好(MF),要么只考虑顺序模式(MC)。

  • 问题:如何在一个统一框架下同时捕捉用户的长期偏好和短期顺序行为

  • 方法:

    • 输入数据以"basket"(购物篮)形式组织

      • 每个时刻t用户可能与多个物品交互
      • 同一时刻交互的所有物品构成一个basket
    • 预测目标:基于用户ID和当前basket预测下一个时刻的物品

    • 最终分数 = 用户-物品交互分数 + 物品-物品转移分数

    • 使用S-BPR(Sequential Bayesian Personalized Ranking)损失函数

DNN(Pooling)

  • 背景与问题:YouTube面临海量用户和视频的推荐挑战。需要处理实时性强、噪声大、稀疏性等问题。需要平衡新内容探索和已有内容

  • 解决方案:普通的Pooling模型。Trick:增加一个Example Age,新视频更容易被推荐。将序列的最后一次观看作为label。

    image-20241105151459508

GRU4Rec(RNN-based)

  • 背景:很多场景下只能获取用户的当前会话信息,传统方法难以建模会话内的复杂顺序依赖

  • 问题: 如何仅基于会话数据建模用户的即时偏好并做出准确推荐

  • 解决方案:引入GRU

image-20241106123110096

GRU4Rec+(RNN-based)

  • 背景/问题:如何改进GRU4Rec

  • 解决方案:改进GRU4Rec+的负采样策略与损失函数策略。

    负采样:不仅使用mini-batch负采样,还同时使用从某个预定义分布中采样得到的物品作为负样本。

    损失函数:TOP1-max和BPR-max损失

Caser(CNN-based)

  • 背景:Top-N序列推荐的核心是将每个用户建模为过去交互商品的序列,目标是预测用户在"近期未来"可能交互的前N个排序商品。在这个过程中,交互顺序体现出重要的序列模式 - 序列中较近期的商品对下一个商品的影响更大。

  • 问题:需要一个模型能够反映出近期商品具有更大影响力的特点,同时考虑用户的一般偏好和序列模式

  • 解决方案:将序列看作"图像",引入CNN来处理序列。

    flowchart TD subgraph Input U[用户ID] S[近期L个交互物品序列] end subgraph Embedding E[Embedding Layer] M[L×d Embedding矩阵] end subgraph CNN direction TB subgraph "水平卷积 (横向滑动)" H[水平卷积核: h×d] HP[水平池化] end subgraph "垂直卷积 (纵向滑动)" V[垂直卷积核: L×1] end end subgraph Fusion C[特征拼接] FC[全连接层] end subgraph Output P[预测层] S2[下T个物品的预测分数] end U --> E S --> E E --> M M --> H M --> V H --> HP HP --> C V --> C C --> FC U --> FC FC --> P P --> S2 style Input fill:#f9f,stroke:#333 style Embedding fill:#bbf,stroke:#333 style CNN fill:#bfb,stroke:#333 style Fusion fill:#fbb,stroke:#333 style Output fill:#ff9,stroke:#333

SASRec(Transformer-based)

  • 背景:MC方法表达能力有限,RNN方法需要大量数据

  • 问题:如何设计一个既能捕获长期依赖又计算高效的序列推荐模型

  • 解决方案:引入Transformer Encoder

    image-20241106123456596

DIN(Transformer-based)

  • 背景与问题:在电商推荐场景中,用户兴趣是多样化的,但现有的Embedding&MLP方法使用固定长度的向量表示用户兴趣,难以完整表达用户多样的兴趣。固定长度向量的表达能力有限,若要增加表达能力需要增大维度,会导致参数量剧增和过拟合问题

  • 解决方案:引入局部激活单元(local activation unit),以及两个Trick:MAR降低计算复杂度,Dice激活函数

    image-20241105151700075

BERT4Rec(Transformer-based)

  • 背景:大多数序列推荐模型都是单向的(从左到右)

  • 问题:单向模型限制了对用户行为序列的建模能力

  • 解决方案:和BERT类似

    • 引入双向自注意力机制
    • 采用Cloze task训练策略

TiSASRec(Transformer-based)

  • 背景:现有序列推荐模型只考虑物品的顺序,忽略了时间间隔信息

  • 问题:如何将时间间隔信息纳入序列推荐模型中

  • 解决方案:在计算attention时,向Key和Value向量中加入位置信息和时间间隔信息。

    image-20241106124600192

FMLP-Rec(Transformer-based)

  • 背景:基于RNN,CNN,Transformer的模型容易过拟合

  • 问题:如何简化Transformer架构,减少参数量

  • 解决方案:将attention层替换为filter层,计算复杂度从\(O(n^2)\)降到\(O(n\log n)\)

    image-20241106125452352

CLS4Rec(Contrastive Learning based)

  • 背景:现有方法在处理稀疏数据和噪声数据时表现不佳

  • 问题:如何设计合适的数据增强方法来构建对比学习任务

  • 解决方法:使用三种数据增强方式,判断哪些变换后的序列属于同一用户。

    image-20241106125808061

​ 用多任务训练,损失函数=对比损失+预测损失

SHAN(长短期)

  • 背景与问题:传统方法通常是将用户的总体兴趣(general taste)和近期需求(recent demand)结合起来进行推荐。但是,用户的长期偏好会随时间不断演变,并且交互建模方式过于简单。

  • 解决方案:引入两个自注意力层。第一注意力层根据历史购买物品表征学习用户长期偏好,而第二注意力层则通过用户长期和短期偏好的耦合输出最终用户表征。

    image-20241106133425600

ComiRec(多兴趣)

  • 背景:用户在推荐系统中的兴趣通常是多样的,但现有的序列推荐模型往往只用一个统一的用户向量来表示用户兴趣。

  • 问题:如何更好地捕捉用户的多样化兴趣,提供更准确的推荐。

  • 解决方案:提出了一个可控的多兴趣推荐框架,包含两个关键模块:

    1. 多兴趣提取模块:通过动态路由或多头self-attention从用户行为序列中提取多个兴趣表示。

    2. 聚合模块:通过可控因子平衡推荐的准确性和多样性。

    image-20241105204121450

MKM-SR(多行为)

  • 背景与问题:只关注会话中连续商品之间的转换模式,忽略了用户的微观行为。此外,商品属性可以提供额外信息来建模商品间的转换模式。

  • 解决方案:将会话建模为商品-操作对的序列。此外,采用了多任务学习,主任务是推荐,辅助任务是knowledge embedding learning。

    image-20241106133722566

标签:Transformer,based,--,模型,用户,推荐,序列,梳理
From: https://www.cnblogs.com/rh-li/p/18538422

相关文章

  • 刚入门大模型该如何快速上手?
    前言在AI技术日新月异的今天,大模型成为了引领科技浪潮的明星产品。它们凭借强大的数据处理能力和深度学习能力,正在改变着我们的工作和生活方式。对于初学者来说,如何快速上手大模型,成为了一个迫切而又具有挑战性的问题。前排提示,文末有大模型AGI-CSDN独家资料包哦!一、了......
  • 大模型携手AI原生应用融入全产业场景
    前言10月17日,百度世界2023在北京首钢园召开。百度集团执行副总裁、百度智能云事业群总裁沈抖宣布,对“云智一体”的战略内涵全面升级,即云智一体,深入产业,生态繁荣,AI普惠。重磅发布“千帆AI原生应用开发工作台”,加速企业AI原生应用落地;发布了国内首个AI原生应用商店;面向企业落......
  • 【精品毕设推荐】基于微信小程序的体育资讯软件的设计与实现
    点击下载原文及代码,可辅助在本地配置运行......
  • siliconflow免费使用大模型平台
    siliconflow硅基流动是一家专注于大规模AI计算的技术公司,提供高性能LLM推理和训练解决方案,助力企业高效部署AI应用。最重要的是平台可以有众多免费大模型可以使用,免费的模型涵盖文本生成、向量&重排序模型、图片生成、多模态大模型等各种模型。除此之外,目前注册可获的2000......
  • 【计算机毕业设计选题推荐】基于springboot湖北汽车工业科技学院校园二手商品交易系统
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 【计算机毕设选题推荐】基于javaee的超市外卖系统的设计与实现 【附源码+部署+讲解】
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 如何在云服务器上配置ollama、部署llama3.2大语言模型
    本项目是在NVIDIAGeForceRTX4090云服务器的Ubuntu22.04系统上运行系统环境为:Python3.12、Pytorch2.4.0、CUDA12.1、cuDNN8、NVCC通过VNC远程连接到服务器,服务器的租赁是在矩池云官网上。一、服务器租赁登录到矩池云官网选择亚太一区,选择RTX4090服务器,点击租用,等......
  • 学术新趋势:深度融合迁移学习与多模态技术,推动模型性能极限突破
    2024深度学习发论文&模型涨点之——迁移学习+多模态迁移学习是指将一个领域或任务中获得的知识应用到另一个相关领域或任务中的方法。其主要优势在于可以减少对大量训练数据的需求,并提高模型在新任务上的性能。多模态学习是指在不同类型的数据(如图像、文本、音频等)之间共享知......
  • 【大模型应用开发 动手做AI Agent】Agent的感知力:语言交互能力和多模态能力
    AIAgent,语言交互,多模态感知,大模型应用,自然语言处理,计算机视觉1.背景介绍在人工智能领域,AIAgent(智能代理)作为一种能够感知环境、做出决策并与环境交互的智能体,扮演着越来越重要的角色。一个强大的AIAgent需要具备敏锐的感知能力,才能有效地理解和响应周围世......
  • DAY109代码审计-PHP模型开发篇&动态调试&反序列化&变量覆盖&TP框架&原生POP链
    知识点1、PHP审计-动态调试-变量覆盖2、PHP审计-动态调试-原生反序列化3、PHP审计-动态调试-框架反序列化PHP常见漏洞关键字SQL注入:selectinsertupdate deletemysql_querymysqli等文件上传:$_FILES,type="file",上传,move_uploaded_file()等XSS跨站:printprint_r......