排序模型:DIN、DINE、DSIN
目录
DIN
输入
输出:
与transformer注意力机制的区别与联系:
DINE
改善DIN
输入:
DSIN
动机:
DIN
适用与精排,论文: Deep Interest Network for Click-Through Rate Prediction
DIN模型提出的动机是利用target attention的方法,进行加权pooling,它为历史行为的物品和当前推荐物品计算一个attention score,然后加权pooling,这样的方法更能体现用户兴趣多样性。
DIN模型,增加了注意力机制,模型的创新点或者解决的问题就是使用了注意力机制来对用户的兴趣动态模拟, 而这个模拟过程存在的前提就是用户之前有大量的历史行为了,这样我们在预测某个商品广告用户是否点击的时候,就可以参考他之前购买过或者查看过的商品,这样就能猜测出用户的大致兴趣来,这样我们的推荐才能做的更加到位,所以这个模型的使用场景是非常注重用户的历史行为特征(历史购买过的商品或者类别信息)
输入
DIN模型的输入特征大致上分为了三类: Dense(连续型), Sparse(离散型), VarlenSparse(变长离散型),也就是指的上面的历史行为数据。而不同的类型特征也就决定了后面处理的方式会不同:
- Dense型特征:由于是数值型了,这里为每个这样的特征建立Input层接收这种输入, 然后拼接起来先放着,等离散的那边处理好之后,和离散的拼接起来进DNN
- Sparse型特征,为离散型特征建立Input层接收输入,然后需要先通过embedding层转成低维稠密向量,然后拼接起来放着,等变长离散那边处理好之后, 一块拼起来进DNN, 但是这里面要注意有个特征的embedding向量还得拿出来用,就是候选商品的embedding向量,这个还得和后面的计算相关性,对历史行为序列加权。
- VarlenSparse型特征:这个一般指的用户的历史行为特征,变长数据, 首先会进行padding操作成等长, 然后建立Input层接收输入,然后通过embedding层得到各自历史行为的embedding向量, 拿着这些向量与上面的候选商品embedding向量进入AttentionPoolingLayer去对这些历史行为特征加权合并,最后得到输出。

本身用户历史序列和候选序列(候选序列就是召回阶段召回的用户可能会点击的商品)之间没有关系,分别做embedding。
DIN就是通过对用户历史序列的每一个商品和候选商品做自注意力机制,这样候选商品中跟历史商品中相似度比较高的会引起模型的注意(相似度作为权重),排序是会注意这一部分与历史商品相似度高的商品。
把这个权重与原来的历史行为embedding相乘求和就得到了用户的兴趣表示, 这个东西的计算公式如下:


输出:
通过DNN网络的每个候选商品可能被点击的概率。
与transformer注意力机制的区别与联系:
区别:
在Transformer中使用的Attention是Scaled Dot-Product Attention, 是归一化的点乘Attention。是多头注意力,形成多个子空间,可以让模型去关注不同方面的信息。Q,K,V是一个东西,只是会乘以不同的权重矩阵

DIN不经过softmax ,没有归一化操作;Q是候选序列,K,V是历史序列。用 的单头注意力机制。
联系:都是运用注意力机制,通过相似度当权重,再将权重与和V矩阵实现求加权和。
DINE
改善DIN
以前的CTR预估方法都是直接将用户表现的表示向量当作兴趣,而没有通过具体的表现对隐藏的兴趣进行建模。 DIEN相比于之前的模型,即对用户的兴趣进行建模,又对建模出来的用户兴趣继续建模得到用户的兴趣变化过程。

