序列推荐SRS 交互式推荐IRS 对话推荐CRS 以及建模为MDP后的区别

2024-02-06 22:38

本文主要是介绍序列推荐SRS 交互式推荐IRS 对话推荐CRS 以及建模为MDP后的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序列推荐

  1. SRS:通过用户历史交互数据预测用户下一个要点击的物品。history interaction -> recommend the next item
  2. 如GRU4Rec,将用户点击过的物品一个一个输入模型,预测下一个要点击的物品。
  3. 属于one-step prediction

交互式推荐

  1. IRS:是循环推荐,收集反馈的过程
  2. 多步决策过程:1)推荐一个列表;2)收集用户对于该推荐的反馈。然后往复循环这两个步骤。
  3. 属于multi-step interaction

对话推荐

  1. CRS:① IRS可以视为 CRSs 的一种早期雏形,CRSs 引入了更多的交互模式,其核心任务是关注如何问问题,即什么时候问问题(不一定是对话的形式,也可以是给出选项让用户选择的形式),什么时候做推荐。
  2. 相比较task-oriented dialogue system,CRSs 关注的重点并不在于语言,而是推荐的质量。CRSs 的核心任务,还是利用其交互的能力去想方设法获得用户喜好,做出高质量体验。与此同时,CRSs 的输入输出可以用基于规则的文本模版来实现。当然,这并不代表语言不重要。随着技术的的发展迭代以及学者们研究方向的重合,不同领域的差距将越来越小。
  3. 例如,其可以主动问用户问题,例如问关于商品属性的问题:“你喜欢什么样颜色的手机?”“你喜欢关于摇滚类乐曲吗?”丰富的交互模式克服了交互式推荐系统的三个问题(太单调;需要在信息充足时推荐;用推荐商品刺探用户喜好是低效的),用更高效的方式来进行交互,从而快速获得用户的兴趣爱好,在信心比较充足的情况下,才作出推荐。

建模为MDP过程的SRS与IRS是一样的吗?

先说结论:可以! 原因如下:

  1. 二者的核心区别在于SRS是离线模型,IRS是在线策略,即前者只推荐一次,后者需要循环推荐。
  2. 离线模型:模型在一系列静态的历史数据上学习,可以当成单点学(传统推荐)或者序列学(SRS),不过都是静态的学,最后在test data上进行测试。
  3. 交互式学习:需要不断提供反馈,因此是一个动态的过程。
  4. 举个栗子:我们想给用户推荐一双臭袜子,但是用户并没有买过(没有历史数据),那要如何评价推荐的好坏呢(evaluation)?对于离线/静态模型,通常是求precision和recall指标,也就是看该用户之前买过的商品和推荐的商品有多少是重合的。那在这种情况下,就没有办法评估啦!但是交互式模型会提供一个反馈(reward),如rating,这样我们就可以知道推荐的商品用户是否满意啦~ 不过这就有了一个问题,用户没有买过这个商品,我们却需要他的评分,该怎么办呢?通常,我们会建立一个environment simulator,专门做这个事情!感兴趣的同学可以去搜搜相关论文哈
  5. 因此,将序列推荐和交互式推荐都建模为MDP后,相当于都引入了反馈机制(reward),也都需要不停推荐,因此二者这个时候就是一样的啦。

思考

读了对话推荐的综述(Advances and Challenges in Conversational Recommender Systems: A Survey)后,产生了一些问题,以下是自己的一些思考:

  1. CRSs其实并不强调“对话”的概念,dialogue只是一种形式,就像论文里写的“any form of interactions between users and systems, including written or spoken natural language, form fileds, buttons, and even gestures” (这里的form fields指的是“表单”,如筛选的小窗口等) 他的重点是能够通过多轮交互引出用户偏好“through real-time multi-turn interactions, elicit the dynamic preferences of users”。

  2. Q:CRS和 ask question的关系? A:除了问问题,CRS还可以做其他事情不是问问题的交互,比如做可解释性(以聊天的形式来解释为什么推荐这个产品,对用户而言不是黑盒的了)。并且问问题不一定是通过对话来问,有可能是给出选项让用户选。

  3. Q:综述里的“Question-based User Preference Elicitation”部分,写的是关注“问什么问题可以引出用户偏好”以及“怎么根据用户反馈调整问题”。“Multi-turn Conversational Recommendation Strategies”关注“什么时候问问题,什么时候推荐,只有在有信心的时候才做推荐” 。“Natural Language Understanding and Generation”关注“怎么像人一样交流”,需要提取语义信息,这里就涉及到NLP领域了,“利用树形结构制定模板、端到端的方法”。
    那这三部分挑战,好像都在强调对话、textual呀,没有涉及到“written or spoken natural language, form fileds, buttons, and even gestures”这些交互手段啊? A:因为NLP-based 比较新,综述中没有强调早期的东西(基于规则的)。

  4. 和IRS的区别:
    Q:IRS强调“推荐一个物品,收到反馈”这样一个循环的过程(属于早期CRSs)。综述里写“they focus on improving the recommendation strategy online by leveraging real-time user feedback on previously recommended items.”可是强调推荐策略,不是应该的嘛?难道重点在“online”和“real-time”?可是IRS很多也是离线的呀,难道只有线上的、实时的才算IRS吗?A:IRS的出发点是online,用离线的学是一种妥协;IRS就是为了在线场景打造的。
    ②二者获取/刺探用户偏好的渠道不太一样。 IRS是推荐一个item之后,才能收到反馈,即获取用户偏好。但是CRS是通过交互的形式获取用户偏好。(前者靠推荐,后者靠交互)
    ③ 推荐item的步骤不太一样。IRS是每次都要推荐;CRS是交互多轮,有信心了才推荐;综述里还提到一个critquing-based recommender system,它是问一个问题推荐一个item。

这篇关于序列推荐SRS 交互式推荐IRS 对话推荐CRS 以及建模为MDP后的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek