13 用户兴趣探索与开发 深度学习与强化学习

AI 技术在智能语音、图像识别、自然语言理解等领域,AI 都有大范围的落地。而应用得最早、最广泛的,还是 AI 在推荐领域的实践。

目前大部分主流 App 都集成了推荐系统,比如 58 同城 App 中推荐系统就不断通过对用户的兴趣的探索和开发,进行智能、精准推送,以此更好地为用户进行服务。除此之外,还有电商、资讯、长短视频、社交等 App,也都非常依赖推荐系统。

而在推荐领域中,如果系统只是针对用户已存在兴趣的物品进行推荐,过不了多长时间,用户就会感觉腻,此时推荐算法本身需要不断探索和开发用户新的兴趣才行。

因此这一期我们就主要围绕用户的兴趣探索和开发的问题进行讨论。关于兴趣探索和开发的问题,我们可以这样理解:如果我们需要将平台的物品进行分类,那么推荐算法应该把物品分为用户“喜欢”和“不喜欢”这两大类。

然而对于推荐系统来说,它并不确切知道用户的兴趣,因为用户大部分兴趣只能通过隐式反馈来捕获,也就是说兴趣没有表现出来的行为。

在这种情况下,推荐系统存在以下两种选择。

  • 按照已捕获的兴趣进行推荐:这种形式会产生“信息茧房”,推荐出来的结果缺乏新颖性和多样性;

  • 不按照兴趣,随机推荐:这种形式推荐出来的结果往往用户不满意,准确率会下降。

此时,如果我们完全按照当前的最优解,则意味着放弃了潜在的更优解,而为了潜在的更优解继续探索可能会导致短期收益降低。

由此可见,推荐系统偏重任意一个选择都行不通,因此我们需要多方综合、权衡考虑。这就是推荐算法中经典的探索与开发 Exploration & Exploitation(EE)问题。

多臂老虎机(MAB)问题

在解决这样的问题时,历史悠久的赌博学中有一个多臂老虎机(Multi-Armed Bandit,MAB)的解法,可以为我们所用。

多臂老虎机的使用场景:在多个老虎机中,赌徒随机选择其一进行下注,经过多次探索,最终选择收益最大的那台。这估计是大多数玩家的选择,这种选择方式比完全随机要强一些,但是如果想不亏本,就得靠运气了。

解决这种问题的算法,我们就统称为老虎机算法。在推荐领域,常见的老虎机算法有很多,这里就不一一例举了,下面我们主要看两个收益较高的算法模型。

  1. 置信区间上界(UCB)模型

置信区间上界(Upper Confidence Bound,UCB)模型,与它的名字一样,简单来说就是它会根据老虎机置信区间上界,将现有老虎机进行排序,然后选择排最靠前的那一个。

如何获得老虎机的准确置信区间呢?每个老虎机都有其胜率的置信区间,根据统计学原理,随着被下注次数的增加,老虎机的胜率置信区间会逐渐缩窄,最后达到逐渐确信的状态。

一般来说,置信区间上界较大的是那些很少被下注的老虎机,这也说明 UCB 模型是一种偏向冒险的模型。

【UCB 模型的操作步骤】

  • 模型初始化:也就是把每台老虎机都试一下。

下注策略:按照如下公式更新每台老虎机的得分。

  • 其中,左边为当前老虎机的收益均值,右边为加成收益,t 为下注总次数,T it为当前老虎机的下注次数。

  • 更新分数后,选择分数最高的老虎机下注,并更新公式中的参数。

实验证明:UCB 模型在 MAB 问题上应用广泛,但是它没有充分利用上下文信息,从而影响了预测准确率。

这如何理解呢?比如 58 同城 App 租车业务中存在玛莎拉蒂、法拉利、保时捷等豪车,虽然大部分用户都喜欢这些豪车,但是并不意味着这些用户具备同等的消费能力。如果我们系统忽视这些上下文信息,则会导致预测上的偏差。

