前言:
UCB算法是为解决多臂老虎机不确定性衡量问题衍生出来的算法,关于什么是多臂老虎机问题,本文不再赘述,还未了解的同学推荐看下这篇文章。
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是大于等于零的。
对于矩母函数的理解,我还不太深入,所以才导致犯了这样一个错误。
现在附上我自己的证明过程,全程导导导。
证明过程有些复杂,不想看的友友可以跳过。
霍夫丁证明过程标准答案(附霍夫丁引理和霍夫丁不等式)https://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边界https://arxiv.org/pdf/1711.03539
UCB算法在推荐中的应用
现在,我们可以着手搭建测试环境,用来验证UCB在推荐问题中的效果。
原文例子:代码实现https://segmentfault.com/a/1190000018871668
数据集下载地址:
U.S. Supermarket Data (kaggle.com)
这里用一个商业案例来做例子。假设有一个汽车公司为了一个车做了十个广告ad1-ad10,这个公司需要知道哪个广告投放后,点击率最高。这组数据集是在模拟环境得到的,若值为1则指的是这个用户点击了这个广告。
示例代码如下:
UCB算法在实际应用当中还需要搭配其他一些推荐框架进行适配,对于不同领域的推荐问题,也会进一步进行优化和变体。