首页 > 编程语言 >精通推荐算法31:行为序列建模之ETA — 基于SimHash实现检索索引在线化

精通推荐算法31:行为序列建模之ETA — 基于SimHash实现检索索引在线化

时间:2024-09-28 18:47:49浏览次数:3  
标签:检索 在线 31 离线 建模 ETA SimHash

1 行为序列建模总体架构

2 SIM模型的不足和为什么需要ETA模型

SIM实现了长周期行为序列的在线建模,其GSU检索单元居功至伟。但不论Hard-search还是Soft-search,都存在如下不足:

  1. GSU检索的目标与主模型不一致。Hard-search通过类目属性来筛选历史行为,但不同类目不代表相关度低,比如啤酒和尿布。Soft-search通过辅助模型的Embedding来检索top-K近邻,但辅助模型与主模型有不一致问题。
  2. GSU检索的索引更新频率与主模型不一致。索引规模一般很大,通常需要离线构建,很难在线频繁更新。而目前很多精排模型都实现了在线学习,其更新频率很快。这就导致GSU检索时可能还在使用已过时的离线索引。

要解决这一问题,最好的办法是将近邻搜索从离线转化为在线。但在线进行内积计算求相似度,对于长序列来说,耗时过高。所以关键在于如何找到一种快速进行相似度计算的方法。ETA模型应运而生。

ETA( End-to-End Target Attention)由阿里巴巴推荐团队于2021年提出,全称“ End-to-End User Behavior Retrieval in Click-Through Rate Prediction Model”[9]。它受到NLP中Reformer模型的启发,通过SimHash实现了快速计算相似度,从而实现了近邻搜索的在线化。

3 ETA模型结构

ETA同样采用先检索后建模的二阶段方式,主要针对检索阶段进行优化。其核心点在于,将相似度计算从向量内积,转化为了SimHash和海明距离。大大加快了近邻搜索,从而不需要离线构建top-K索引,直接在线计算即可,使得索引更新频率可以与主模型保持一致。另外检索阶段直接使用主模型的Embedding,不需要额外的辅助模型,从而使得二者目标保持一致。ETA模型结构如图5-18所示。

先通过检索模块将长序列抽取为短序列,如图5-18左下角虚线框内所示。然后再通过Multi-Head Target Attention建模得到其表征向量。然后再和用户短序列建模后的表征向量、用户侧和物品侧其他特征向量等,一起合并,如图5-18右下角所示。之后再通过MLP全连接网络得到输出,如图5-18右上角所示。整个过程与SIM比较相近,关键在于检索阶段相似度计算的方法不同。SIM采用向量内积计算余弦相似度,而ETA则为SimHash和海明距离。下面重点来看怎么实现的。

4 SimHash原理

SimHash是一种局部敏感哈希,可以快速实现向量压缩。其计算过程为:

如图5-19所示,空间中的两向量x和y,经过了四次随机旋转。每次旋转可认为是一个哈希函数,旋转后位于下半轴(黄色所示)则取值为1,上半轴(蓝色所示)则为0。最终分别压缩为一个四维二进制向量。对比两次哈希过程可以发现,当x和y本身比较相近时,其SimHash后的结果也相近。

ETA中,先利用主模型的Embedding计算SimHash。线上推理时,取出候选物品和每个历史行为对应物品的SimHash结果,计算海明距离。最后取出top-K距离最近的,即完成了检索过程。海明距离为,两向量相同位置元素不同的个数。当两向量相同时,其海明距离为0。海明距离可以通过异或运算得到,其计算速度非常快。

5 ETA总结和思考

ETA通过对SIM检索阶段相似度计算方式的升级,使得top-K近邻搜索索引不需要离线构建,从而最大限度保证了检索阶段和主模型的一致性。可以发现,从MIMN离线建模长周期序列,发展到SIM离线构建索引,在线实现检索和建模,再发展到ETA索引也实现了在线化。模型每个部分逐步从离线过渡到在线,提升了整体一致性和更新频率。

6 作者新书推荐

历经两年多,花费不少心血,终于撰写完成了这部新书。本文在5.8节中重点阐述了。

源代码:扫描图书封底二维码,进入读者群,群公告中有代码下载方式

