AI学习笔记之——多臂老虎机(Multi-armed bandit)问题

简介: 上一篇文章简要介绍了一下强化学习,强化学习是一个非常庞大的体系,与监督学习和非监督学习相比,其广度和深度都大的多,涉及到很多经典的决策算法,对统计学知识有很高的依赖。

上一篇文章简要介绍了一下强化学习,强化学习是一个非常庞大的体系,与监督学习和非监督学习相比,其广度和深度都大的多,涉及到很多经典的决策算法,对统计学知识有很高的依赖。作为强化学习的基础,这篇文章研究一下这个领域的一个经典决策问题——多臂老虎机问题。

img_f112fd1bf65f250b6d629c1c06408291.png

1.探索-利用困境(Explore-Exploit dilemma)

多臂老虎机是一个有多个拉杆的赌博机,每一个拉杆的中奖几率是不一样的,问题是:如何在有限次数内,选择拉不同的拉杆,获得最多的收益。

假设这个老虎机有3个拉杆,最笨的方法就是每个拉杆都试几次,找到中奖概率最大的那个拉杆,然后把之后有限的游戏机会都用在这个拉杆上。

然而这个方法并不是可靠的,因为每个拉杆试1000次显然比试10次所获得的中奖概率(预估概率)更加准确。比如你试了10次,其中那个本来中奖概率不高的拉杆,有可能因为你运气好,会给你一个高概率中奖的假象。

在有限次数下,你到底是坚持在你认为中奖概率高的拉杆上投入更多的次数呢(Exploit),还是去试试别的拉杆(Explore)呢?如何分配Explore和Exploit的次数的问题,就是著名的探索-利用困境(Explore-Exploit dilemma(EE dilemma))

2. ε贪婪方法(ε -Greedy method)

这个方法就是设定一个ε值, 用来指导到底是Explore 还是 Exploit。比如将ε设定为0.1,以保证将10%的次数投入在探索(Explore),90%的次数用于利用(Exploit)。

具体操作就是,每次玩的时候就抽一个0到1的随机数,如果这个数大于ε,则玩你认为中奖概率(预估中奖概率)最大的那个拉杆。如果小于ε,则随机再选择一个拉杆,得到收益后,更新这个拉杆的预估中奖概率,以便于下次选择做参考。

3. 预估回报方法(Estimating Bandit Rewards)

ε贪婪方法最难的就是如何科学地选择ε,而预估回报方从另一个角度,抛弃了ε,只保留其"利用"(Exploit)的部分,用预设中奖概率"天花板"的方法来解决Explore-Exploit dilemma.

首先, 将老虎机每个拉杆都设置一个比较高的预估中奖概率(比如都是100%),然后每拉一次选中的拉杆, 这个拉杆的的预估概率就会改变。

比如,我第一次选择拉第一个拉杆,发现没有中奖,那这个拉杆的预估中奖概率就从100%变成了50%了。下一次Exploite选择拉杆的时候,第一个拉杆的预估概率就不是最高了,我们就去找这个时候预估概率最高的拉杆来拉,每拉一次更新一下这个拉杆的预估中奖概率。

理论上来说真实概率高的拉杆其预估概率下降的速度会比真实概率低的拉杆慢,所以多试几次之后就能找到真实概率最高的那个拉杆。

4. UCB1 (Bandit Algorithms Continued)方法

我们发现上面两个方法中,某个拉杆预估的中奖概率是随着这个拉杆被拉动的次数而变化的。我们是通过预估概率作为评判标准,来决定去拉哪一个拉杆。

如果一个拉杆没有被拉到,那么这个拉杆的预估中奖概率就不会改变。然而通过直觉就可以理解,一个拉杆的预估概率的准确度是跟你总共拉了多少次拉杆(所有的拉杆被拉的次数)相关的,拉得越多预估概率就越准确。这个时候我们引入UCB概率,而不是预估概率来作为选择拉杆的评判标准。

这里涉及到的理论知识叫做Chernoff-Hoeffding bound理论。大意就是,真实概率与预估概率的差距是随着实验(拉杆)的次数成指数型下降的。

根据这个理论就可以引入UCB概率,公式如下:

img_f6978b534cc9a84a8846b4066b3efb3f.png

其中X UCB-j是第j个拉杆的的UCB概率,X j是这个拉杆的预估概率,N是总共实验的次数,N j第j个拉杆被拉到的次数。

同样的这个算法只有"利用"(Exploit)的部分,将判断Exploit的标准从预估中奖概率改成UCB概率即可。

总结

上文我试图用最简单的语言和最少的公式解释强化学习中的一个经典问题和几个经典算法,当然还有一个更好的算法叫贝叶斯方法,会用到之前介绍的贝叶斯定理以及Bernoulli likeihood 的更多数学知识,我会找机会单独来讲讲。