而这样的问题,是基于 UCB 的算法上改进的 LinUCB 模型需要考虑的,下面我们就具体来说说。

  1. 线性置信区间上界(LinUCB)模型

线性置信区间上界(Linear Upper Confidence Bound,LinUCB)模型则是在 UCB 模型的基础上引入了特征信息,用以加强 UCB 模型。

关于 LinUCB 模型流程伪码如下图所示:LinUCB 模型分为以下两种:

  • 左图为各个老虎机不共享参数的 LinUCB 模型(Disjoint);

  • 右图为各个老虎机共享参数的 LinUCB 模型(Hybird)。

由于 UCB 模型没有利用上下文信息,故而在模型初始化时,我们需要将每一台老虎机都试一遍,而在实际应用中往往不具备这样的条件。

因此,LinUCB 模型利用用户和物品的原始信息进行聚类降维,从而拿到隐向量表,再利用它来预估每个用户和物品组合的期望回报。

LinUCB 模型具体的算式如下:

  • 不共享参数 LinUCB 模型下,每个老虎机收益的数学期望

  • 共享参数 LinUCB 模型下,每个老虎机收益的数学期望

从公式中我们可以看到:每个老虎机的收益与用户和物品组合特征线性相关,这就是 LinUCB 模型假设前提条件和模型名称的来历。

限于篇幅,这一期我们不赘述整个模型参数的推导过程,而只举一个具体的例子来描述一下整个模型的思想。

  1. 58 同城租车业务案例

在 58 同城 App 的租车业务中,不同车的应用场景存在差异,比如货车、轿车、SUV、跑车等。

  • 在特定场景下,如果是家庭出游,那么用户多会选择大容量 SUV;

  • 如果是搬家拉货,那么用户一定会选货车;

  • 如果是婚庆,那么用户多会选择跑车。

这时,我们就获得了用户和物品的一个组合特征,即用途和车型组合特征;据此,我们就可以将用途和车型组合,再结合其他特征(如性别、年龄等)进行聚合降维,从而得到隐向量表征。

这个隐向量表征,可以视情况是共享还是不共享,然后再应用上“LinUCB 模型公式”计算收益,并选择相对收益最大的物品进行推荐。

  1. LinUCB 模型 pk UCB 模型

由此我们可以看出:LinUCB 模型比 UCB 模型更贴近实践。

  • 比如用户的性别、年龄、用途等属性,能够从用户画像中获得,使用线性回归预测收益,这与人类做决策时的思路非常相似;

  • 再比如车的车型、品牌、车系等属性,可以从物品画像中获得,且不同车系的用途大部分是重叠的。这就使得模型不需要对所有车系进行计算,这一点就是 UCB 模型无法做到的。

UCB 模型和 LinUCB 模型,都是假设用户行为不会改变环境状态的算法。简单来说,就是用户当前的行为获得的收益,不会影响后续行为获得的收益。

然而,这种假设实际上并不存在。

Q 学习(Q-Learning)

1.为什么需要 Q 学习?

为什么说这种假设实际上并不存在呢?比如在 58 同城 App 宠物推荐中,如果用户想买一只泰迪狗,而推荐系统根据 EE 算法推荐了英国短毛猫。

用户看后,觉得短毛猫还挺漂亮的,大小也跟泰迪狗差不多,毛短还容易打理,而且遛狗也比较麻烦,于是把宠物需求改为了短毛猫。

而这时系统再次推荐狗时,可能就入不了用户的法眼了,反倒是美国短毛猫更符合用户需求。为了解决这一问题,Q 学习就发挥作用了。

2.什么是 Q 学习?

Q 学习(Q-Learning)既不是模型,也不是面向某种目标的算法。它是使用 Q 表(Q-Table)记录不同状态,并在这个状态下采取某些行为的预期收益。

