微软多兴趣召回:Octopus

news2024/11/25 3:18:26

Octopus: Comprehensive and Elastic User Representation for the Generation of Recommendation Candidates

背景:

多兴趣通道(channel)结构的多兴趣召回模型在兴趣通道数量上面存在两个问题

  1. 兴趣通道较少,不能充分学习到用户的多个兴趣。
  2. 兴趣通道较多,很多兴趣通道可能和用户兴趣不相关,这样会引入很多不相关的候选集,带来噪声;固定的 topK 策略会导致有噪声的兴趣也会召回到对应的候选集,从而挤占整体相关兴趣的候选数量,造成整体相关候选集数量下降;而且线上耗时和兴趣通道数据是线性相关,兴趣通道越多造成的耗时越大。

在这里插入图片描述

其实说的更简单点,2 个问题:就是多兴趣召回里面,不同用户产出的多个兴趣数量是固定的,没有个性化;每个兴趣向量召回的 topK 个候选,没有考虑不同兴趣的重要度

即如何实现个性化的兴趣数量、如何实现根据兴趣重要度去个性化选择候选数量。

解决方案:

预设多个兴趣通道,但是根据用户历史行为来激活部分兴趣通道,对激活的兴趣通道计算用户的兴趣向量。同时根据兴趣重要度来决定每个兴趣拉取候选集的 quota。

方案详情:

整体结构图如下:
在这里插入图片描述

以上面的结果图为例,预设 M(图中M=8) 个全局的相互正交的兴趣通道,设兴趣向量的维度为 d,

解决第一个问题:如何实现不同用户的兴趣数量个性化
兴趣通道正交

怎么保证各个兴趣向量之间的正交性呢,即怎么保障 M 个兴趣通道对应的兴趣向量矩阵 H ∈ R M × d \mathbf H \in R^{M \times d} HRM×d为正交矩阵,可以通过迭代的方式来,用户行为序列矩阵为 Θ ∈ R N × d \mathbf \Theta \in R^{N \times d} ΘRN×d
通过求兴趣向量矩阵正交基得到
a r g m i n ∑ Θ ∣ ∣ θ − θ H T H ∣ ∣ 2 argmin \sum_{\Theta} \vert \vert \theta - \theta \mathbf H^T \mathbf H \vert \vert_2 argminΘ∣∣θθHTH2
另外通过正则项约束来进一步保证兴趣通道向量矩阵的正交性,其中 I ∈ R M × M \mathbf I \in R^{M \times M} IRM×M是单位矩阵
∣ ∣ H H T − I ∣ ∣ 2 \vert \vert \mathbf H \mathbf H^T - \mathbf I \vert \vert_2 ∣∣HHTI2

兴趣激活

假设用户序列长度为 N,首先将每个序列都投影到 M 个兴趣通道上面,即计算每个序列在 M 个兴趣通道上面的注意力分数(论文中用的是点乘),分数最大的兴趣通道作为激活的兴趣通道,用户 N 个序列就会得到 N 个注意力分数最大的通道,当然只有 M 个通道。以上图为例(M=8,N=7),有 3 个序列在兴趣通道 2 上面计算得到的注意力分数最大,有 2 个序列在兴趣通道 6 上面注意力分数最大,剩下还有 2 个序列在兴趣通道 7 上面注意力分数最大, 这 N=7 个序列行为总共激活了 3 个(兴趣通道 2、6、7)兴趣通道,那么这个用户最后产出的多兴趣数目为 3。这样就把最相关的一些兴趣通道给激活出来了,相关性弱的兴趣通道不会参与候选集召回。

兴趣聚合

上图中,序列行为 1、2、3 激活了兴趣通道 2,序列行为 3、4 激活了兴趣通道 6,序列行为 5、6 激活了兴趣通道 7。最终的用户兴趣向量通过 attention 的方式计算得到。第 l l l个兴趣向量 h l ∈ H h_l \in \mathbf H hlH由激活第 l l l个兴趣通道的序列行为集合根据新计算的注意力分数得到,计算方式如下

ϕ l = ∑ x i ∈ X a i , l θ x i \phi_l = \sum_{x_i \in \mathbf X} a_{i,l} \theta_{x_i} ϕl=xiXai,lθxi

