首页 > 其他分享 >推荐系统与强化学习之bandit

推荐系统与强化学习之bandit

时间:2022-11-07 21:00:59浏览次数:93  
标签:学习 每个 算法 用户 bandit 次数 beta MAB 强化

目录:

  • MAB的定义及意义
  • MAB算法
    1. ε-Greedy 算法
    2. UCB算法
    3. 汤普森抽样

一、MAB(Multi-Armed Bandit)的定义及意义

1、在推荐系统中,为了解决准确率和多样性的平衡问题就是经典的Exploit-Explore【利用与探索问题】。其中,Exploit表示的是利用当前用户的信息或者利用当前最优结果,Explore是通过探索用户未知的可能存在潜在兴趣的内容。MAB主要解决的问题就是探索与利用之间寻找一个平衡,从而使得最终的收益最大化。

二、MAB的算法

1、ε-Greedy 算法

  ε-Greedy就是一种很机智的Bandit算法:它让每次机会以ε的概率去“探索”,1-ε的概率来“开发”。

优点:

(1)能够应对用户兴趣的变化,能够以一定的概率ε探索用户未知的兴趣

(2)以1-ε概率充分利用当前的信息,选择最优的结果

在此基础上,又能引申出很多值得研究的问题:如ε应该如何设定呢?它应不应该随着时间而变?因为随着探索次数的增多,好的选择自然浮现得比较明显了。

ε大则使得模型有更大的灵活性(能更快的探索到未知,适应变化),ε小则会有更好的稳定性(有更多机会去“开发”)。

 

2、Upper Confidence Bounds算法 (UCB)

UCB 算法全称是 Upper Confidence Bound,即置信区间上界。它是计算每个臂的平均收益与该收益的不确定性来作为最终得分。公式如下:

                        

  其中,i 表示当前的臂,t 表示目前的尝试次数,Ti,t 表示臂 i 被选中的次数。公式加号左边表示臂 i 当前的平均收益,右边表示该收益的 Bonus ,本质上是均值的标准差,反应了候选臂效果的不确定性,就是置信区间的上边界。

UCB 算法的流程如下:

(1)对所有臂先尝试一次

(2)按照公式计算每个臂的最终得分

(3)选择得分最高的臂作为本次结果

UCB 算法为什么有效?

(1)当一个臂的平均收益较大时,也就是公式左边较大,在每次选择时占有优势

(2)当一个臂被选中的次数较少时,即 Tit 较小,那么它的收益Bonus 较大,在每次选择时占有优势

 

3、Thompson Sampling 算法

每个臂是否产生收益的概率 p 的背后都对应一个 beta 分布。我们将 beta 分布的 α 参数看成是推荐后用户的点击次数, β 参数看成是推荐后用户未点击的次数。

            

汤普森算法主要流程:

(1)每个臂都维护一个 beta 分布的参数,获取每个臂对应的参数 α 和 β,然后使用 beta 分布生成随机数;

(2)选取生成随机数最大的那个臂作为本次结果;

(3)观察用户反馈,如果用户点击则将对应臂的 α 加 1,否则 β 加 1。在实际的推荐系统中,需要为每个用户保存一套参数,假设有m个用户,n个臂(选项可以是物品,也可以是策略), 每个臂包含 α 和 β 两个参数,所以最后保存的参数的总个数是 2mn。

为什么汤普森采样算法有效?

(1)当尝试的次数较多时,即每个臂的 α + β 的值都很大,这时候每个臂对应的 beta 分布都会很窄,也就是说,生成的随机数都非常接近中心位置,每个臂的收益基本确定了。

(2)当尝试的次数较少时,即每个臂的 α + β 的值都很小,这时候每个臂对应的 beta 分布都会很宽,生成的随机数有可能会比较大,增加被选中的机会。

(3)当一个臂的 α + β 的值很大,并且 α/(α + β) 的值也很大,那么这个臂对应的 beta 分布会很窄,并且中心位置接近 1 ,那么这个臂每次选择时都很占优势。

 

标签:学习,每个,算法,用户,bandit,次数,beta,MAB,强化
From: https://www.cnblogs.com/ljy2013/p/16867432.html

相关文章

  • 《Zerocoin: Anonymous Distributed E-Cash from Bitcoin》论文学习笔记
    《Zerocoin:AnonymousDistributedE-CashfromBitcoin》论文学习笔记@目录《Zerocoin:AnonymousDistributedE-CashfromBitcoin》论文学习笔记【前导知识】1.电子......
  • 【THM】Linux Privilege Escalation(Linux权限提升基础)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/linprivesc通过学习相关知识点:了解Linux权限提升的基础知识,从枚举到利用,了解多种不同的权限提升技术。介......
  • 整理OD学习之深入理解消息循环
    今天我们一起深入探讨下带有对话框的消息循环。先看下图:今天我们就来研究这个图!!为了方便研究,我就选用看雪实例里的一个程序。从图上你可以看出一个主窗口,还有一个消息框。......
  • FHE学习笔记 #2 多项式环
    https://en.wikipedia.org/wiki/Polynomial_ringhttps://zhuanlan.zhihu.com/p/419266064这篇知乎文章讲的比较透彻,但是不易理解,可以结合以下视频学习。无尽沙砾大佬的......
  • FHE学习笔记 #3 数论中的前置知识
    文章使用wolai编写并导出,在wolai中观看效果更好,有颜色高亮和实时更新不可约多项式IrreduciblePolynomialIrreduciblepolynomial-Wikipedia定义比较多,通俗......
  • 【python】机器学习算法(KNN)入门——手写数字识别
    前言嗨喽~大家好呀,这里是魔王呐!最近邻(kNearestNeighbors,KNN)算法是一种分类算法1968年由Cover和Hart提出,应用场景有宁符识别、文本分类、图像识别等领域。手......
  • Spring Boot 学习笔记
    SpringBoot概述在看完SSM的整合之后,使用Spring开发中配置Spring的环境会非常的繁琐,而Springboot的出现就解决了这个问题。SpringBoot入门导入springboot起步依赖......
  • 【博学谷学习记录】超强总结,用心分享 | HashMap、HashTable、ConcurrentHashMap
    HashMap和HashTable的区别1、HashMap是非线程安全的,HashTable是线程安全的。2、HashMap的键和值都允许有null值存在,而HashTable则不行。3、因为线程安全的问......
  • Linux学习笔记(7)——认识与学习Bash
    认识与学习Bash认识与学习Bash一、认识Bash这个Shell1.1Shell1.2Bashshell的功能1.3查询命令是否为Bashshell的内置命令:type1.4命令执行与快速编辑按钮......
  • Spring 学习笔记
    Spring概述Spring是一个轻量级的Java开发框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Sprin......