深度学习推荐系统——深度学习时代

2023-05-16

深度学习推荐系统——深度学习时代

  • AutoRec
  • Deep Crossing
  • NeuralCF
  • PNN
  • Wide&Deep
  • FM与深度学习模型结合
    • FNN
    • DeepFM
    • NFM
  • 注意力机制
    • AFM
    • DIN
  • DIEN
  • 总结

AutoRec

h ( r ; θ ) = f ( W ⋅ g ( V r + μ ) + b ) h ( \boldsymbol { r } ; \theta ) = f ( \boldsymbol { W } \cdot g ( \boldsymbol { V } \boldsymbol { r } + \mu ) + b ) h(r;θ)=f(Wg(Vr+μ)+b)
损失函数:
min ⁡ θ ∑ i = 1 n ∥ r ( i ) − h ( r ( i ) ; θ ) ∥ O 2 + λ 2 ⋅ ( ∥ W ∥ F 2 + ∥ V ∥ F 2 ) \min _ { \theta } \sum _ { i = 1 } ^ { n } \left\| \boldsymbol { r } ^ { ( i ) } - h \left( \boldsymbol { r } ^ { ( i ) } ; \theta \right) \right\| _ { O } ^ { 2 } + \frac { \lambda } { 2 } \cdot \left( \| \boldsymbol { W } \| _ { F } ^ { 2 } + \| \boldsymbol { V } \| _ { F } ^ { 2 } \right) θmini=1nr(i)h(r(i);θ)O2+2λ(WF2+VF2)
其中 r \boldsymbol {r} r表示m个用户对它的评分,即共现矩阵中的列向量。
经过自编码器生成的输出向量,不会完全等同于输入向量,也因此具备了一定的缺失维度的预测能力。
以上是I-AutoRec,如果换做用户的评分向量,则得到U-AutoRec。优势在于输入一次就得到目标用户对所有物品的预测评分,劣势在于用户向量的稀疏性会影响模型的结果。

优点:具备一定泛化能力和表达能力
缺点:表达能力不足

Deep Crossing

主要包括4层:Embedding层,Stacking层,Multiple Residual Units层和Scoring层

  • Embedding层:Embedding层的作用是将稀疏的类别型特征转换成稠密的Embedding向量。一般来说Embedding向量的维度应远小于原始的稀疏特征向量。
  • Stacking层:拼接Embedding特征。
  • Multiple Residual Units层:主要结构是多层感知机,采用了多层残差网络(Multi-Layer Residual Network)
  • Scoring层:对于CTR预估这类二分类问题,可用逻辑回归模型。对于多分类,可采用softmax模型。

优点:深度特征交叉

NeuralCF

“多层神经网络+输出层”替代“矩阵分解中的内积”
在这里插入图片描述

优点
1、让用户向量和物品向量进行充分的交叉
2、引入更多的非线性特征

PNN

PNN和Deep Crossing模型的区别在于用Product层替代了Stacking层。分为内积操作和外积操作,但外积操作用于形成矩阵,因此可以考虑池化层来减少训练负担。

PNN在于强调特征向量之间的交叉方式是多样化的。

Wide&Deep

由单层的Wide部分和多层的Deep部分组成的混合模型。其中,Wide作用是让模型具有较强的“记忆能力”;Deep作用是让模型具有“泛化能力”。

记忆能力”可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。
泛化能力”可以被理解为模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。

在这里插入图片描述
Deeo部分的输入是全量的特征向量。Wide部分的输入仅仅是已安装应用和曝光应用两类特征。可以用Cross替代Wide,改进为Deep&Cross,增加特征间的交互。

优点
能够融合传统模型记忆能力和深度学习模型泛化能力的优势
模型的结构不复杂,容易部署上线

FM与深度学习模型结合

FNN

由于Embedding层的输入极端稀疏化,参数量很大,导致Embedding层的收敛速度很慢,因此用FM的隐向量完成Embedding层初始化。FM数学形式:
y F M ( x ) : = sigmoid ⁡ ( w 0 + ∑ i = 1 N w i x i + ∑ i = 1 N ∑ j = i + 1 N ⟨ v i , v j ⟩ x i x j ) \boldsymbol { y } _ { \mathrm { FM } } ( x ) : = \operatorname { sigmoid } \left( w _ { 0 } + \sum _ { i = 1 } ^ { N } w _ { i } x _ { i } + \sum _ { i = 1 } ^ { N } \sum _ { j = i + 1 } ^ { N } \left\langle \boldsymbol { v } _ { i } , \boldsymbol { v } _ { j } \right\rangle x _ { i } x _ { j } \right) yFM(x):=sigmoid(w0+i=1Nwixi+i=1Nj=i+1Nvi,vjxixj)