微信群:图书封底有读者微信群,作者也在群里,任何技术、offer选择和职业规划的问题,都可以咨询。

详细介绍和全书目录,详见

《精通推荐算法》,限时半价,半日达icon-default.png?t=O83Ahttps://u.jd.com/mq5gLOH

标签:检索,在线,31,离线,建模,ETA,SimHash
From: https://blog.csdn.net/u013510838/article/details/142619435

相关文章

  • P3313 [SDOI2014] 旅行
    题目思路为每个宗教维护一个线段数,查询时,树剖时在对应宗教上查询区间即可。使用动态开点线段树,每次最多新建\(\logn\)个节点,不会MLE。代码#include<bits/stdc++.h>#definerange1,100000usingnamespacestd;constintN=100010;structedge{intto,......
  • 蓝桥杯—STM32G431RBT6(TIM定时器输入捕获频率和占空比)
    一、什么是输入捕获?对比输出捕获区别?输入捕获是指对输入信号的特定事件进行检测和记录它主要用于测量输入信号的时间间隔、频率等参数。而输出捕获则是对输出信号的特定事件进行控制和监测。两者的主要区别在于作用对象不同,输入捕获关注的是输入信号,而输出捕获关注的是输出信......
  • 蓝桥杯--STM32G431RBT6(TIM定时器的输出频率和占空比,含详细原理介绍和使用方法)
    目录一、前言二、代码实现功能:​编辑按如图配置定义变量编写执行代码 显示在LCD上加入按键效果三、效果展示四、代码开源 一、前言ARR即自动重装载值(AutoReloadRegister)。相当于一个水杯,水杯容量,水满为一个周期,倒掉重新滴水。它是一个用于指定特定数值的参......
  • 信2305-3-徐戌-20234316
    动手动脑:EnumTest.javapublicclassEnumTest{ publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t);// //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //从字符......
  • sicp每日一题[2.31]
    Exercise2.31AbstractyouranswertoExercise2.30toproduceaprocedure$tree-map$withthepropertythat$square-tree$couldbedefinedas(define(square-treetree)(tree-mapsquaretree))这道题跟上面一道的map实现几乎一模一样,我还以为我理解错题目......
  • 手动搭建高可用的 kubernetes 集群(v1.31)
    手动搭建高可用的kubernetes集群(v1.31)目录1、环境准备1.1集群规划(节约资源,可按需配置)1.2安装依赖包(双节点执行)1.3配置映射(双节点执行)1.4免密登录(master节点执行)1.5环境准备(双节点执行)2、安装containerd(双节点执行)3、安装Kubernetes3.1安装Kubernetes组件(双节点执行)3.2......
  • test details
    这是一条没有summary的details.这是一个正常的summary这是一个正常的details.这是一个正常的summary这是一个正常的details.这是一个正常的details.这是一个正常的details.这是一个正常的details.这是一个正常的details.这是一个正常的details.这是一......
  • Springboot大润发超市配送业务处理系统m5319(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,配送员,商品分类,商品信息,商品订单,配送订单,完成订单开题报告内容一、研究背景随着电子商务的快速发展,人们对于商品的需求越来越追求高效和便捷。超市作......
  • Meta广告资料库怎么用:Facebook、Instagram海外社媒营销统统拿下!
    社交媒体现今已成为大部分商家宣传推广方案中的重要工具,尤其是Meta旗下的两个主流社媒平台Facebook和Instagram,活跃用户数量以数十亿计,分布地区也非常广。要运用好自带影响力的社媒平台的传播力量和庞大数据,优化自身的宣传推广方案,做好市场调研、了解其他广告主尤其是竞争对手......
  • 图像信号处理板设计原理图:531-基于 PXIe 的ZU7EV的通用主控板
    基于3U的ZU7EV的通用主控板一、板卡简介   基于3U的ZU11EG/ZU7EG/ZU7EV的通用,实现FMC的数据接口和主控计算,广泛应用于工业控制,检测,视觉处理。支持工业级温度工作。二、主要功能1、板卡核心芯片使用ZU7EV/11EG-2FFVC1156I MPSOC处理器,PL端一路DDR464bit,PS端一路DDR......