推荐系统遇上深度学习(一零六)-神经网络与逻辑推理相结合的NLR框架

本文主要是介绍推荐系统遇上深度学习(一零六)-神经网络与逻辑推理相结合的NLR框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天跟大家分享一篇比较有意思的文章,将逻辑推理的思路应用在推荐系统中,一起来看下吧。

1、背景

协同过滤是推荐系统中一种非常重要的方法。目前协同过滤的方法大都基于相似度匹配的思想,即学习用户和商品的表示,然后利用相似度函数来进行推荐,如基于矩阵分解的思路(下图中的(a)),使用内积函数作为匹配函数计算相似度得分。在此基础上,基于上下文的CF,进一步考虑了上下文信息如时间、地点、文本图片等信息,如下图中的(b)方法。

基于相似度匹配思路的协同过滤方法在现实世界许多推荐系统中取得了不错的效果。但论文认为推荐是认知任务而不是感知任务,不仅仅需要具备模式识别和匹配的能力,还需要认知推理的能力,因为用户的未来行为可能不会简单地由其与先前行为的相似性来决定,而是由用户关于下一步行为的认知推理决定。例如,当用户买过一个笔记本电脑之后,下一步不会继续买相似的笔记本电脑,而是有更大的可能去买电脑配件。

用户认知推理的过程可以表示成逻辑表达式的形式,如(a∨b)∧¬c-->v(其中∨表示或,∧表示与,¬表示非)表达的含义是如果用户喜欢a或者b,同时不喜欢c,那么他有可能喜欢v。从把推荐当作一个认知推理任务的角度来说,我们希望推荐模型能够发现和归纳数据中存在的逻辑关系。

那么如何让模型具备更好的推理能力呢?接下来,我们首先介绍下逻辑符号定义,然后再介绍论文提出的NEURAL LOGIC RECOMMENDATION(NLR)框架。

2、逻辑符号&表达式介绍

三个基本的逻辑符号分别是逻辑与∧、逻辑或∨和逻辑非¬。进一步,(x∧y)称为逻辑子式,(x∧y)V(a∧b∧c)称为逻辑表达式。

逻辑表达式需要满足一些定律,如两次取非等于原式:¬(¬x)=x,再比如常用的德摩根定律:¬(x∧y)等价于¬x∨¬y,¬(x∨y)等价于¬x∧¬y。一些常用的逻辑等式关系如下表所示:

另一个常用的逻辑操作称为material implication(实质蕴含),它等价于下面的逻辑运算:

x-->y的含义是,x为真,则y也为真,而¬x∨y要想为真,在x为真的情况下,y必为真(因为¬x是假),所以二者是等价的。

好了,介绍了逻辑符号和表达式的含义之后,接下来介绍NLR框架。

3、NLR框架

本节,我们先介绍基于隐式反馈的推理模型,再介绍基于显式反馈的推理,二者的过程较为相似,因此基于显式反馈的推理只会进行粗略的介绍。

3.1 基于隐式反馈的推理

隐式反馈的数据中,我们仅能知道用户与哪些item进行过交互,但并不知道用户是否真的喜欢这些item,假设用户交互过a,b,c三个item,接下来我们想要判断用户是否对v感兴趣,即判断下面的逻辑表达式是否正确:

基于第二节中的介绍,上式可以进一步转换成:

image.png

再基于德摩根定律,进行进一步转换:

ok,那么我们就可以基于上面两个公式中任意一个来构造网络。c出于简单的考虑,选择了后一个公式(后一个公式只用到了两种逻辑运算,而前一个公式包含三种逻辑运算)。由此构造的网络结构如下图所示:

假设用户u1与v1,v2,v3有过交互,并预测用户是否会与v4进行交互。首先,用户和item都会转换为对应的embedding,并进行拼接,得到<u1,v1>,<u1,v2>,<u1,v3>,<u1,v4>。接下来,通过如下的非线性变换进行转换:

eji表示用户i和item j的embedding经过转换后得到的向量。接下来,我们的目标就是计算如下的逻辑表达式是否为真:

这里,各种逻辑操作均是通过一个多层全连接网络实现,例如逻辑非¬对应的网络输入原始向量,输出一个表示非关系的向量;逻辑或输入两个原始向量,输出一个表示二者或关系的向量。那么,上式的网络结构表示如下:

由于我们需要计算的是多个向量的逻辑或,而逻辑或网络输入的是两个向量,所以需要采用一种循环的方式得到最后的向量。

计算得到逻辑表达式的结果之后,如何计算v4的推荐得分呢?这里,引入两个随机初始化且不会进行梯度更新的向量T和F,分别代表True和False。如果表达式最终计算得到的向量与T接近,则认为v4应该被推荐,反之,则不进行推荐。距离计算使用cosine距离。

