推荐算法学习笔记2.1:基于深度学习的推荐算法-基于共线矩阵的深度推荐算法-NeuralCF模型

news/2024/7/8 9:26:57 标签: 推荐算法, 学习, 笔记

NeuralCF模型

NeuralCF模型将矩阵分解和逻辑回归思想进行结合,利用神经网络分别学习用户和物品的隐向量表示(Embedding),然后将矩阵分解中的内积互操作替换成神经网络计算,从而更好地从特征中学习到有用的信息。

原论文(https://arxiv.org/pdf/1708.05031)中还提出使用不同隐向量表示和互操作可以提高模型的拟合能力,从而提高表现。混合模型如下图所示:

在这里插入图片描述

值得注意的是,该模型将推荐问题转化成CTR分类问题,所以使用了交叉熵损失函数作为模型的训练函数。

总结:

  • NeuralCF模型利用深度学习的拟合能力,更好地学习隐向量表示,并且通过定义多种互操作解决了原特征分解方法欠拟合的问题。但也带来了过拟合数据需求、训练复杂度等问题。
  • NeuralCF模型也没有使用用户和物品的属性特征,存在信息浪费的问题。

附录:
附1:交叉熵损失函数推导

对于一个M分类问题,考虑到随机变量 Y Y Y表示采样样本 x i \mathbf{x}_i xi属于某一类,如采样到 y i = [ 0 , 0 , … , 1 ( j t h ) , … , 0 ] \mathbf{y}_i=[0,0,\dots,1(jth),\dots,0] yi=[0,0,,1(jth),,0], 其中 y i [ j ] = 1 \mathbf{y}_i[j]=1 yi[j]=1表示样本 x i \mathbf{x}_i xi属于 j j j类别。假设事件:样本 x i \mathbf{x}_i xi属于任意类别服从泊松分布,则采样到 y i = [ 0 , 0 , … , 1 ( j t h ) , … , 0 ] \mathbf{y}_i=[0,0,\dots,1(jth),\dots,0] yi=[0,0,,1(jth),,0]的概率为:

p j ∏ k = 1 , 2 , … , M ; k ≠ j ( 1 − p k ) p_j\prod_{k=1,2,\dots,M;k\ne j}{(1-p_k)} pjk=1,2,,M;k=j(1pk)

对于所有的样本 x i \mathbf{x}_i xi,我们想通过神经网络估计样本 x i \mathbf{x}_i xi属于任意类别 j j j的概率 p i [ j ] \mathbf{p}_i[j] pi[j],即网络的输出为向量 p i = f ( x i ; θ ) \mathbf{p}_i=f(\mathbf{x}_i;\boldsymbol{\theta}) pi=f(xi;θ), 从而最大化采样到标签 y i \mathbf{y}_i yi的概率,即

max ⁡ θ ∑ i = 1 , … , N ∏ k = 1 , 2 , … , M ( 1 − p i [ k ] ) 1 − y i [ k ] p i [ k ] y i [ k ] \max_{\boldsymbol{\theta}}\sum_{i=1,\dots,N}\prod_{k=1,2,\dots,M}{(1-\mathbf{p}_i[k])^{1-\mathbf{y}_i[k]}\mathbf{p}_i[k]^{\mathbf{y}_i[k]}} θmaxi=1,,Nk=1,2,,M(1pi[k])1yi[k]pi[k]yi[k]

通过负对数操作,将该目标函数转为最小化目标并避开乘项,

min ⁡ θ − ∑ i = 1 , … , N ∑ k = 1 , 2 , … , M ( 1 − y i [ k ] ) l o g ( 1 − p i [ k ] ) + y i [ k ] l o g ( p i [ k ] ) \min_{\boldsymbol{\theta}}\quad-\sum_{i=1,\dots,N}\sum_{k=1,2,\dots,M}{(1-\mathbf{y}_i[k])log{(1-\mathbf{p}_i[k])}+\mathbf{y}_i[k]log(\mathbf{p}_i[k])} θmini=1,,Nk=1,2,,M(1yi[k])log(1pi[k])+yi[k]log(pi[k])

上面公式中,认为 x i \mathbf{x}_i xi属于各个类别的事件是独立,这不太符合多分类的含义,于是我们进一步引入softmax函数,从而让其他类别应该是某一类别的负类,

s o f t m a x ( p ) = [ e x p ( p [ 0 ] ) ∑ j = 1 , … , M e x p ( p [ j ] ) , … , e x p ( p [ M ] ) ∑ j = 1 , … , M e x p ( p [ j ] ) ] softmax(\mathbf{p})=[\frac{exp(\mathbf{p}[0])}{\sum_{j=1,\dots,M}exp(\mathbf{p}[j])},\dots,\frac{exp(\mathbf{p}[M])}{\sum_{j=1,\dots,M}exp(\mathbf{p}[j])}] softmax(p)=[j=1,,Mexp(p[j])exp(p[0]),,j=1,,Mexp(p[j])exp(p[M])]

此时,我们可以将损失函数改为仅考虑样本为某一类别的正类(不考虑其为负类)的概率,对于某一样本 x i \mathbf{x}_i xi,其交叉熵损失函数如下所示,

min ⁡ θ − ∑ k = 1 , 2 , … , M y i [ k ] l o g ( s o f t m a x ( p i [ k ] ) ) \min_{\boldsymbol{\theta}}\quad-\sum_{k=1,2,\dots,M}{\mathbf{y}_i[k]log(softmax(\mathbf{p}_i[k]))} θmink=1,2,,Myi[k]log(softmax(pi[k]))

当标签 y i = [ 0 , 0 , … , 1 ( j t h ) , … , 0 ] \mathbf{y}_i=[0,0,\dots,1(jth),\dots,0] yi=[0,0,,1(jth),,0]时,该损失函数对参数 θ \boldsymbol{\theta} θ的梯度为,

− ∂ l o g ∂ s o f t m a x ( p i [ k ] ) ∂ s o f t m a x ∂ p i [ k ] ∂ p i [ k ] ∂ θ = − 1 s o f t m a x ( p i [ k ] ) ∂ s o f t m a x ∂ p i [ k ] ∂ p i [ k ] ∂ θ -\frac{\partial log}{\partial softmax(\mathbf{p}_i[k])}\frac{\partial softmax}{\partial \mathbf{p}_i[k]}\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta} \\=-\frac{1}{softmax(\mathbf{p}_i[k])}\frac{\partial softmax}{\partial \mathbf{p}_i[k]}\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta}\\ softmax(pi[k])logpi[k]softmaxθpi[k]=softmax(pi[k])1pi[k]softmaxθpi[k]