图其实分解开就是:输入embedding,用户历史行为序列通过GRU(引入了一个损失,为了让行为序列中的每一个时刻都有一个target item进行监督训练,也就是使用下一个行为来监督兴趣状态的学习),通过注意力机制,再通过AUGRU,输出一个embedding,和另外的非行为相关特征进行concat。
DIEN模型的重点就是如何将用户的行为序列转换成与用户兴趣相关的向量,在DIN中是直接通过与target item计算序列中每个元素的注意力分数,然后加权求和得到最终的兴趣表示向量。在DIEN中使用了两层结构来建模用户兴趣相关的向量。
输入:
模型的输入可以分成两大部分,一部分是用户的行为序列(这部分会通过兴趣提取层及兴趣演化层转换成与用户当前兴趣相关的embedding),另一部分就是除了用户行为以外的其他所有特征,如Target id, Coontext Feature, UserProfile Feature,这些特征都转化成embedding的类型然后concat在一起(形成一个大的embedding)作为非行为相关的特征(这里可能也会存在一些非id类特征,应该可以直接进行concat)。最后DNN输入的部分由行为序列embedding和非行为特征embedding(多个特征concat到一起之后形成的一个大的向量)组成,将两者concat之后输入到DNN中。
详情可看[论文阅读]阿里DIEN深度兴趣进化网络之总体解读 (qq.com)
DSIN
[1905.06482] Deep Session Interest Network for Click-Through Rate Prediction (arxiv.org)
这个是在DIEN的基础上又进行的一次演化,这个模型的改进出发点依然是如何通过用户的历史点击行为,从里面更好的提取用户的兴趣以及兴趣的演化过程,这个模型就是从user历史行为信息挖掘方向上进行演化的。
动机:
作者发现用户的行为序列的组成单位,其实应该是会话(按照用户的点击时间划分开的一段行为),每个会话里面的点击行为呢? 会高度相似,而会话与会话之间的行为,就不是那么相似了,但是像DIN,DIEN这两个模型,DIN的话,是直接忽略了行为之间的序列关系,使得对用户的兴趣建模或者演化不是很充分,而DIEN的话改进了DIN的序列关系的忽略缺点,但是忽视了行为序列的本质组成结构。

