排序模型:DIN、DINE、DSIN

news2024/9/21 0:27:01

目录

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

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

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

相关文章

蓝桥web基础知识学习

HTMLCSS 知识点重要指数HTML 基础标签🌟🌟🌟🌟🌟HTML5 新特性🌟🌟🌟🌟🌟HTML5 本地存储🌟🌟🌟🌟CSS 基础语法…

Java中方法引用(引用静态方法、引用成员方法(引用其他类的成员方法、引用本类的成员方法、引用父类的成员方法)、引用构造方法、其他调用方式、小练习)

方法引用:把已经存在的方法拿过来用,当作函数式接口中抽象方法的方法体 我们前面学到Arrays工具类中的sort方法,当我们需要指定排序规则时,需要传递Comparator接口的实现类对象,我们之前使用匿名内部类类的形式作为参…

下一个元宇宙热点?探讨元宇宙婚礼的未来趋势

欢迎来到Hubbleverse 🌍 关注我们 关注宇宙新鲜事 📌 预计阅读时长:7分钟 本文仅代表作者个人观点,不代表平台意见,不构成投资建议。 专家认为,在不久的将来,传统婚礼和元宇宙婚礼有可能共存…

taobao.item.barcode.update( 更新商品条形码信息 )

¥免费必须用户授权 通过该接口,将商品以及SKU上得条形码信息补全 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new Def…

【Spring】资源操作管理:Resource、ResourceLoader、ResourceLoaderAware;

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 资源操作:Spring Resources一、Res…

智能家居创意产品一Homkit智能通断器

智能通断器,也叫开关模块,可以非常方便地接入家中原有开关、插座、灯具、电器的线路中,通过手机App或者语音即可控制电路通断,轻松实现原有家居设备的智能化改造。 随着智能家居概念的普及,越来越多的人想将自己的家改…

Pytest自动化测试框架-权威教程06-使用Marks标记测试用例

使用Marks标记测试用例通过使用pytest.mark你可以轻松地在测试用例上设置元数据。例如, 一些常用的内置标记:skip - 始终跳过该测试用例skipif - 遇到特定情况跳过该测试用例xfail - 遇到特定情况,产生一个“期望失败”输出parametrize - 在同一个测试用例上运行多次…

自旋锁,读写锁以及他们的异同

自旋锁 自旋锁是一种用于多线程编程的同步机制。它是一种基于忙等待的锁,当线程尝试获取锁时,如果锁已被其他线程占用,则该线程会一直循环检查锁是否被释放,直到获取到锁为止。 在自旋锁的实现中,使用了CPU的硬件特性…

ArcGIS制图之阴影效果的表达与运用

一、运用制图表达进行投影表达 在专题图的制作过程中,经常需要将目标区域从底图中进行突显,运用制图表达制作图层投影可以较好地实现这一目的。具体步骤如下: 1.将目标图层存储于数据库中并加载至窗口(shapefile格式数据无法支持…

Android Looper简介

本文基于安卓11。 Looper是一个用具,在安卓程序中,UI线程是由事件驱动的(onCreate, onResume, onDestory),Looper就是处理这些事件的工具,事件被描述为消息(Message),Lo…

【PHP代码注入】PHP代码注入漏洞

漏洞原理RCE为两种漏洞的缩写,分别为Remote Command/Code Execute,远程命令/代码执行PHP代码注入也叫PHP代码执行(Code Execute)(Web方面),是指应用程序过滤不严,用户可以通过HTTP请求将代码注入到应用中执行。代码注入(代码执行)…

python甜橙歌曲音乐网站平台源码

wx供重浩:创享日记 对话框发送:python音乐 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目,启动成功后,访问“http://127.0.0.1:5000”进入甜橙音乐网首页,如图1所…

YOLOS调试记录

YOLOS是由华中科大提出的将Transformer迁移到计算机视觉领域的目标检测方法,其直接魔改ViT!本文首次证明,通过将一系列固定大小的非重叠图像块作为输入,可以以纯序列到序列的方式实现2D目标检测。 模型结构 下面来调试一下该项目…

【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

javaScript基础面试题 ---对象考点

1、对象是通过new操作符构建出来的,所以对象之间不相等 2、对象注意引用类型,如果是引用类型,就可能会相等 3、现在对象本身查找 -> 构造函数中找 -> 对象原型中找 -> 构造函数原型中找 -> 对象上一层原型… 1、对象是通过new操作…

被骗进一个很隐蔽的外包公司,入职一个月才发现,已经有了社保记录,简历污了,以后面试有影响吗?...

职场的套路防不胜防,一不留神就会掉坑,一位网友就被“骗”进了外包公司,他说公司非常隐蔽,入职一个月才发现是外包,但已经有了社保记录,简历污了,不知道对以后面试有影响吗?楼主说&a…

Mysql迁移Postgresql

目录原理环境准备操作系统(Centos7)Mysql客户端安装Psql客户端安装数据库用户导表脚本dbmysql2pgmysqlcopy测试在mysql中建表导表测试查看pg中的表原理 Mysql抽取:mysql命令重定向到操作系统文件,处理成csv文件; PG装载:copy方式…

【大数据源码】Hadoop源码解读 Namenode 启动加载FsImage的过程

Namenode 启动前言启动 Namenode 组件启动脚本Namenode.initializeFSNamesystem.loadFromDiskFsImage.recoverTransitionReadFSImageFormat.loadFSImageFormatProtobuf.load反序列化加载FsImage文件内容FsImage内存数据结构前言 NameNode是HDFS中负责元数据管理的组件&#xf…

PhpStudy下载安装使用教程,图文教程(超详细)

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 PhpStudy一、官网下载二、安装三、简单使用四、粉丝福利PhpStudy:让天下没有难…

bable和AST概述

这里写目录标题bable定义Babel概述Babel 中重要的对象VistorAST定义Javascript 语法的AST(抽象语法树)bable 定义 Babel 是我们知道的将 ES6、ES7等代码转译为 ES5 代码且能安全稳定运行最好的工具同时它允许开发者开发插件,能够在编译时期…