a i , l = exp ⁡ s i m ( θ x i , h l ) ∑ x j ∈ X exp ⁡ s i m ( θ x j , h l ) a_{i,l} = \frac { \exp {sim( \theta_{x_i}, h_l)}} { \sum_{x_j \in \mathbf X} \exp {sim( \theta_{x_j}, h_l)} } ai,l=xjXexpsim(θxj,hl)expsim(θxi,hl)
比如,第一个激活的兴趣通道 2,产出的用户兴趣向量是序列 1、2、3 在兴趣通道 2 上面的注意力权重,然后根据权重乘以行为向量,聚合得到第一个兴趣向量。

训练目标,本来是用户向量尽可能的学的好,即和 target物料向量在向量空间尽可能的接近,向量空间反应了相关性,向量空间距离最接近表示相关性最高,但是多个兴趣向量就不是这样了,因为用户兴趣是多样的,我们只需要选出 target 物料向量和兴趣向量距离最小的那个兴趣向量,然后最小化这个兴趣向量和 target 物料向量的距离,至于其他用户兴趣向量,不用 care。

解决第二个问题:如果实现不同兴趣对应的候选集数量个性化

2 种解决办法

在这里插入图片描述

第一个:竞争式(Competition)

M 个兴趣向量,每个用户兴趣向量先各自召回 J 个候选,计算用户兴趣向量和各自候选集的距离,会得到 M*J 个距离,然后选择 topK 个距离最小的候选。不过有个问题,不同兴趣和候选集的距离可能不可比,比如某个兴趣,和它对应的候选距离天然都要小些,那么这个兴趣对应的候选最终会全部进入 topK 集合中,其他的兴趣可能因为距离天然要大些,可能一个也不会进入到最终的 topK 候选中。

第二个:分配式(Allocation)

从效率考虑,用一个 MLP 来建模兴趣重要度。将前面产出的多个兴趣向量作为模型输入,每个兴趣向量经过 MLP( d × d d \times d d×d d × 1 d \times 1 d×1后经过 sigmoid 激活),计算每个用户兴趣向量的相对重要性

γ i = M L P ( ϕ i ) ∑ M L P ( ϕ j ) \gamma_i = \frac { MLP(\phi_i)} { \sum MLP(\phi_j)} γi=MLP(ϕj)MLP(ϕi)

然后找到和 target 物料向量和距离最小的兴趣向量 ϕ k \phi_k ϕk,设置 label 为 1,计算 γ k \gamma_k γk和 1 之间的交叉熵loss

兴趣重要度模型训练好之后,输入用户的多个兴趣向量,可以得到每个兴趣向量经过网络之后的兴趣重要度得分 γ i \gamma_i γi,根据重要度来决定候选 quota 数量的分配,第 l l l个兴趣向量对应的比例,计算如下

β l = ( γ l ) α ∑ ( γ j ) α \beta_l = \frac { (\gamma_l)^{\alpha} } { \sum (\gamma_j)^{\alpha} } βl=(γj)α(γl)α

其中 α \alpha α是超参数

在这里插入图片描述

实验
不同通道数量的比较

在这里插入图片描述

消融实验

+Orth 表示加兴趣通道正则化
+Group 表示加兴趣激活
OCT© 竞争式
OCT(A) 分配式
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1488954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣hot9---滑动窗口

题目: 先记录一下(没想到有生之年,还能):其实还能优化,后面会讲述优化思路 思路: 滑动窗口的大小就是固定的,就是len_p。那么依次将窗口从s的最左端向右滑动。在当下的窗口中&#x…

鸿蒙开发就业前景以及发展方向分析~

鸿蒙操作系统作为华为公司自主研发的操作系统,已经成为当下炙手可热的话题。作为一个全新的操作系统,鸿蒙开发为IT行业带来了巨大的就业机会。本文将围绕鸿蒙开发的就业前景以及发展方向展开讨论。 一、鸿蒙开发就业前景 随着鸿蒙操作系统的发布&#…

Windows快速删除大量文件

直接上命令 rmdir 磁盘:\文件夹名字\ /s /q /S 表示除目录本身外,还将删除指定目录下的所有子目录和文件。 /Q 表示安静模式,删除时不需要经过确认。 特别是vue项目中的node_modules,删除贼快!

【代码随想录算法训练营Day34】860.柠檬水找零;406.根据身高重建队列;452.用最少数量的箭引爆气球

❇️Day 34 第八章 贪心算法 part04 ✴️今日任务 860.柠檬水找零406.根据身高重建队列452.用最少数量的箭引爆气球 ❇️860.柠檬水找零 本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。题目链接:https://leetcode.cn/problems/lem…