1.Session Divsion Layer
将用户的行为序列进行切分,首先将用户的点击行为按照时间排序,判断两个行为之间的时间间隔。
2.多头注意力(会话兴趣提取层)
每一段的商品时间的序列关系都要经过多头注意力机制。这个东西是在多个角度研究一个会话里面各个商品的关联关系, 相比GRU来讲,没有啥梯度消失,并且可以并行计算,比GRU可强大多了。(研究每个会话内部各个商品之间的关联关系)
3.会话交互层
研究会话与会话之间的关系。学习用户兴趣的演化规律,这里用了双向的LSTM,不仅看从现在到未来的兴趣演化,还能学习未来到现在的变化规律。
4.会话兴趣局部激活层
注意力机制, 每次关注与当前商品更相关的兴趣。
参考:
DIN (datawhalechina.github.io)
(1条消息) AI上推荐 之 AFM与DIN模型(当推荐系统遇上了注意力机制)_din ffm_翻滚的小@强的博客-CSDN博客
论文解读:Attention is All you need - 知乎 (zhihu.com)
炼丹面试官的面试笔记_炼丹笔记的博客-CSDN博客
DIEN (datawhalechina.github.io)
[论文阅读]阿里DIEN深度兴趣进化网络之总体解读 (qq.com)
DSIN (datawhalechina.github.io)
如有理解不对,请告诉我,我们可以一起讨论~共同进步~
后续更新:
LGB
MMoE
相关文章:
排序模型:DIN、DINE、DSIN
目录 DIN 输入 输出: 与transformer注意力机制的区别与联系: DINE 改善DIN 输入: DSIN 动机: DIN 适用与精排,论文: Deep Interest Network for Click-Through Rate Prediction DIN模型提出的动…...
【C++】Clang-Format:代码自动格式化(看这一篇就够了)
文章目录Clang-format格式化C代码1.引言&安装1.1引言1.2 安装2. 配置字解释2.1 language 编程语言2.2 BaseOnStyle 基础风格2.3 AccessModifierOffset 访问性修饰符偏移2.4 AlignAfterOpenBracket 开括号后的对齐2.5 AlignArrayOfStructures 对齐结构体数组2.6 AlignConsec…...
Linux命令·more
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back&…...
为什么 SaaS 公司依靠知识库来做对客户服务?
信不信由你,客户服务是您在软件行业赚钱的核心。不仅仅是拥有出色的产品,不仅仅是拥有出色的营销,更重要的是让人们回到您家门口的客户服务。 这是因为从长远来看,留住现有客户比获得新客户更重要,而留住客户时间更长的…...
后端必备之VUE基础【黑马程序员】
黑马程序员4小时入门VUE传送门 1. 简介 Vue是一个操作JavaScript的框架,类似于jQuery,但比jQuery好用,是现在的主流 2. 测试例子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /&…...
现代HYUNDAI EDI需求分析
现代集团(HYUNDAI)是韩国一家以建筑、造船、汽车行业为主,兼营钢铁、机械、贸易、运输、水泥生产、冶金、金融、电子工业等几十个行业的综合性企业集团。本文主要介绍HYUNDAI 的EDI需求,带大家快速理清思路,明确EDI项目的推进流程。 通信标准…...
数据库基本功之SQL的基本函数
1. 单行函数与多行函数 1.1 单行函数 指单行数据输入,返回一个值的函数. 所以查询一个表时,对选择的每一行数据都返回一个结果.[oracleoracle-db-19c ~]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 7 07:59:44 2023 Version 19.3.0.0.0Copyri…...
配置主机名与ip的映射关系
本次进行简单的小实验 通过在windows上配置主机名与IP地址的映射关系,达到我们在xshell或其他远程连接设备上,不用IP地址登陆,只需要用主机名就能实现登陆的效果 配置 首先 需要查看自己虚拟机的IP地址,找到ens33或者ens160…...
Spring Cache简单介绍和使用
目录 一、简介 二、使用默认ConcurrentMapManager (一)创建数据库和表 (二)创建boot项目 (三)使用Api 1、EnableCaching 2、CachePut 3、cacheable 4、CacheEvict 三、使用redis作为cache 一、简…...
ECCV 2022|面向精确的主动相机定位算法
标题:ECCV 2022,山东大学、北大、腾讯AILab、斯坦福和三维家联合提出,面向精确的主动相机定位算法项目地址:https://github.com/qhFang/AccurateACL.文章:Towards Accurate Active Camera Localization(ECCV 2022&…...
web实现环形旋转、圆形、弧形、querySelectorAll、querySelector、clientWidth、sin、cos、PI
文章目录1、HTML部分2、css部分3、JavaScript部分4、微信小程序演示1、HTML部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&l…...
PyCharm+Python+Selenium自动化测试动态验证码识别
driver.find_element(byBy.ID,valueUSERID).send_keys("admin")driver.find_element(byBy.ID,valuePASSWORD_VIEW).send_keys("123456")#ocr识别原理:先根据验证码的class dl_yzm定位到验证码图片,然后将验证码截图保存,…...
git版本回退简单记录
简单记录git版本回退的命令,参考的是这篇文章1 首先查看以前存档的版本: git log1. 知道要回退的版本和现在的版本差了多少代 回退上一代版本(1个以前) git reset –hard HEAD^回退上上一代版本(2个以前࿰…...
QT入门Display Widgets之QLine、QLcdNumber、QTextBrowser
目录 一、QLine界面相关 1、布局介绍 2、界面基本属性 二、QLCDNumber的介绍 1、界面布局 2、定时器代码测试 三、QTextBrowser 此文为作者原创,创作不易,转载请标明出处! 一、QLine界面相关 1、布局介绍 先看下界面中创建个Q…...
Spring学习笔记
目录1 IOC容器1.1 概念1.2 IOC的底层原理1.3 Spring中IOC容器的两种实现方式(两个接口)1.3.1 BeanFactory接口1.3.2 ApplicationContext接口1.3.3 为什么开发中使用ApplicationContext接口1.3.4 ApplicationContext接口的两个实现类1.4 IOC操作之bean管理1.4.0 bean是什么&…...
数据的标准化处理
假设各个指标之间的水平相差很大,此时直接使用原始指标进行分析时,数值较大的指标,在评价模型中的绝对作用就会显得较为突出和重要,而数值较小的指标,其作用则可能就会显得微不足道。 因此,为了统一比较的标…...
性能优化|记一次线上OOM问题处理
概述最近线上监控发现 OOM 涨幅较大,因此去尝试定位和修复这个问题,在修复了一些内存泄漏和大对象占用问题后, OOM 依旧未达到正常标准,在这些新上报的 hprof 文件中,发现几乎所有 case 中都有个叫 FinalizerReference 的对象&…...
Vue动态粒子特效插件(背景线条吸附动画)
目录 效果图: 一、安装: 二、引入 main.js 文件: 三、使用: 四、属性说明: 效果图: 一、安装: npm install vue-particles --save 二、引入 main.js 文件: import VueParticles…...
【Java 类】002-类、属性、方法、代码块
【Java 类】002-类、属性、方法、代码块 文章目录【Java 类】002-类、属性、方法、代码块一、类1、类与对象2、类的作用3、创建与使用类类结构创建类调用类运行结果4、Java 类的执行过程5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等二、属性1、概述2、类型3…...
Ubuntu Linux 编译安装的基本步骤
文章目录1 基本步骤若报错: No such file or directory2 解压 tar.bz2文件参考:1 基本步骤 解压: tar -zxvf file.tar.gz 进入解压后的文件夹: cd file 源码编译安装 ./configure # ./configmakesudo make install 若报错&…...
ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置
ComfyUI与Stable Diffusion WebUI模型共享终极指南:如何通过extra_model_paths.yaml一键配置 在AI绘图领域,ComfyUI和Stable Diffusion WebUI(简称WebUI)各有优势。ComfyUI以其高度可定制的工作流著称,而WebUI则提供了…...
OpenClaw长期运行:Qwen3.5-9B自动化系统的维护与更新
OpenClaw长期运行:Qwen3.5-9B自动化系统的维护与更新 1. 为什么需要长期维护? 去年冬天,我部署了一个基于OpenClaw和Qwen3.5-9B的自动化系统来处理日常的文档整理工作。最初几周运行得很顺利,直到某个凌晨,系统突然停…...
3步搞定B站音频提取:BilibiliDown开源工具的终极指南
3步搞定B站音频提取:BilibiliDown开源工具的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi…...
SEO_2024年最新SEO趋势与核心优化方法介绍
<h1 id"seo2024seo">SEO:2024年最新SEO趋势与核心优化方法介绍</h1> <p>在互联网时代,搜索引擎优化(SEO)仍然是网站流量和品牌推广的关键。2024年,SEO领域有许多新的趋势和核心优化方法,帮…...
Ollama + DeepSeek + 芋道框架 + SearXNG 本地联网搜索完整教程
1. 环境准备与检查 在开始之前,请确保你的环境满足以下条件: 1.1 硬件要求 内存:建议至少8GB可用内存(运行7B模型需要约4-6GB) 硬盘:DeepSeek模型文件约4-5GB空间 CPU/GPU:如有NVIDIA GPU可加速推理(可选) 1.2 软件要求 操作系统:Windows 10/11、macOS、Linux均可 …...
如何通过3个步骤快速掌握BetaFlight黑匣子日志分析
如何通过3个步骤快速掌握BetaFlight黑匣子日志分析 【免费下载链接】blackbox-log-viewer Interactive log viewer for flight logs recorded with blackbox 项目地址: https://gitcode.com/gh_mirrors/bl/blackbox-log-viewer 你是否曾经在调试无人机飞行问题时感到束手…...
深度学习道路提取代码更换数据集后 PyCharm 闪退问题全面解决指南
深度学习道路提取代码更换数据集后 PyCharm 闪退问题全面解决指南 摘要 在基于深度学习的道路提取任务中,更换数据集后常出现 PyCharm 闪退现象。这类问题涉及环境配置、数据加载、内存管理、模型适配等多个层面,往往难以快速定位。本文从 Ubuntu 操作系统、PyCharm IDE、C…...
IOMMU性能调优全攻略:从基础原理到实战技巧
IOMMU性能调优全攻略:从基础原理到实战技巧 在数据中心和云计算环境中,IOMMU(输入输出内存管理单元)作为硬件辅助虚拟化的关键技术组件,其性能表现直接影响着整个系统的吞吐量和延迟。对于需要处理高并发I/O负载的场景…...
别再羡慕ECharts了!用PyQt+Matplotlib打造你的专属交互式图表工具(附完整代码)
用PyQtMatplotlib打造媲美ECharts的交互式数据可视化工具 在数据分析领域,Web端的ECharts以其丰富的交互功能广受好评,但当我们开发桌面应用或需要高性能处理大数据时,Python技术栈的开发者常常面临两难选择。Matplotlib虽然性能优异…...
Fira Code技术揭秘:编程字体连字引擎的深度优化与实战应用
Fira Code技术揭秘:编程字体连字引擎的深度优化与实战应用 【免费下载链接】FiraCode Free monospaced font with programming ligatures 项目地址: https://gitcode.com/GitHub_Trending/fi/FiraCode 在当今的代码编辑环境中,开发者每天需要处理…...