这里我们需要重点讲讲什么是 Q 表,及其如何记录不同转状态,Q 表如下图所示:

在 S0 状态下,如果采取 A0 动作(或者选择 A0 老虎机),那么预期收益是 0.25。

注意:不一定会有 0.25 的收益,因为整个 Q 表的参数会在不断尝试中进行更新,所以此时的值只是选择下一步动作的基础。

Q 表更新公式如下:

其中,r(s,a) 表示当前动作的实际收益,image.png表示下一状态的最大收益,r 为平衡参数表示一种下一状态收益的贴现比率。

然而在现实场景下,大多数时候我们并不知道下一状态是什么样。通过使用状态转移概率来描述状态到状态之间的转换,这就是马尔科夫决策过程(Markov Decision Process,MDP)。

以上讲述了 Q 表中“状态”和“动作”的关系,状态和动作是离散的,如果状态和动作是连续变量,则参数就会过于庞大,使得参数多到无法使用 Q 表记录的情况。这时,我们可以使用神经网络代替 Q 表,来记录状态和动作的对应关系。

这就是所谓的深度 Q 网络(Deep Q Network,DQN)模型,接下来我们就讲解一下它。

深度强化学习模型

1.深度 Q 网络(Deep Q Network,DQN)模型

深度 Q 网络(Deep Q Network,DQN)模型是深度学习与强化学习结合的产物。

在线广告领域中存在三大灵魂拷问:到底插不插广告?插什么广告?在哪插广告?这三大拷问之间相互关联,所以模型需要统一处理这三个问题。

为了一次性解决这三个问题,我们将这个问题描述为一个强化学习问题。我们将“状态 state”定义为当前推荐列表中的普通推荐和广告,“行为 action”以三大灵魂拷问为三个基本动作,“收益 reward”定义为实际收益和体验收益。

在实际场景中,虽然插广告可以为企业带来实际收益,但是插入太多广告则会让用户反感。因此插广告时,我们需要权衡“收益”和“用户体验”来决策插入还是不插入广告。

针对在线广告领域的这类问题,DQN 模型给出了具体的解法。

DQN 模型框架图如下:输出为所有动作-状态对应的 Q 表,虽然此时给出了具体在哪插广告,但无法确定插什么广告。图右侧(b)输出为单个动作-状态对应的 Q 表,此时虽然给出了具体插什么广告,但是无法确定在哪插广告。

这意味着 DQN 结构只能解决一个问题。

2.DEAR 模型

因此在这个基础上,又提出了可以一次处理多个问题的改进方法,这就是 DEAR 模型(框架图如下):

实际上, DEAR 模型是改进型的 DQN 模型,主要用于在线广告推荐领域。

DEAR(DEep reinforcement learning framework with a novel DQN architecture for online Advertising in Recommender systems,DEAR)模型使用深度模型(如 RNN、CNN、MLP),将传统的两种 DQN 模型统一起来。如状态image.png中包含用户浏览历史、当前推荐列表、环境信息image.png等。

这里使用 RNN 中的 GRU 模型,将浏览推荐和广告的历史转化为隐向量表征,然后使用 CNN 或 MLP 将当前请求的推荐列表转化为隐向量表征image.png,再将三者连接起来作为状态表征image.png。

从上图中可以看到,DEAR 模型的输入为状态image.png和候选广告image.png,输出为具有 L+1 个位置的 Q 表。DEAR 模型采用了类似双塔的结构,分为左右两部分:

  • 左边是由状态决定的image.png函数,表示用户对推荐的满意程度;

  • 右边是由状态和动作同时决定的image.png函数,表示当前上下文与是否插入广告之间的关系。

然后模型将二者进行结合,给出了最终的 Q 表。

本节小结

这一讲我们介绍了探索与开发问题解决方法,从 MAB 策略到 UCB 模型,再到 LinUCB 模型、Q-learning、DQN 模型、DEAR 模型等,模型复杂度逐步提高。最终,将强化学习算法与深度学习算法结合在一起,实现了泾渭合流。