DeepFM

DeepFM对Wide&Deep模型的改进之处在于,它用FM替代了原来的Wide部分,加强了浅层网络部分特征组合的能力。

NFM

NFM模型的主要思路是用一个表达能力更强的函数替代原FM中二阶隐向量内积部门。
在这里插入图片描述

注意力机制

AFM

注意力网络的作用是为每一个交叉特征提供权重,也就是注意力得分。
f A t t ( f P I ( ε ) ) = ∑ ( i , j ) ∈ R x a i j ( v i ⊙ v j ) x i x j a i j = ′ h T ReLU ⁡ ( W ( v i ⊙ v j ) x i x j + b ) a i j = exp ⁡ ( a i j ′ ) ∑ ( i , j ) ∈ R x exp ⁡ ( a i j ′ ) f _ { \mathrm { Att } } \left( f _ { \mathrm { PI } } ( \varepsilon ) \right) = \sum _ { ( i , j ) \in \mathcal { R } _ { x } } a _ { i j } \left( v _ { i } \odot v _ { j } \right) x _ { i } x _ { j } \\ \begin{array} { c } a _ { i j = } ^ { \prime } \boldsymbol { h } ^ { \mathrm { T } } \operatorname { ReLU } \left( \boldsymbol { W } \left( \boldsymbol { v } _ { i } \odot v _ { j } \right) x _ { i } x _ { j } + \boldsymbol { b } \right) \\ a _ { i j } = \frac { \exp \left( a _ { i j } ^ { \prime } \right) } { \sum _ { ( i , j ) \in \mathcal { R } _ { x } } \exp \left( a _ { i j } ^ { \prime } \right) } \end{array} fAtt(fPI(ε))=(i,j)Rxaij(vivj)xixjaij=hTReLU(W(vivj)xixj+b)aij=(i,j)Rxexp(aij)exp(aij)

DIN

在计算一个用户是否点击一个广告 a 时,模型的输人特征自然分为两大部分:一部分是用户的特征组,另一部分是候选广告 a 的特征组。利用候选商品和历史行为商品之间的相关性计算出一个权重,这个权重就代表了注意力的强弱。表示如下:
V u = f ( V a ) = ∑ i = 1 N w i ⋅ V i = ∑ i = 1 N g ( V i , V a ) ⋅ V i \boldsymbol { V } _ { \mathrm { u } } = f \left( \boldsymbol { V } _ { \mathrm { a } } \right) = \sum _ { i = 1 } ^ { N } w _ { i } \cdot \boldsymbol { V } _ { i } = \sum _ { i = 1 } ^ { N } g \left( \boldsymbol { V } _ { i } , \boldsymbol { V } _ { \mathrm { a } } \right) \cdot \boldsymbol { V } _ { \boldsymbol { i } } Vu=f(Va)=i=1NwiVi=i=1Ng(Vi,Va)Vi
其中, V u V_u Vu是用户的 Embedding 向量, V a V_a Va是候选广告商品的 Embedding 向量, V I V_I VI是用户 u u u的第 i i i次行为的 Embedding 向量。这里用户的行为就是浏览商品或店铺,因此行为的 Embedding 向量就是那次浏览的商品或店铺的 Embedding 向量。

因为加入了注意力机制,所以 V u V_u Vu从过去 V i V_i Vi的加和变成了 V i V_i Vi的加权和, V i V_i Vi的权重 w i w_i wi就由 V i V_i Vi V a V_a Va的关系决定,也就是中的 g ( V i , V a ) g(V_i,V_a) g(Vi,Va)即“注意力得分”。

那么, g ( V i , V a ) g(V_i,V_a) g(Vi,Va)函数到底采用什么形式比较好呢?答案是使用一个注意力激活单元来生成注意力得分。这个注意力激活单元本质上也是一个小的神经网络。

DIEN

(1)它加强了最近行为对下次行为预测的印象。
(2)序列模型能够学习到购买趋势的信息。
兴趣进化网络分为三层,从下至上依次是:
(1)行为序列层:其主要作用是把原始的id类行为序列转换成Embedding行为序列。
(2)兴趣抽取层:其主要作用是通过模拟用户兴趣迁移过程,抽取用户兴趣。
(3)兴趣进化层:其主要作用是通过在兴趣抽取层基础上加入注意力机制,模拟与当前目标广告相关的兴趣进化过程。