j = k j=k j=k时,

− 1 s o f t m a x ( p i [ k ] ) ∂ s o f t m a x ∂ p i [ k ] ∂ p i [ k ] ∂ θ = − 1 s o f t m a x ( p i [ k ] ) ( s o f t m a x ( p i [ k ] ) − s o f t m a x ( p i [ k ] ) 2 ) ∂ p i [ k ] ∂ θ = ( s o f t m a x ( p i [ k ] ) − 1 ) ∂ p i [ k ] ∂ θ -\frac{1}{softmax(\mathbf{p}_i[k])}\frac{\partial softmax}{\partial \mathbf{p}_i[k]}\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta}\\=-\frac{1}{softmax(\mathbf{p}_i[k])}(softmax(\mathbf{p}_i[k])-softmax(\mathbf{p}_i[k])^2)\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta}\\=(softmax(\mathbf{p}_i[k])-1)\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta} softmax(pi[k])1pi[k]softmaxθpi[k]=softmax(pi[k])1(softmax(pi[k])softmax(pi[k])2)θpi[k]=(softmax(pi[k])1)θpi[k]

否则,

− 1 s o f t m a x ( p i [ k ] ) ∂ s o f t m a x ∂ p i [ k ] ∂ p i [ k ] ∂ θ = − 1 s o f t m a x ( p i [ k ] ) ( − s o f t m a x ( p i [ k ] ) 2 ) ∂ p i [ k ] ∂ θ = s o f t m a x ( p i [ k ] ) ∂ p i [ k ] ∂ θ -\frac{1}{softmax(\mathbf{p}_i[k])}\frac{\partial softmax}{\partial \mathbf{p}_i[k]}\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta}\\=-\frac{1}{softmax(\mathbf{p}_i[k])}(-softmax(\mathbf{p}_i[k])^2)\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta}\\=softmax(\mathbf{p}_i[k])\frac{\partial \mathbf{p}_i[k]}{\partial \boldsymbol \theta} softmax(pi[k])1pi[k]softmaxθpi[k]=softmax(pi[k])1(softmax(pi[k])2)θpi[k]=softmax(pi[k])θpi[k]