到这里看似已经结束了,但我们仍忽略了一个比较重要的问题,上述将三个基本的逻辑运算定义为了神经网络的形式,那么各网络的输出是否符合逻辑运算的基本形式呢?逻辑非对应的网络输出的结果是否是输入向量的非呢?这里我们通过一系列的正则项损失进行约束。

以逻辑非为例,两次逻辑非的结果和原结果应该相同,那么很容易以此为条件设计正则项损失,即计算连续经过两次逻辑非网络得到的向量,与输入向量的距离,距离越大,则损失越大:

其余不同逻辑运算的正则项损失计算如下表所示,本文不再详述:

模型训练采用pairwise的形式,即对同一个用户,同时计算一个正样本和一个负样本的推荐得分,并且希望正样本的得分比负样本得分尽可能高。而最终的损失包含两部分,一部分是pairwise的损失(又包括bpr loss和l2 loss),另一部分是逻辑正则项loss。具体计算公式如下:

3.2 基于显式反馈的推理

使用显式反馈数据进行推理的过程与使用隐式反馈数据过程类似,假设用户对v1和v2有正向的反馈,对v3有负向反馈,那么是否给用户推荐v4可以表示成如下的逻辑表达式:

进一步转换得到:

这里使用两次逻辑非运算而非直接使用原始向量,其目的是为了使逻辑非网络学习得更好。其余过程与使用隐式反馈数据计算过程相似,不再赘述。

4、实验结果及分析

最后来简单看一下实验结果。首先是本文提出的NLR框架与baseline模型的对比,其中NLR-I代表基于隐式反馈数据训练的模型,NLR-E代表基于显式反馈模型训练的模型,从下表数据看,NLR效果远好于各baseline模型,而NLR-E效果好于NLR-I。

再来看一下逻辑正则损失对于模型的提升效果,NLR-Emod代表没有加入逻辑正则损失训练得到的模型,可以看到,其效果是差于NLR-E的,因此逻辑正则损失对于模型效果的提升,具有正向的作用。

好了,论文还是比较有意思的,感兴趣的同学可以翻阅原文哟~


http://www.taodudu.cc/news/show-8123356.html

相关文章:

  • 初识DetNet:确定性网络的前世今生
  • 【智能制造】TSN联手OPC UA,将是阿里、腾讯、华为们直达工业4.0的特快通道?
  • docker 笔记整理
  • 作为前端必须知道的HTML知识
  • Docker实用篇-Docker的基本操作(各种命令、镜像和容器、数据卷挂载)、Dockerfile自定义镜像(基于现有镜像创建)、Docker-Compose(集群部署)、Docker镜像仓库(私)
  • Hexo搭建博客教程
  • 两个linux 共享文件夹,多学一点(二)——在 Linux 下挂载 Windows 共享目录、使用 scp 命令在两台 Linux 间传输数据...
  • Go并发编程基础
  • GoLang之标准库Context包
  • go-etcd
  • go语言中的context
  • 有趣的 Go HttpClient 超时机制
  • Go并发编程-Context包
  • go语言Context标准库
  • Go 的标准库 Context 理解
  • 【搞定Go语言】第3天7:Go标准库Context
  • 29. Go语言标准库之Context
  • Go并发编程学习总结
  • Context标准库
  • Golang 标准库context.Context
  • Go标准库Context包:单个请求多个goroutine 之间与请求域的数据、取消信号、截止时间等相关操作
  • 20-Go语言之context
  • Golang 标准库context的基本使用
  • MySQL 5.5 NDB集群查看日志
  • 程序员能考哪些证书?
  • 程序员可以考哪些证书
  • —— GPS测量原理及应用复习-2 ——
  • 搞清楚电场Ex,Ey,Ez,normE(电场模)场分布的影响,看懂了这些不需要看磁场就能明白基本上所有的场分布知识...
  • Cesium最新基础教程系列4—坐标转换(平面坐标系,笛卡尔空间直角坐标系,弧度,经纬度,屏幕坐标)
  • 【内网流量操控技术六】icmp隧道之icmpsh
  • 这篇关于推荐系统遇上深度学习(一零六)-神经网络与逻辑推理相结合的NLR框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/324710

    相关文章

    HarmonyOS学习(七)——UI(五)常用布局总结

    自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

    Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

    Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

    不懂推荐算法也能设计推荐系统

    本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

    基于人工智能的图像分类系统

    目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

    水位雨量在线监测系统概述及应用介绍

    在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

    【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

    【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

    学习hash总结

    2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

    深入探索协同过滤:从原理到推荐模块案例

    文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

    嵌入式QT开发:构建高效智能的嵌入式系统

    摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

    JAVA智听未来一站式有声阅读平台听书系统小程序源码

    智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听