总结

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习推荐系统——深度学习时代 的相关文章

  • ros 播放激光雷达数据包,rviz可视化

    通过bag文件记录话题消息 当发布话题的节点运行后 xff0c 可以通过rostopic list 列出当前 运行的话题 xff0c 然后记录 xff1a mkdir bagfile cd bagfile rosbag record a 记
  • TIM2_CH1_ETR可以当做TIM2_CH1来用

    TIM2 CH1 ETR可以当做TIM2 CH1来用 在stm32中文参考手册8 3 7定时器复用功能重映射小节可以看到这样的描述
  • hal库LTDC的层数判断应为<而不是<=

    LTDC的层数判断为 IS LTDC LAYER LAYER LAYER lt 61 MAX LAYER 假设MAX LAYER 61 2 xff0c 则LAYER等于2时也满足条件判断 但在配置寄存器时 xff0c 寄存器的地址依靠 la
  • 【无标题】

    hal库 SD卡总线宽度设置8不支持 xff0c 但还是保留了设置总线宽度为8的宏定义 HAL SD ErrorTypedef span class token function HAL SD WideBusOperation Config
  • 【无标题】

    发现一个问题 使用HAL库中的这个类型定义变量 xff0c 但不使用的话居然不会报警告 就是它 xff1a DMA HandleTypeDef
  • 【无标题】

    勘误 xff1a stm32F4xx参考手册中 34 11小节FIFO框架图中 最上面的DIEPTXF2 31 16 应为DIEPTXFn 31 16
  • HttpURLConnection高阶使用之kerberos认证解决方案

    1 HttpURLConnection 简介 sun net www protocol http HttpURLConnection是jdk中默认执行请求时使用 此HttpURLConnection 支持多种权限认证方案 xff0c Neg
  • 下篇 | 开发板AMR接收虚拟机Ubuntu传来的文件

    上篇笔记 xff1a 虚拟机Ubuntu向开发板AMR传送文件 已经做好了虚拟机向开发板传送文件的笔记啦 xff0c 然后有发送肯定有接收的 xff0c 不然就发空气啦 xff01 接下来 xff0c 写开发板如何接受虚拟机发送过来的文件的
  • 解决QT->setText()中文出现乱码问题,使用QString或者tr()均出现乱码。

    微软VC编译器源代码使用GB2312编码进行保存 源码中的汉字字符串在生成可执行文件的过程中被转换成了本地编码 Qt内部是使用Unicode编码 xff0c 即QString保存的是Unicode编码的字符串 Qt内部需要使用Unicode
  • Qt 下载图片并显示图片

    源码下载 xff1a 图片下载器 include 34 mainwindow h 34 include 34 ui mainwindow h 34 include lt QHostAddress gt include lt QDebug g
  • 海康威视 web3.0开发 常见错误 404,403

    海康威视 web3 0开发 常见错误 404 xff0c 403 配置情况 IE 浏览器 43 nginx 43 thinkPHP5 0 43 海康威视200万星光级红外球机1080P变焦云台球机DS 2DC4223IW D 关于如何使用网
  • 虚拟USB设备总结

    开发环境 xff1a windows 首先来总结最近研究的虚拟USB设备 xff0c 进而虚拟USB键盘成功了 xff0c 开心 xff01 得出了一个C S框架 xff0c 首先说一下客户端 客户端有两个部分 xff0c 用户空间工具和底

