本篇的主题是对Upper Conference Bound(UCB)策略进行一个理论上的解释补充,主要探讨UCB方法的由来与相关公式的推导。

UCB是一种动作选择策略,主要用来解决epsilon-greedy在选择时的低效率问题。对于解释UCB的使用机理上,我认为下面这篇文章写的还不错,深入浅出,只不过在公式推导上有一点点问题:

Multi-Armed Bandit: UCB (Upper Bound Confidence)

我们先来说一说epsilon-greedy策略在选择动作时有什么问题。如果epsilon值较小,例如epsilon = 0.1,那么每次实验都有10%的概率是随机选择动作,如果K值(选择较多)较大的话,这样的选择效率是较低的。为什么说这样的选择效率是较低的,因为在一定的实验次数内,epsilon-greedy只能大概率判断出最优动作,而对于其它动作的收益如何是没办法判断的。举个例子吧,如果说epsilon-greedy策略可以帮你找到最好吃的那家餐厅,那么UCB就可以帮你给餐厅的好吃程度排个序,但UCB的坏处也显而易见,这个排序并非是与真是期望情况严格相符的排序,只是估计而已,所以UCB常用于个性化推送而不适用于寻求最优。

为什么epsilon-greedy策略不能做出排序呢?实际上在实验次数不变的情况下,很有可能某些动作的实验次数不够多,这样很难保证我们由实验统计出的各个动作收益均值与实际的收益均值相吻合。其实在概率统计上,由均值产生的统计概率与真实期望总是会产生一定的差值,这个差值小于一个较小值delta的概率就可以称之为置信度。举个例子,如若置信度为95%时,我们就可以说,有大于95%的可能性,估计的均值与实际的期望之差小于delta,用数学语言描述出来就是,alpha为置信度:

我们将式子稍稍变换一下形式:

依据中心极限定理,可知:

所以有:

这里的delta与n皆为大于0的数,依据不等式[1],

这里我们可以令置信度  ,即可计算出delta关于alpha的等式:

为了让置信度尽可能的高,在实际运用中,直接令 ,N为实验次数。

所以UCB策略才有如下的形式:

参考文献:

[1] New Exponential Bounds and Approximations for the Computation of Error Probability in Fading Channels, Marco Chiani, Senior Member, IEEE, Davide Dardari, Member, IEEE, and Marvin K. Simon, Fellow, IEEE. 

【RL系列】Multi-Armed Bandit笔记补充(二)的更多相关文章

  1. 【RL系列】Multi-Armed Bandit笔记补充(一)

    在此之前,请先阅读上一篇文章:[RL系列]Multi-Armed Bandit笔记 本篇的主题就如标题所示,只是上一篇文章的补充,主要关注两道来自于Reinforcement Learning: An ...

  2. 【RL系列】Multi-Armed Bandit笔记——UCB策略与Gradient策略

    本篇主要是为了记录UCB策略与Gradient策略在解决Multi-Armed Bandit问题时的实现方法,涉及理论部分较少,所以请先阅读Reinforcement Learning: An Int ...

  3. 【RL系列】Multi-Armed Bandit问题笔记

    这是我学习Reinforcement Learning的一篇记录总结,参考了这本介绍RL比较经典的Reinforcement Learning: An Introduction (Drfit) .这本 ...

  4. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  5. [.NET] 《Effective C#》读书笔记(二)- .NET 资源托管

    <Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

  6. [.NET] 《Effective C#》快速笔记(二)- .NET 资源托管

    <Effective C#>快速笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

  7. 《Effective C#》快速笔记(二)- .NET 资源托管

    简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内存,我们并不需要去担心内存泄漏,资源分配和指针初始化等问题.不过,它也并非万能 ...

  8. C#可扩展编程之MEF学习笔记(二):MEF的导出(Export)和导入(Import)

    上一篇学习完了MEF的基础知识,编写了一个简单的DEMO,接下来接着上篇的内容继续学习,如果没有看过上一篇的内容, 请阅读:http://www.cnblogs.com/yunfeifei/p/392 ...

  9. Dynamic CRM 2013学习笔记(二十八)用JS动态设置字段的change事件、必填、禁用以及可见

    我们知道通过界面设置字段的change事件,是否是必填,是否可见非常容易.但有时我们需要动态地根据某些条件来设置,这时有需要通过js来动态地控制了. 下面分别介绍如何用js来动态设置.   一.动态设 ...

随机推荐

  1. 【node.js】Express 框架

    Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能的网 ...

  2. oracle之修改/忘记用户密码

    一.修改/忘记用户密码: ## 修改oracle用户名和密码 sqlplus /nolog ## DBA角色进入 conn /as sysdba; ## 查看用户列表 select username ...

  3. django之models学习总结

    from django.db import models # Create your models here. class Classes(models.Model): ''' 班级表 ''' tit ...

  4. Redis 可视化工具 Redis Desktop Manager 和 treeNMS 的使用

    这里介绍两个 Redis 可视化工具.Redis Desktop Manager 和 treeNMS. 一.Redis Desktop Manager 下载地址:https://redisdeskto ...

  5. 二、用Delphi10.3 创建一条JSON数据的第二种方法,并格式化输出

    一.用Delphi10.3构造一个JSON数据的第二种方法,并格式化输出,代码如下: uses //System.JSON, System.JSON.Types, System.JSON.Writer ...

  6. u-boot-1.1.6第2阶段入口函数start_armboot分析

    学习目标: 1.分析u-boot-1.1.6第2阶段入口函数void start_armboot (void),熟悉该函数所实现的功能 2.为后面能够掌握u-boot-1.1.6如何启动内核过程打下基 ...

  7. 使用Random随机生成[min,max]之间的整数:

    如下代码是生成范围在min到max之间的随机整数(包括min和max):   import java.util.Random; /** * 生成[min,max]的随机整数 * @author mei ...

  8. 一维码UPC E简介及其解码实现(zxing-cpp)

    UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定.连续性的条  码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码. UPC码仅可 ...

  9. 【HNOI2014】米特运输

    题面 题解 首先我们需要看懂题目 然后我们需要发现一个结论 只要有一个节点的权值确定,那么整棵树的权值就确定了 就像这样:(图片来源于网络,侵删) 然后我们根据这张图片,可以设\(f[i] = a[i ...

  10. quartz 任务高度的动态修改

    package com.example.demo.controller; import org.quartz.*;import org.quartz.impl.StdSchedulerFactory; ...