Bandit算法学习[网站优化]01——Multiarmed Bandit 算法引入

news2024/11/15 12:46:59

Bandit算法学习[网站优化]01——Multiarmed Bandit 算法引入

参考资料

  1. White J. Bandit algorithms for website optimization[M]. " O’Reilly Media, Inc.", 2013.
  2. https://github.com/johnmyleswhite/BanditsBook
  3. easy-rl

一、探索与利用(exploration-exploitation)

在强化学习里面,探索和利用是两个很核心的问题。 探索即我们去探索环境,通过尝试不同的动作来得到最佳的策略(带来最大奖励的策略)。 利用即我们不去尝试新的动作,而是采取已知的可以带来很大奖励的动作。 在刚开始的时候,强化学习智能体不知道它采取了某个动作后会发生什么,所以它只能通过试错去探索,所以探索就是通过试错来理解采取的动作到底可不可以带来好的奖励。利用是指我们直接采取已知的可以带来很好奖励的动作。所以这里就面临一个权衡问题,即怎么通过牺牲一些短期的奖励来理解动作,从而学习到更好的策略。

下面举一些探索和利用的例子。 以选择餐馆为例,利用是指我们直接去我们最喜欢的餐馆,因为我们去过这个餐馆很多次了,所以我们知道这里面的菜都非常可口。 探索是指我们用手机搜索一个新的餐馆,然后去尝试它的菜到底好不好吃。我们有可能对这个新的餐馆感到非常不满意,这样钱就浪费了。 以做广告为例,利用是指我们直接采取最优的广告策略。探索是指我们换一种广告策略,看看这个新的广告策略可不可以得到更好的效果。 以挖油为例,利用是指我们直接在已知的地方挖油,这样可以确保挖到油。 探索是指我们在一个新的地方挖油,这样就有很大的概率可能不能发现油田,但也可能有比较小的概率可以发现一个非常大的油田。 以玩游戏为例,利用是指我们总是采取某一种策略。比如,我们玩《街头霸王》游戏的时候,采取的策略可能是蹲在角落,然后一直出脚。这个策略很可能可以奏效,但可能遇到特定的对手就会失效。 探索是指我们可能尝试一些新的招式,有可能我们会放出“大招”来,这样就可能“一招毙命”

与监督学习任务不同,强化学习任务的最终奖励在多步动作之后才能观察到,这里我们不妨先考虑比较简单的情形:最大化单步奖励,即仅考虑一步动作。需注意的是,即便在这样的简单情形下,强化学习仍与监督学习有显著不同,因为智能体需通过试错来发现各个动作产生的结果,而没有训练数据告诉智能体应当采取哪个动作

想要最大化单步奖励需考虑两个方面:一是需知道每个动作带来的奖励,二是要执行奖励最大的动作。若每个动作对应的奖励是一个确定值,那么尝试遍所有的动作便能找出奖励最大的动作。然而,更一般的情形是,一个动作的奖励值是来自一个概率分布,仅通过一次尝试并不能确切地获得平均奖励值。

实际上,单步强化学习任务对应于一个理论模型,即K-臂赌博机(K-armed bandit),也被称为多臂赌博机**(multi-armed bandit)**。

如图 1.23 所示,K-臂赌博机有 K个摇臂,赌徒在投入一个硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币,但这个概率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的奖励,即获得最多的硬币。 若仅为获知每个摇臂的期望奖励,则可采用仅探索(exploration-only)法:将所有的尝试机会平均分配给每个摇臂(即轮流按下每个摇臂),最后以每个摇臂各自的平均吐币概率作为其奖励期望的近似估计。若仅为执行奖励最大的动作,则可采用仅利用(exploitation-only)法:按下目前最优的(即到目前为止平均奖励最大的)摇臂,若有多个摇臂同为最优,则从中随机选取一个。

显然,仅探索法能很好地估计每个摇臂的奖励,却会失去很多选择最优摇臂的机会;仅利用法则相反,它没有很好地估计摇臂期望奖励,很可能经常选不到最优摇臂。因此,这两种方法都难以使最终的累积奖励最大化。

事实上,探索(估计摇臂的优劣)和利用(选择当前最优摇臂)这两者是矛盾的,因为尝试次数(总投币数)有限,加强了一方则自然会削弱另一方,这就是强化学习所面临的探索-利用窘境(exploration-exploitation dilemma)。显然,想要累积奖励最大,则必须在探索与利用之间达成较好的折中。

img

二、为什么使用Multiarmed Bandit算法