随机推荐

  • C#Winform:《DataGridViewComboBoxCell值无效》解决方案

    值无效 xff0c 可能是你下拉框选项 xff0c 没有这样的值 xff0c 而你却设置这个值 dataGridView1 Rows i Cells 1 Value 61 Hello World 解决方法就是在窗体的构造函数里添加如下代码
  • FFmpeg笔记

    1 下载 xff0c 配置 FFmpeg官网 xff1a https ffmpeg org 用的系统是Ubuntu18 04 所以直接apt get就可以了 sudo apt get install ffmpeg 2 简介 xff0c 上手
  • 《WPF中TextBox绑定Double类型数据,文本框不能输入小数点》解决方案

    在App cs文件里面 xff0c 重写OnStatup xff0c 添加下面一条语句即可 span class token keyword public span span class token keyword partial span
  • stm32 HAL库串口收发-中断接收DMA发送不定长数据

    使用的时候发现 xff1a 接收完一个字节立即用DMA的方式发送出去 xff0c 会出现数据的丢失 xff0c 如用串口调试助手发送1234 xff0c 返回的只有13 目前只能用缓存buf 43 协议结束 xff08 如0x0d 0x0a
  • headers Authorization

    var auth 61 96 host user host pass 96 const buf 61 Buffer from auth 39 ascii 39 strauth 61 buf toString 39 base64 39 con
  • 平衡车入门---MPU6050陀螺仪的使用

    平衡车入门 MPU6050陀螺仪的使用 一 MPU6050简介二 学习MPU6050的步骤三 I2C协议简介四 MPU6050硬件介绍五 MPU6050的几个重要寄存器六 原始数据的单位换算七 角度换算 滤波算法 一 MPU6050简介 M
  • C++ 为什么基类的析构函数要声明为虚函数

    1 为什么声明基类析构函数为虚函数 xff1f xff08 1 xff09 基类指针 指向 基类对象 xff1a 不用考虑基类析构函数是否声明为虚函数 xff08 2 xff09 基类指针 指向 派生类对象 xff1a 若基类析构函数不为虚
  • std::map find和count效率测试

    1 简介 在使用标准模板库中的map容器且遇到键值对的值为自定义struct或class类型时 xff0c 考虑到特殊场景 xff08 即不能确保key自始至终唯一 xff09 xff0c 若插入新元素 xff08 new 对象 xff09
  • 随机生成8位长字符串(大小写字母及数字组合)

    1 简要说明 项目上开发要用到随机生成一个8位长的字符串 xff08 类似Java工具类中的UUID xff09 xff0c 作为id来对同一事物的不同个体进行唯一标识 xff0c 如同一个班级里学生名字几乎不同 xff0c 偶尔会有重复
  • C++引用和指针区别

    1 C 43 43 引用和指针区别 xff1a 指针是一个新的变量 xff0c 指向另一个变量的地址 xff0c 我们可以通过访问这个地址来修改另一个变量 xff1b 而引用是一个别名 xff0c 对引用的操作就是对变量的本身进行操作指针可
  • TCP/UDP端口号

    大家好呀 xff0c 我是请假君 xff0c 今天又来和大家一起学习数通了 xff0c 今天要分享的知识是TCP UDP端口号 在IP网络中 xff0c 一个IP地址可以唯一地标识一个主机 但一个主机上却可能同时有多个程序访问网络 要标识这
  • C/C++ 电脑微信dat文件解密及工具分享

    1 前言 最近想整理下照片 xff08 回忆 怀旧 xff09 xff0c 以前也知道在微信pc端聊天时 xff0c 图片 视频 文档等文件会缓存在一个目录下 xff08 电脑微信 左下角三条杠 设置 文件管理 xff09 xff0c 点击
  • ODBC::SQLExecDirect返回-1 错误信息ORA-00604 ORA-01000

    在通过使用微软提供的ODBC SDK读取数据库 xff08 SELECT xff09 时 xff0c 发现Oracle读着读着就读不到数据了 xff08 MySQL和SQL Server是正常的 xff09 xff0c 经调试发现SQLEx
  • std::vector与deque首尾增删及遍历(应用于CListCtrl虚拟列表)混合性能测试

    1 简介 在工作项目中应用MFC类库的CListCtrl刷新加载数据 xff0c 一开始是用InsertItem SetItemText 和DeleteItem 等成员函数来实现数据在列表视图控件中的新增和删除 xff08 最多显示500条
  • Matlab 实用代码集

    本博客将存放一些常用的Matlab代码片段 xff0c 整理成博客 xff0c 并持续更新 xff0c 以便写代码可以调用 1 函数多输入多输出 Matlab写函数的时候 xff0c 输入输出个数经常是不固定的 xff0c narginch
  • 基于c++的A-star算法

    资料 xff1a https www cnblogs com guxuanqing p 9610780 html 一 基础原理 1 从起点开始 xff0c 向周围八个方向扩展 测试新扩展的点的路径代价 xff0c 路径代价由已走的路径和距离
  • 倍增算法

    倍增算法 给定一个整数 M xff0c 对于任意一个整数集合 S xff0c 定义 校验值 如下 从集合 S 中取出 M 对数 即 2 M 个数 xff0c 不能重复使用集合中的数 xff0c 如果 S 中的整数不够 M 对 xff0c 则
  • Numpy学习——数组类型

    Numpy学习 数组类型 更多的数据类型转换 casting 不同数据类型的大小 结构体类型处理丢失的数据 更多的数据类型 转换 casting numpy会自动转换高精度数据类型 xff1a span class token operat
  • 深度学习推荐系统——前深度学习时代

    深度学习推荐系统 前深度学习时代 协同过滤相似度UserCFItemCF矩阵分解矩阵分解的求解过程消除用户和物品打分的偏差矩阵分解的优缺点 逻辑回归特征工程POLY2模型FM模型FFM模型 GDBT 43 LRLS PLM xff08 La
  • 深度学习推荐系统——深度学习时代

    深度学习推荐系统 深度学习时代 AutoRecDeep CrossingNeuralCFPNNWide amp DeepFM与深度学习模型结合FNNDeepFMNFM 注意力机制AFMDIN DIEN总结 AutoRec h r