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

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.mfbz.cn/a/763397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【划分型动态规划 马拉车 中心扩展】2472. 不重叠回文子字符串的最大数目

如果有不明白的,请加文末QQ群。 本文涉及知识点 划分型动态规划 马拉车 中心扩展 LeetCode2472. 不重叠回文子字符串的最大数目 给你一个字符串 s 和一个 正 整数 k 。 从字符串 s 中选出一组满足下述条件且 不重叠 的子字符串: 每个子字符串的长度 …

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测 目录 SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【SCI一区级】Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测(程…

Golang | Leetcode Golang题解之第210题课程表II

题目: 题解: func findOrder(numCourses int, prerequisites [][]int) []int {var (edges make([][]int, numCourses)indeg make([]int, numCourses)result []int)for _, info : range prerequisites {edges[info[1]] append(edges[info[1]], info[0…

Tech Talk:智能电视eMMC存储的五问五答

智能电视作为搭载操作系统的综合影音载体,以稳步扩大的市场规模走入越来越多的家庭,成为人们生活娱乐的重要组成部分。存储部件是智能电视不可或缺的组成部分,用于保存操作系统、应用程序、多媒体文件和用户数据等信息。智能电视使用eMMC作为…

STM32自己从零开始实操08:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感:通低频阻高频的。仿真中高频信号通过电感,因为电感会阻止电流发生变化,故说阻止高频信号 电容:隔直通交。…

光荚含羞草基因组-文献精读26

Haplotype-resolved genome of Mimosa bimucronata revealed insights into leaf movement and nitrogen fixation 光荚含羞草单倍型解析基因组揭示了叶片运动和固氮的相关机制 摘要 背景 光荚含羞草起源于热带美洲,具有独特的叶片运动特征,其运动速度…

【netty系列-04】反应堆模式的种类和具体实现

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

沙箱在“一机两用”新规下的价值体现

在数字化时代,随着企业信息化建设的深入,数据安全问题愈发凸显其重要性。一机两用新规的出台,旨在通过技术创新和管理手段,实现终端设备的安全可控,确保敏感数据的安全存储与传输。SDC沙箱技术作为一种创新的安全防护手…

NLP篇1

场景:假设给你一篇文章。 目标:说白了,就是数学的分类。但是如何实现分类呢。下面将逐步一 一 分析与拆解。先把目标定好了和整体框架定好了。而不是只见树木而不见森林。 情感分类(好评、差评,中性) 整体…

基于“香港世界”的SLAM技术介绍

在视觉感知技术中,理解和描述复杂的三维室外场景至关重要,尤其是自动驾驶技术的发展要求对陌生环境具有更强的适应能力和鲁棒性。传统上,使用“曼哈顿世界”和“亚特兰大世界”模型来描述具有垂直和水平结构的城市场景。 当遇到像香港这样地形…

burpsuite 设置监听窗口 火狐利用插件快速切换代理状态

一、修改burpsuite监听端口 1、首先打开burpsuite,点击Proxy下的Options选项: 2、可以看到默认的监听端口为8080,首先选中我们想要修改的监听,点击Edit进行编辑 3、将端口改为9876,并保存 4、可以看到监听端口修改成功…

云卓SKYDROID-H30——科技改变未来

云卓H30采用高通处理器、搭载安卓嵌入式系统,拥有三个工作频率,让图像更清晰、延迟更低、距离远、抗干扰性强,支持多种接口,更有10.1寸高清工业级阳光可视屏,防尘耐磨,结构强度高,适用于各种严苛…

前端利用vue如何实现导入和导出功能.md

1. 前端利用vue如何实现导入和到处功能 1.1. 导入功能&#xff08;以导入Excel文件为例&#xff09; 1.1.1. 实现步骤: 1.1.1.1. 安装依赖: 首先&#xff0c;你需要安装处理Excel文件的库&#xff0c;如xlsx。1.1.1.2. 创建上传组件: 使用Element UI的<el-upload>组件或其…

windows USB 驱动开发-URB结构

通用串行总线 (USB) 客户端驱动程序无法直接与其设备通信。 相反&#xff0c;客户端驱动程序会创建请求并将其提交到 USB 驱动程序堆栈进行处理。 在每个请求中&#xff0c;客户端驱动程序提供一个可变长度的数据结构&#xff0c;称为 USB 请求块 (URB) &#xff0c;URB 结构描…

zdppy_api+vue3+antd开发前后端分离的tab卡片

后端代码 import api import uploadsave_dir "uploads"async def rand_content(request):key api.req.get_query(request, "key")return api.resp.success(f"{key} " * 100)app api.Api(routes[api.resp.get("/", rand_content),u…

2024科技文化节程序设计竞赛

补题链接 https://www.luogu.com.cn/contest/178895#problems A. 签到题 忽略掉大小为1的环&#xff0c;答案是剩下环的大小和减环的数量 #include<bits/stdc.h> #include<iostream> #include<cstdio> #include<vector> #include<map> #incl…

Victor CMS v1.0 SQL 注入漏洞(CVE-2022-28060)

前言 CVE-2022-28060 是 Victor CMS v1.0 中的一个SQL注入漏洞。该漏洞存在于 /includes/login.php 文件中的 user_name 参数。攻击者可以通过发送特制的 SQL 语句&#xff0c;利用这个漏洞执行未授权的数据库操作&#xff0c;从而访问或修改数据库中的敏感信息。 漏洞详细信…

mac安装达梦数据库

参考&#xff1a;mac安装达梦数据库​​​​​​ 实践如下&#xff1a; 1、下载达梦Docker镜像文件 同参考链接 2、导入镜像 镜像可以随便放在某个目录&#xff0c;相当于安装包&#xff0c;导入后就没有作用了。 查找达梦镜像名称&#xff1a;dm8_20240613_rev229704_x86…

第11章 规划过程组(11.6规划进度管理)

第11章 规划过程组&#xff08;二&#xff09;11.6规划进度管理&#xff0c;在第三版教材第385页&#xff1b;#软考中级##中级系统集成项目管理师# 文字图片音频方式 第一个知识点&#xff1a;主要输出 1、进度管理计划 准确度 定义活动持续时间估算的可接受区间&#xff0…

Pycharm常用快捷键整理

1&#xff0c;格式化代码 【ctrlAltL】 写代码的时候会发现有很多黄色的波浪号&#xff0c;这个时候可以点击任意黄色波浪号的代码&#xff0c;然后按下【Ctrl Alt L】进行代码格式化 2&#xff0c;快速往返 ctrll Alt ⬅ &#xff0c;表示查看上一步调用函数位置&#xff0…