UCB:初识强化学习在推荐领域的应用(附推导过程和实例代码

前言:

UCB算法是为解决多臂老虎机不确定性衡量问题衍生出来的算法,关于什么是多臂老虎机问题,本文不再赘述,还未了解的同学推荐看下这篇文章。

什么是多臂老虎机问题问题介绍多臂老虎机问题 [1]是概率论中一个经典问题,也属于强化学习的范畴.设想,一个赌徒面前有N个老虎机,事先他不知道每台老虎机的真实盈利情况,他如何根据每次玩老虎机的结果来选择下次拉哪台或者是否停止赌博,…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/84140092

UCB算法,全称upper confidence Bound(置信区间上界算法),广泛应用于不确定性高的新产品推荐情景以及用户冷启动推荐场景当中。

学习流程

1、初识UCB

2、知识储备

3、UCB算法原理

4、UCB算法bound证明

5、UCB算法在推荐中的应用(附代码)

UCB算法本身的思想并不难理解,但公式的推导过程涉及大量统计学知识,对非统计学从业人士来说,学习难度还是有的。

但好在笔者本人也不是科班出身,为了搞懂UCB算法,从头学习了UCB的推导过程,每一步都是手写计算而来,加以总结梳理,生成了这一篇博客。

初识UCB

在讲UCB之前,让我们简单地回顾一下贪心算法的缺点。

贪心算法,又称贪婪算法,其每次行动的时候仅考虑当前收益,增大高收益选择试验次数,降低低收益选择试验次数,从而动态调整决策策略。

这种算法可能会造成的问题是,计算得到的累计收益并非是整体最优解,而仅仅是局部最优解

因为贪心算法足够贪心,宁可把所有试验次数全部集中到表现好的选择,也不肯给表现差的选择更多的测试机会。

这种分配方法很大程度上取决于老虎机的历史表现数据,换句话说,只要这台老虎机曾经的测试数据足够优秀,就算它现在一毛钱不赚,它也能得到算法的大量流量支持。

这显然是不合理的。

虽然实际上的贪心算法也能考虑到老虎机每个时刻收益概率的变化,但是在评判哪种选择更优时,历史数据的权重依然很高。

也正因为如此,当出现历史数据极佳和历史数据极差的两个极端时,后者由于虹吸效益,会立即被贪心算法抛弃,从而失去了深入研究的机会。

为了扩大处于尾部的老虎机在整体决策中的测试空间,我们需要一个算法同时对少样本的价值估计带来的不确定性该动作本身的期望收益进行建模,从而让:

不确定性大的老虎机和期望收益大的老虎机有着同等的测试地位。

具体公式如下:

得分=期望收益+不确定性度量

进一步的,期望收益可以和平均收益挂钩,抽象化公式,从而得到:

score=u*+σ(n)

其中,u*是某个选择的平均收益,σ(n)是关于测试数量n的不确定性度量函数,它包括两个不确定性的加总,一个是平均收益与期望收益之间的误差,一个是样本量太少导致的预估误差。

我们能很轻易地求出u*的值,所以,只要再求出σ(n)的表达式,我们就能得到一个具体的得分公式。

推到这里,已经和UCF的理念十分接近了。

我们再把这个式子做一个变化,用夹逼的方式求出score。

ucb_score=u*+σ(n)  =>  u*-σ<=ucb_score<=u*+ σ

整理得:score ∈[u*-σ,u*+σ]

我们鼓励不确定性高的选择有更高的分数,因此,我们使σ的影响扩大到最大

即得到:

score=u*+σ,

这里的σ是我们可以人为算出来的预测值波动。

它究竟是什么!

UCB算法给出了答案:

置信区间上界

score ∈[u*-σ,u*+σ],像极了统计学里的置信区间。

UCB正是直接把式子的左侧定义为置信区间上界,这样做有两个好处。

1、确保了算法得出的score中同时考虑到了期望收益和不确定性波动

2、直接将置信区间上界作为真实得分,使得小样本的测试机会远大于高收益

小样本选择的测试次数在UCB中得到了加强,从而平衡了高收益和低探索之间的矛盾,希望通过积极的探索策略,达到整体的最优解。

   UCB公式如下:

   

     (UCB评价分数     (置信区间上界)

   t:第t次试验次数

   a:动作,指向具体的一个老虎机

   -ut(a):t时刻下a动作的平均收益

  n:总试验次数

  T:a动作的总试验次数

  置信区间上界可用Hoeffding不等式求得,下面给出具体的证明过程。

必要的知识储备

在进行证明之前,我们需要掌握一定的统计理论知识。

如果你已经对基础的数理统计知识了然于心,那么可以跳过这一部分内容。

需要用到的公式如下:

马尔可夫不等式

切比雪夫不等式

矩量母函数MGF

切尔诺夫边界

大数定理

霍夫丁引理及霍夫丁不等式

如果在接下来的证明过程中对某些公式有些遗忘,你也可以回到这个部分进行查漏补缺。

马尔可夫不等式

 切比雪夫不等式

矩母函数MGF

 切尔诺夫边界

大数定理 

大数定理想必是这一栏中最简单的定理了,这里我直接引用知乎的某位大佬给出的推导过程,看一遍就能理解。

霍夫丁引理及霍夫丁不等式

算了这么多定理,终于进入到了今天的重头戏,求证霍夫丁不等式。

它是我们证明UCB算法的关键武器。

在推导霍夫丁不等式之前,我们还需要掌握一个叫做琴生不等式的定理,这里会用到它的一个推论:

f(x)是凸函数,关于具体的证明过程,这里不再赘述,有想了解凸函数性质的友友,可以查阅下面这一篇文章:

什么是凸函数以及如何判断函数是否为凸函数-CSDN博客文章浏览阅读1.8w次,点赞27次,收藏140次。这里写自定义目录欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markd_凸函数https://blog.csdn.net/WoAiChiXueGao_/article/details/122204012我们得到了凸函数的性质,先求单一的独立随机变量霍夫丁边界,这个问题得出的结论叫做霍夫丁引理。

霍夫丁引理是霍夫丁不等式的不完全形态,理解它有助于我们推导多序列随机变量的霍夫丁边界。

以下是推导过程:

更为清晰的证明过程我放在了栏目的最后。

这是标准的霍夫丁引理求解过程。

在查阅资料之前,我尝试用函数求极值的方式证明不得式,发现霍夫丁引理只存在于s大于等于零的情况才能恒成立,后来复盘了一下上面的标准答案,后知后觉它的证明过程,也默认了s是大于等于零的。

对于矩母函数的理解,我还不太深入,所以才导致犯了这样一个错误。

现在附上我自己的证明过程,全程导导导。

证明过程有些复杂,不想看的友友可以跳过。

霍夫丁证明过程标准答案(附霍夫丁引理和霍夫丁不等式)icon-default.png?t=N7T8https://www.cnblogs.com/qizhou/p/12843557.html霍夫丁不等式(完全体):

以下是它的定义:

霍夫丁不等式的目的,是求一系列随机变量序列的平均期望边界。

在独立同分布的重复实验当中,这一系列的随机变量可以看成是同一个个体的多次实验数据。

它们具有相同的分布,所以可以通过霍夫丁引理来推导霍夫丁不等式。

具体推导过程如下:

至此,霍夫丁不等式推导完毕。

让我们稍作休息,进入接下来的算法推导。

UCB算法原理

霍夫丁不等式给独立随机变量数据的期望值设定了一个边界,这个边界就是我们要求的置信区间上界。

在多臂老虎机里,每一次试验都是独立的且重复的,同一台老虎机每次试验出的数据,都遵循着未知且相同的分布。

假设我们探讨的多臂老虎机的每一臂,都服从subGaussion假设,即每个老虎机都呈亚高斯分布,我们可以得到如下定义。

根据亚高斯分布的定义我们可以得知,它适用于霍夫丁定理及霍夫丁不等式求总平均期望的边界。

与此同时,根据定义点2,我们还能确定霍夫丁引理中的,(b-a)^2/8,实际上就等价于亚高斯分布中的参数б^2/2。

我么将其整体待入至霍夫丁不等式,于是就得到了亚高斯分布下的霍夫丁不等式变体:

接下来,我们就可以开始推导UCB算法了。

      是不是看起来一目了然?

      我们之所以将参数δ、ε如此设置,是为了与UCB算法最终形式逼近,相当于从结果推导过程。实际上的UCB算法推导,还需要考虑将δ与N联系起来,从而影响所得的置信区间范围。

UCB算法bound证明

bound,意为遗憾界,它是体现UCB算法稳定性的一种指标。

在界限证明部分,UCB算法为我们展示了其遗憾界的特性。

它确保了无论何时,算法的决策遗憾都不会超过一个预先设定的界,确保了策略的稳健性。

关于UCB算法bound的证明,就不在这里详细列出,有感兴趣的友友可以查看Auer的经典论文。

实现后悔最小化和最优手臂识别的pare-to边界icon-default.png?t=N7T8https://arxiv.org/pdf/1711.03539

UCB算法在推荐中的应用

现在,我们可以着手搭建测试环境,用来验证UCB在推荐问题中的效果。

原文例子:代码实现icon-default.png?t=N7T8https://segmentfault.com/a/1190000018871668

数据集下载地址:

 U.S. Supermarket Data (kaggle.com)

这里用一个商业案例来做例子。假设有一个汽车公司为了一个车做了十个广告ad1-ad10,这个公司需要知道哪个广告投放后,点击率最高。这组数据集是在模拟环境得到的,若值为1则指的是这个用户点击了这个广告。

 示例代码如下:

UCB算法在实际应用当中还需要搭配其他一些推荐框架进行适配,对于不同领域的推荐问题,也会进一步进行优化和变体。

### 回答1: UCB (Upper Confidence Bound) 算法的计算复杂度主要取决于选择策略的实现。在最基本的实现中,需要进行多次试验来估计每个选项的价值,这需要花费 O(N*T) 的时间,其中 N 是选项的数量,T 是试验的次数。在每次试验中,需要计算每个选项的 UCB 值,这需要 O(N) 的时间。因此,总的计算复杂度为 O(N^2*T) ### 回答2: UCB计算复杂度是指在计算机科学中用来分析算法的性能的一种方法。计算复杂度用于衡量算法在执行时所需的时间和空间资源的消耗。 计算复杂度的计算可以分为时间复杂度和空间复杂度两个方面。时间复杂度是指算法在执行时所需要的时间资源的消耗,通常以算法中基本操作的执行次数表示。而空间复杂度是指算法在执行时所需要的存储空间的消耗,通常以算法中所使用的额外空间的大小表示。 在计算时间复杂度时,可以通过对算法中每个操作的时间复杂度进行加和来计算总的时间复杂度。常见的操作时间复杂度有O(1)(常量时间复杂度)、O(n)(线性时间复杂度)、O(nlogn)(对数线性时间复杂度)等等。当某个算法的时间复杂度为O(1)时,表示该算法的执行时间与问题规模无关,执行时间固定。 在计算空间复杂度时,可以通过对算法中每个变量或数据结构的空间消耗进行加和来计算总的空间复杂度。常见的空间复杂度有O(1)(常量空间复杂度)、O(n)(线性空间复杂度)、O(n^2)(平方空间复杂度)等等。当某个算法的空间复杂度为O(1)时,表示该算法的空间消耗固定,与问题规模无关。 计算复杂度的目的是为了评估算法的执行效率和资源消耗,帮助我们选择更合适的算法来解决问题。一般来说,时间复杂度和空间复杂度是一对矛盾的指标,往往需要在二者之间进行权衡,找到较优的算法方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值