10W 音频功率放大电路芯片TDA2003,可用于汽车收音机及收录机中作音频功率放大器,内部具有短路保护和过热保护等功能

TDA2003 用于汽车收音机及收录机中作音频功率放大器。 采用 TO220B5 封装形式。 主要特点: ⚫ 内部具有短路保护和过热保护。内部具有地线开路、电源极性接 反和负载泄放电压反冲等保护电路。 ⚫ 输出电流大。 ⚫ 负载电阻可低至 1.6 。 …

【短时交通流量预测】基于单层BP神经网络

课题名称:基于单层BP神经网络的短时交通流量预测 版本时间:2023-04-27 代码获取方式:QQ:491052175 或者 私聊博主获取 模型简介: 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&…

Redis核心数据结构之SDS(一)

数据结构与对象 简单动态字符串 概述 Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,简称C字符串),而是自己构建了一种名为简单动态字符串(Simple Dynamic String, SDS)的后向类型,并将SDS用作Redis的默认字符串表示。在…

算法比赛|赛制介绍| ACM, IOI赛制, OI赛制

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

spring boot 字典使用,使用element-ui + vue

数据库表设计 type为1则代表字典的类型 type为2则是下拉框显示的值 id是雪花算法自动生成的 前端设计 基于vue-fast2设计 使用element-ui 异步获取数据 // 获取数据列表getDataList () {this.dataListLoading truethis.$http({url: this.$http.adornUrl(/sys/dict/list)…

C++ 模拟OJ

目录 1、1576. 替换所有的问号 2、 495. 提莫攻击 3、6. Z 字形变换 4、38. 外观数列 5、 1419. 数青蛙 1、1576. 替换所有的问号 思路&#xff1a;分情况讨论 ?zs&#xff1a;左边没有元素&#xff0c;则仅需保证替换元素与右侧不相等&#xff1b;z?s&#xff1a;左右都…

C语言:结构体(自定义类型)知识点(包括结构体内存对齐的热门知识点)

和黛玉学编程呀&#xff0c;大家一起努力呀............. 结构体类型的声明 回顾一下 struct tag { member-list; }variable-list; 创建和初始化 我们知道&#xff0c;在C语言中&#xff0c;对于一些数据是必须初始化的&#xff0c;但是结构体怎么创建并且初始化呢&#xff1…

绘图机器 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 绘图机器的绘图笔初始位置在原点&#xff08;0, 0&#xff09;&#xff0c;机器启动后其绘图笔按下面规则绘制直线&#xff1a; 1&#xff09;尝试沿着横向坐标轴…

基于51单片机的智能睡眠呼吸检测系统[proteus仿真]

基于51单片机的智能睡眠呼吸检测系统[proteus仿真] 呼吸检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的智能睡眠呼吸检测系统[proteus仿真] 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文…

【NR 定位】3GPP NR Positioning 5G定位标准解读(五)

前言 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;二&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位…

远程调用--webClient

远程调用webClient 前言1、创建webClient2、准备数据3、执行请求4、接收返回响应到的数据整体代码 前言 非阻塞、响应式HTTP客户端 1、创建webClient WebClient client WebClient.create();2、准备数据 Map<String,String> params new HashMap<>();params.pu…

【Python】Python教师/学生信息管理系统 [简易版] (源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

#WEB前端

1.实验&#xff1a;vscode安装&#xff0c;及HTML常用文本标签 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; &#xff08;1&#xff09;网页直接搜索安装vscode &#xff08;2&#xff09;打开vscode&#xff0c;在下图分别安装以下插件&#xff1a; Html Css Support …

《TCP/IP详解 卷一》第10章 UDP 和 IP 分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…

5G网络架构与组网部署01--5G网络架构的演进趋势

目录 1. 5G网络架构的演进趋势 1.1 5G移动通信系统整体架构 1.2 4G移动通信系统整体架构 1.3 4G与5G移动通信系统整体架构对比 1.4 核心网架构演进 1.5 无线接入网演进 1. 整体架构组成&#xff1a;接入网&#xff0c;核心网 2. 5G网络接入网和核心网对应的网元&#xff…

判断回文字符串

判断回文字符串 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果&#xff1a; 题目描述&#xff1a; 输入⼀个字符串&#xff0c;判断这个字符串是否是回文字符串&#xff08;字符串的长度小于等于30&#xff0c;字符串不包含空格&#xff09;&#xf…