2.1 我们打算做什么

在描述算法之前,需要确保当我们使用“成功”(success)这个词时,我们都是指相同的事情。今后,我们只用“success”一词来形容可衡量的成就,例如:

  • 流量:一个变更是否会增加网站登录页面的流量?
  • 转换:一个变更是否会让更多的访客转换为回头客?
  • 销售额:一个变更是否会增加新客户或现有客户在网站上进行的购买数量?
  • CTR:一个变更是否会增加访问者点击广告的次数?

我们将开始把衡量成功的标准称为奖励(reward),并把我们的潜在变更列表(list of potential changes)称为臂(arms)。这些术语将帮助我们使我们对算法的讨论更加准确。

接下来我们将说明传统A/B测试的不理想原因。

2.2 网页规模的A/B测试

A/B测试,通常涉及将新的网络用户随机分配到两个组中的一个:A组或B组。这种将用户随机分配到组的过程将持续一段时间,直到网络开发人员确信选项A比选项B更成功,或者反之亦然,选项B比选项A更成功。之后,网络开发人员将所有未来的用户分配到更成功的网站版本,并关闭网站的较差版本。

这种尝试新想法的试验性方法在过去非常成功,那我们为什么还要用bandit算法呢?

回答这个问题需要我们回到探索和利用的概念上来。标准A/B测试包括:

  • 一个短时间的纯探索阶段(pure exploration),将相同数量的用户分配给A组和B组。
  • 很长一段时间的利用阶段(pure exploitation),在这段时间里,把所有用户都送到你的网站更成功的版本,再也不会回到看起来更差的选项上来。

这为什么是一个差的策略呢?

  • 这种办法直接从探索跳跃到了利用,或许会有更平滑的方式。
  • 为了获取尽可能多的数据,在探索阶段,这种方法会浪费资源去探索较差的选项。但是你不会想去收集较差选择的数据。

bandit算法为这两个问题提供了解决方案:

  1. 减少了探索的数量,而不是要求突然跳跃
  2. 在探索过程中将你的资源集中在更好的选项上,而不是浪费时间在过度探索的较差选项上。

事实上,bandit算法解决这两种问题的方式是相同的,因为随着时间的推移逐渐专注于最佳可用选项。在学术文献中,这种确定最佳可用选项的过程被称为收敛(convergence)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Next.js i18n国际化实现方案(支持ReactNode类型、可传参)

前言 抛开Next.js框架不谈,想必其他项目也经常会遇到国际化方案,大概逻辑都是差不多的,只是说这次本人碰巧在Next上的项目有这样的需求,并记录下来。 实现思路: 其实不从代码角度上讲的话,无非是引入一个…

【王道操作系统】3.1.6 分页存储(页号、页偏移量等)

分页存储(页号、页偏移量等) 文章目录分页存储(页号、页偏移量等)1.为什么学习分页存储2.基本分页存储管理的思想3.分页存储管理的重要概念4.如何实现地址的转换4.1 如何计算页号和页偏移量4.2 分页存储的逻辑结构4.3 如何知道页面在内存中的起始地址1.为什么学习分页存储 2.基…

Qt扫盲-QSS语法概述

QSS语法概述一、语法规则二、选择器类型三、子控件四、伪态五、冲突解决六、样式层叠七、样式继承八、含命名空间样式设置九、QObject 属性设置概述:QSS也叫Qt样式表,Qt样式表术语和语法规则几乎与HTML CSS的术语和语法规则相同。如果已经了解CSS&#x…

【Vue2+Element ui通用后台】整体布局、数据展示、axios封装

文章目录Home组件表格Axios封装Home组件 我们新建 Home 组件来展示右侧的内容 整体布局我们使用layout布局,通过基础的 24 分栏,迅速简便地创建布局。由于左侧占比较小,我们分为 8 和 16 即可 然后每个卡片样式的部分,我们使用…

flask session机制

信息收集 主页是一个登陆界面其他按钮点击不了,源代码也没什么东西。 除了admin用户不能直接登陆,其他用户都可以。 打开以后是一个文件上传,然后根据提示只能上传zip文件,我们随便上传一个 我在zip文件里面写了一个/etc/passw…

prometheus监控报警部署Alertmanager

Prometheus将告警分为两个部分:Prometheus 和 Alertmanager。其中Prometheus配置告警触发规则,对指标进行监控和计算,将再将告警信息发送到Alertmanager中。Alertmanager对告警进行管理,比如合并抑制等操作。 wget https://github…

10.移动端笔记-响应式布局