相关文章
AI学习笔记之——强化学习(Reinforcement Learning, RL)
AI学习笔记之——如何理解机器学习(Machine Learning)
人工智能学习笔记之——人工智能基本概念和词汇
人工智能学习笔记二 —— 定义问题

文章首发steemit.com 为了方便墙内阅读,搬运至此,欢迎留言或者访问我的Steemit主页

目录
相关文章
|
3月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
3月前
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
|
1天前
|
人工智能 自然语言处理 搜索推荐
Open Notebook:开源 AI 笔记工具,支持多种文件格式,自动转播客和生成总结,集成搜索引擎等功能
Open Notebook 是一款开源的 AI 笔记工具,支持多格式笔记管理,并能自动将笔记转换为博客或播客,适用于学术研究、教育、企业知识管理等多个场景。
34 0
Open Notebook:开源 AI 笔记工具,支持多种文件格式,自动转播客和生成总结,集成搜索引擎等功能
|
3月前
|
人工智能 并行计算 PyTorch
AI计算机视觉笔记十八:Swin Transformer目标检测环境搭建
本文详细记录了Swin Transformer在AutoDL平台上的环境搭建与训练过程。作者从租用GPU实例开始,逐步介绍了虚拟环境的创建、PyTorch安装、mmcv及mmdetection的配置,并解决了安装过程中遇到的各种问题,如cython版本冲突等。最后,通过修改代码实现目标检测结果的保存。如需了解更多细节或获取完整代码,请联系作者。原文链接:[原文链接](请在此处插入原文链接)。
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
AI计算机视觉笔记三十二:LPRNet车牌识别
LPRNet是一种基于Pytorch的高性能、轻量级车牌识别框架,适用于中国及其他国家的车牌识别。该网络无需对字符进行预分割,采用端到端的轻量化设计,结合了squeezenet和inception的思想。其创新点在于去除了RNN,仅使用CNN与CTC Loss,并通过特定的卷积模块提取上下文信息。环境配置包括使用CPU开发板和Autodl训练环境。训练和测试过程需搭建虚拟环境并安装相关依赖,执行训练和测试脚本时可能遇到若干错误,需相应调整代码以确保正确运行。使用官方模型可获得较高的识别准确率,自行训练时建议增加训练轮数以提升效果。
|
3月前
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记三十:yolov8_obb旋转框训练
本文介绍了如何使用AUTODL环境搭建YOLOv8-obb的训练流程。首先创建虚拟环境并激活,然后通过指定清华源安装ultralytics库。接着下载YOLOv8源码,并使用指定命令开始训练,过程中可能会下载yolov8n.pt文件。训练完成后,可使用相应命令进行预测测试。
|
3月前
|
传感器 人工智能 算法
AI计算机视觉笔记二十七:YOLOV8实现目标追踪
本文介绍了使用YOLOv8实现人员检测与追踪的方法。通过为每个人员分配唯一ID,实现持续追踪,并可统计人数,适用于小区或办公楼出入管理。首先解释了目标检测与追踪的区别,接着详细描述了使用匈牙利算法和卡尔曼滤波实现目标关联的过程。文章提供了基于IOU实现追踪的具体步骤,包括环境搭建、模型加载及追踪逻辑实现。通过示例代码展示了如何使用YOLOv8进行实时视频处理,并实现人员追踪功能。测试结果显示,该方法在实际场景中具有较好的应用潜力。
|
3月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二十二:基于 LeNet5 的手写数字识别及训练
本文介绍了使用PyTorch复现LeNet5模型并检测手写数字的过程。通过搭建PyTorch环境、安装相关库和下载MNIST数据集,实现了模型训练与测试。训练过程涉及创建虚拟环境、安装PyTorch及依赖库、准备数据集,并编写训练代码。最终模型在测试集上的准确率达到0.986,满足预期要求。此项目为后续在RK3568平台上部署模型奠定了基础。
|
3月前
|
人工智能 TensorFlow 算法框架/工具
AI计算机视觉笔记十七:实例分割
本文介绍了计算机视觉中的实例分割技术,通过结合目标检测和语义分割的方法,实现对图像中不同实例的精确区分与标记。以识别多只猫为例,详细描述了使用Mask R-CNN模型进行实例分割的过程,并提供了相关代码及环境搭建指南。通过实例演示,展示了如何利用该技术成功识别并分割出图像中的各个对象。
|
3月前
|
人工智能 并行计算 测试技术
AI计算机视觉笔记三十一:基于UNetMultiLane的多车道线等识别
该项目基于开源数据集 VIL100 实现了 UNetMultiLane,用于多车道线及车道线类型的识别。数据集中标注了六个车道的车道线及其类型。项目详细记录了从环境搭建到模型训练与测试的全过程,并提供了在 CPU 上进行训练和 ONNX 转换的代码示例。训练过程约需 4 小时完成 50 个 epoch。此外,还实现了视频检测功能,可在视频中实时识别车道线及其类型。