你可以根据下图,再次回顾、学习此次课程。

通过深度强化学习模型的演化过程,我们能够看到应用场景和待解决的问题是推动算法模型向前发展变革的根本动力。

这就是道家所说的“势”,就像道德经中“道生之,德畜之,物形之,势成之”给我们的启示——顺势而为,则大有作为。

而跟着这个智能时代,了解一下 AI 和推荐技术,就是一种顺势而为的学习行为。今天的课程内容,你可能会觉得深奥、隐晦。但这没关系,你可以根据我的讲解,再去探索学习。我觉得更重要的“不是一次性学会”,而是你通过学习,涉猎了新的领域,对 AI 与推荐算法模型有了更深一步的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络(Wrong Question)

一、计算机网络体系结构 1.1 计算机网络概述 D 注:计算机的三大主要功能是数据通信、资源共享、分布式处理。(负载均衡、提高可靠性) 注:几段链路就是几段流水。 C 注:记住一个基本计算公式:若n个分组&a…

Linux进程间通信(管道+共享内存)

进程间通信(interprocess communication,简称 IPC)指两个进程之间的通信。系统中的每一个进程都有各自的地址空间,并且相互独立、隔离,每个进程都处于自己的地址空间中。所以同一个进程的不同模块(譬如不同…

matlab仿真 数字信号载波传输(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第七 章内容,有兴趣的读者请阅读原书) clear all M8; msg[1 4 3 0 7 5 2 6]; ts0.01; T1; %t0:ts:T; t0:ts:T-ts; %x0:ts:length(msg); x0:ts:length(msg)-ts; f…

《python语言程序设计》第6章10题使用isPrime函数 求小于10000的素数的个数

修改了一个地方&#xff0c;真的太棒了&#xff01; def isPrime(number):divisor 2while divisor < number / 2:if number % divisor 0:return Falsedivisor 1return Truedef printPrimeNumbers(numberOfPrimes):# 这个代码之前就没有用&#xff0c;作者写的目的是什么呢…

NC 最长回文子串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 对于长度为n的…

6. 开发板烧录

1. 概述 采用恒玄的底板+2小板的开发板 2. 开发板资料 详见:<<BES AUDIO DEV BOARD USER MANUUAL_9v5.pdf>> 3. 硬件接线 供电:可以采用电池供电,也可以采用Type-c供电 烧录:采用Type-C口,实际上就是串口。(下图带黑色标志的)

【启明智显分享】基于国产Model3芯片的7寸触摸屏助力智慧医疗,电子床头屏提升护理交互

未来医院必然是以信息化为基础&#xff0c;以物联网为特征&#xff0c;以医疗为核心的服务型医院。病房作为医院的重要服务场所&#xff0c;成为智慧医院建设的重要一环。 为提高医护人员与患者的互动交流&#xff0c;给医疗注入智慧元素&#xff0c;让患者享受智能服务&#…

AJAX-Promise 详解

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 前言 一、Promise基本概念 1.1 定义 1.2 状态 1.3 构造函数 二、Promise基本用法 2.1 then() 2.2 ca…

keras的路透社数据训练对测试数据的概率总和计算问题

在使用keras内置数据路透社新闻分类的时候&#xff0c;使用训练的模型预测测试数据。然后发现对预测数据分类的概率总和不是1. pridiction model.predict(x_test)for i in range(0,46):print(np.sum(pridiction[i]))然而python深度学习这本书里面的是1.0 问题目前没有解决。…

醒醒,别睡了...讲《数据分析pandas库》了—/—<3>

直接上知识点 一、 1、新建数据框时建立索引 所有的数据框默认都已经使用从 0 开始的自然数索引&#xff0c;因此这里的"建立”索引指的是自定 df pd.DataFrame( {varl : 1.0, var2 :[1,2,3,4], var3 :[test,python,test,hello] , var4 : cons} , index [0,1,2,3]) …

量化私募公司的多因子构建方案(附python代码)

原创文章第600篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天代码已经发布了&#xff0c;大家可以前往下载和更新&#xff1a; 代码发布&#xff1a;quantlabv5.3&#xff0c;可转债所有数据及双低、动量因子策略&#xff0c;单因子分析框…

文件夹怎么设置密码?文件夹加密方法盘点

文件夹是电脑管理数据的重要工具&#xff0c;当我们将重要数据存储在文件夹中时&#xff0c;需要严格保护文件夹的数据安全&#xff0c;避免数据泄露。下面我们就来了解一下文件夹设置密码的方法。 文件夹加密 文件夹加密是指通过加密算法来加密保护文件夹&#xff0c;避免其他…

高级网页爬虫开发:Scrapy和BeautifulSoup的深度整合

引言 在互联网时代&#xff0c;数据的价值日益凸显。网页爬虫作为一种自动化获取网页内容的工具&#xff0c;广泛应用于数据挖掘、市场分析、内容聚合等领域。Scrapy是一个强大的网页爬虫框架&#xff0c;而BeautifulSoup则是一个灵活的HTML和XML文档解析库。本文将探讨如何将…

Kolla-Ansible的确是不支持CentOS-Stream系列产品了

看着OpenStack最新的 C 版本出来一段时间了&#xff0c;想尝个鲜、用Kolla-Ansible进行容器化部署&#xff0c;结果嘛。。。 根据实验结果&#xff0c;自OpenStack Bobcat版本开始&#xff0c;Kolla-Ansible就适合在CentOS系列产品上部署了&#xff0c;通过对 Bobcat和Caracal…

【docker】部署证书过期监控系统mouday/domain-admin

证书过期了再去部署证书容易被骂&#xff0c;就找了一个开源的证书过期系统来部署一下 过程 官方文档&#xff1a;https://domain-admin.readthedocs.io/zh-cn/latest/manual/install.html#docker 直接下载镜像是超时的&#xff0c;切换一下文档推荐的镜像源 新建docker配置…

模拟电子技术-实验四 二极管电路仿真

实验四 二极管电路仿真 一&#xff0e;实验类型 验证性实验 二&#xff0e;实验目的 1、验证二极管的单向导电性 2、验证二极管的稳压特性。 三&#xff0e;实验原理 二极管的单向导电性&#xff1a; 四、实验内容 1、二极管参数测试仿真实验 1&#xff09;仪表仿真…

IndexError: index 0 is out of bounds for axis 1 with size 0

IndexError: index 0 is out of bounds for axis 1 with size 0 目录 IndexError: index 0 is out of bounds for axis 1 with size 0 【常见模块错误】 【解决方案】 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#…

物联网主机 E6000:智慧应急领域的创新力量

在当今瞬息万变的世界中&#xff0c;突发事件和紧急情况时有发生。如何迅速、准确地应对这些挑战&#xff0c;保障人民生命财产安全&#xff0c;成为了社会发展的重要课题。而物联网主机 E6000 的出现&#xff0c;为智慧应急领域带来了全新的解决方案。 一、强大的性能与功能 物…

ueditor跨域问题解决

ueditor解决跨域问题 问题&#xff1a;1.在引用vue-ueditor-wrap后&#xff0c;上传图片和附件出现跨域问题&#xff0c;前端引用了webpack去解决跨域问题&#xff0c;但仍然存在跨域问题&#xff1f; ueditor是百度的富文本&#xff0c;功能较多但资料不够全&#xff0c;因为…

模拟string(四)详解

目录 判断string大小关系bool operator(const string&s1,const string s2)代码 bool operator<(const string& s1, const string& s2)代码 bool operator<(const string& s1, const string& s2)代码 bool operator>(const string& s1, const …