http://www.niftyadmin.cn/n/5536959.html

相关文章

element el-table表格切换分页保留分页数据+限制多选数量

el-table表格并没有相关的方法来禁用表头里面的多选按钮 那么我们可以另辟蹊径&#xff0c;来实现相同的多选切换分页&#xff08;保留分页数据&#xff09; 限制多选数量的效果 <el-table:data"tableData"style"width: 100%">// 不使用el-talbe自带…

Linux arm板

NXP_IMX8MINI调试笔记 ARM板挂载PC端的文件夹 ARM板挂载PC端的文件夹 NFS网络挂载文件夹&#xff0c;用于文件传输 #192.168.1.11为PC端的IP地址 mount -t nfs -o nolock,nfsvers3 192.168.1.11:/home/yl/nfs nfs/静态IP永久设置 #在/etc/rc.local文件中添加 ifconfig eth0 …

JavaScript(6)——数据类型转换

为什么需要类型转换&#xff1f; JavaScript是弱数据类型&#xff1a;JavaScript不知道变量到底属于哪种数据类型&#xff0c;只有赋值了才清除 使用表单&#xff0c;prompt获取的数据默认为字符串类型&#xff0c;此时不能直接进行算数运算 隐式转换 某些运算符被执行时&am…

富格林:阻止欺诈落实盈利出金

富格林认为&#xff0c;现货黄金作为一种国际性的投资产品&#xff0c;价格在各种因素的综合影响下不断地波动变化&#xff0c;为投资者带来了获利出金机会的同时也伴随着一定的欺诈风险&#xff0c;想要落实盈利出金计划&#xff0c;还需要掌握正确的投资技巧。以下是富格林总…

Lesson 48 Do you like ... ? Do you want ... ?

Lesson 48 Do you like … ? Do you want … ? 词汇 fresh a. 新鲜的【食物】 搭配&#xff1a;fresh water 淡水    fresh man 新生    fresh air 新鲜空气    fresh egg 新鲜鸡蛋 例句&#xff1a;我们喜欢新鲜的空气。    We like fresh egg. egg n. 蛋【通…

C#面:ASP.NET Core ⽐ ASP.NET 更具优势的地⽅是什么?

ASP.NET Core相对于 ASP.NET 具有以下几个优势&#xff1a; 跨平台支持&#xff1a;ASP.NET Core是跨平台的&#xff0c;可以在Windows、Linux和macOS等多个操作系统上运行。这使得开发人员可以选择更适合他们的操作系统来进行开发和部署。更轻量级&#xff1a;ASP.NET Core是…

记一次 .NET某网络边缘计算系统 卡死分析

一&#xff1a;背景 1. 讲故事 早就听说过有什么 网络边缘计算&#xff0c;这次还真给遇到了&#xff0c;有点意思&#xff0c;问了下 chatgpt 这是干嘛的 ? 网络边缘计算是一种计算模型&#xff0c;它将计算能力和数据存储位置从传统的集中式数据中心向网络边缘的用户设备、…

Qt涂鸦板

Qt版本&#xff1a;Qt6 具体代码&#xff1a; 头文件 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog>QT_BEGIN_NAMESPACE namespace Ui { class Dialog; } QT_END_NAMESPACEclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent n…