1.响应式开发 原理:使用媒体查询针对不同宽度的设备进行布局和样式设置,从而适配不同的设备 2.响应式布局容器 响应式需要一个父级做为布局容器,配合子级元素实现变化效果 原理:在不同屏幕下,通过媒体查询改变这个…

HAProxy的安装

1、将HAProxy上传到opt目录下 2、 解压到/usr/local/src tar -xvf haproxy-1.5.18.tar.gz -C /usr/local/src 3、进入解压后的目录,查看内核版本,进行编译 cd /usr/local/src/haproxy-1.5.18 uname -r make TARGETlinux310 PREFIX/usr/local/haproxy …

Keil MDK 配置详解与调试技术

工程配置介绍① 通用配置选项;② 操作系统选项;③ 勾选后可以减小镜像尺寸,加快运行速度;④ 浮点配置;⑤ 加载简要配置,分散加载情况需要配置;编译器输出选项;可执行…

今年你拿到了几个月的年终奖?

近期听到最多的三个消息:阳了 、 裁员 、 年终奖。 今年无疑是非常艰难的一年,无论国内还是国外裁员貌似从年初到年末从未停止过,加上疫情放开之后,大部分人都加入了羊群的行列,让我们的生活雪上加霜。 腾讯今年也陆…

结构化分析方法

目录 1.概述 2.数据流图 3.结构图 4.一个例子 4.1.需求 4.2.数据流图 4.3.结构图 5.辅助工具 5.1.数据字典 5.2.加工说明 1.概述 结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法…

ubuntu22.04搭建qemu环境测试内核

ubuntu22.04搭建qemu环境测试内核安装qemu创建qemu目录编译内核编译文件系统启动qemu安装qemu sudo apt-get install qemu krokodilkrokodil-SY-ZL-H110N-D3V:~/workspace$ dpkg -l | grep qemu ii ipxe-qemu 1.21.1git-20220113.fbbdc392…

R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散化

本文介绍基于R语言中的GD包,依据栅格影像数据,实现自变量最优离散化方法选取与执行,并进行地理探测器(Geodetector)操作的方法。 首先,在R语言中进行地理探测器操作,可通过geodetector包、GD包等…

Qt扫盲-QSS概述

QSS概述一、概述二、详细一、概述 QSS 其实是Qt样式表,Qt样式表是Qt界面的一种强大的机制,除了通过继承QStyle已经可以实现的功能外,它还允许您自定义窗口组件的外观。Qt样式表的概念、术语和语法很大程度上受到HTML层叠样式表(CSS)的启发。…

作为网络工程师,你知道什么是VLAN 跳跃攻击吗?

您听说过 VLAN 跳跃吗?这是黑客用来访问他们无权进入的网络的一种技术。在本文中,我们将探讨什么是 VLAN 跳跃、它的工作原理以及恶意行为者如何利用它。我们还将了解可用于执行 VLAN 跳跃的工具以及企业如何保护自己免受这些攻击。 一、什么是VLAN&…

商业智能BI工具评估指南

随着行业软件业务功能的不断完善,同行业软件日趋趋同,竞争更加白热化。同时,随着企业数字化转型的深入,企业自身对数据的使用需求越来越强烈。在用户的业务处理过程中,在业务软件内直接给用户提供数据分析结果具有更高…

认识python和python基础知识点

目前python版本分为python2和python3,主流都是使用Python3,因为python2到2020年开源社区就不在维护了,目前公司开发使用也基本都是python3.下面的演示基于python3 Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于P…

基于Java springboot 疫情在线网课管理系统

🍅 作者主页 超级帅帅吴 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 文章目录一、前言介绍1.1 背景及意义1.2 系统运行环境二、系统设计2.1系统架构设计2.2角色功能图2.3登录时序图设计三、…

文件系统的认识

文件系统磁盘磁盘的物理结构磁盘的存储结构磁盘的逻辑抽象结构对磁盘组进行管理创建和删除文件时,os做了什么?创建一个文件时,os做了什么?删除一个文件,os做了什么?制作软硬链接软连接和硬链接区别制作静、…

Vue 使用过程中的问题总结(npm Nodejs Vue Vue-cli)

目录 关系图示 vue和webpack 的关系 Node.js npm package.json 有什么作用? Vue2 和 Vue3的区别 Vue-cli的版本区别 Vue在VsCode中的常见配置 Vuter Live server Prettier vscode vue 自动格式化 Vue.js devtools 常见报错 Vue 报错error:0308010C:di…