Python 运筹优化12 eps greedy 解读

说明

Epsilon-Greedy(ε-Greedy)是一种用于解决多臂LH机问题(Multi-Armed Bandit Problem)的策略,通常在强化学习中使用。在多臂LH机问题中,有多个选项(臂),每个选项都有一个不同的奖励概率分布,目标是找到一个最佳的策略来最大化总体奖励。

Epsilon-Greedy 算法基于以下思想:

在每个时刻,以概率 ε(epsilon)选择一个随机的动作,称为“探索”。 在以概率 1-ε 选择当前已知的最佳动作,称为“利用”。 通过这种方式,ε-Greedy 在探索(尝试新动作)和利用(选择已知最佳动作)之间进行权衡,以便在尽量不错过最佳动作的同时,也能够发现新的潜在最佳动作。

内容

0 基础对象

ad 基础对象,通过display_ad来获得奖励

class BernoulliBandit(object):
    def __init__(self, p):
        self.p = p
    
    def display_ad(self):
        reward = np.random.binomial(n=1, p=self.p)
        return reward

1 参数

在这段代码中,ε 的值被设置为 0.1,表示有 10% 的概率进行随机选择,而有 90% 的概率选择当前已知的最佳动作。

n_prod 表示总的尝试次数,n_ads 是广告的数量(即臂的数量)。Q 是每个臂的估计值,N 是每个臂被选择的次数。total_reward 是累计奖励,avg_rewards 是用于存储每次尝试的平均奖励的列表。

eps = 0.1
n_prod = 100000
n_ads = len(ads)
Q = np.zeros(n_ads)
N = np.zeros(n_ads)
total_reward = 0
avg_rewards = []

下面进行迭代

ad_chosen = np.random.randint(n_ads)
for i in range(n_prod):
    R = ads[ad_chosen].display_ad()
    N[ad_chosen] += 1
    Q[ad_chosen] += (1 / N[ad_chosen]) * (R - Q[ad_chosen])
    total_reward += R
    avg_reward_so_far = total_reward / (i + 1)
    avg_rewards.append(avg_reward_so_far)
    
    # Select the next ad to display
    if np.random.uniform() <= eps:
        ad_chosen = np.random.randint(n_ads)
    else:
        ad_chosen = np.argmax(Q)

df_reward_comparison['e-greedy: {}'.format(eps)] = avg_rewards

这段代码是一个使用 ε-Greedy 算法进行多臂LH机问题求解的示例。在每一次尝试中,根据 ε 的概率选择随机动作或者选择当前已知的最佳动作。

ad_chosen = np.random.randint(n_ads):在初始时随机选择一个广告作为初始动作。

for i in range(n_prod)::循环 n_prod 次,模拟尝试的次数。

R = ads[ad_chosen].display_ad():显示选择的广告并获取奖励。

N[ad_chosen] += 1 和 Q[ad_chosen] += (1 / N[ad_chosen]) * (R - Q[ad_chosen]):更新选择的广告的次数和估计值。

total_reward += R:累计奖励。

avg_reward_so_far = total_reward / (i + 1):计算到目前为止的平均奖励。

avg_rewards.append(avg_reward_so_far):将平均奖励添加到列表中,以便后续分析。

接下来是选择下一个广告的步骤:

if np.random.uniform() <= eps::以 ε 的概率进行随机选择。
ad_chosen = np.random.randint(n_ads):如果随机数小于等于 ε,就随机选择一个广告。
else::否则,选择当前已知最佳的广告。
ad_chosen = np.argmax(Q):选择当前估计值最高的广告。
最后,df_reward_comparison['e-greedy: {}'.format(eps)] = avg_rewards 将每次尝试的平均奖励添加到数据帧 df_reward_comparison 中,用于后续比较不同算法的效果。

这段代码是一个完整的基于 ε-Greedy 算法的多臂LH机解决方案,可以用于选择最优的广告展示策略。

2 画图

greedy_list = [ 'e-greedy: 0.1']
df_reward_comparison[greedy_list].iplot(title="ε-Greedy Actions",
                                    dash = ['solid'], #, 'dash', 'dashdot', 'dot'],
                                    xTitle='Impressions', 
                                    yTitle='Avg. Reward')

在这里插入图片描述

3 总结

主要的精华部分在这一段,有点像拒绝采样。eps就是选择的不确定性,通过这个来进行随机游走。

    # Select the next ad to display
    if np.random.uniform() <= eps:
        ad_chosen = np.random.randint(n_ads)
    else:
        ad_chosen = np.argmax(Q)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CST电磁仿真的查看2D/3D结果和查看端口模式【基础教学】

查看2D/3D结果 场结果的定制化显示&#xff01; Navigation Tree > 2D/3D Results 当我们使用CST软件时&#xff0c;可以在Field Monitor中设置好需要查看的频点后运行仿真&#xff0c;仿真完成后就可以在NavigationTree中确认场结果。可以有多种类型的绘图展示仿真分析得…

ROM修改进阶教程------twrp下使用一键adb脚本进行清除 格式化data和刷写分区操作

一键刷机大多用于fast模式刷写,今天给友友来讲讲如何一键刷入twrp后不用触摸操作手机 。纯手动指令来清除分区 格式化data和刷写固件的操作。此操作不是sideload方式哦。边搜网络貌似也没有相关的文章。而twrp一般都习惯于手动触摸操作卡刷卡刷包。玩机类的经验主要是有一点点…

树莓派nmap扫描

debian系统安装nmap&#xff1a; sudo apt install nmap安装nmap完成后&#xff0c;输入 ip route 来查看当前Wi-Fi路由器的ip地址。 第一行的default via后显示的便是网关地址&#xff0c;也就是路由器地址。 获取到路由器ip地址后&#xff0c;在终端中输入&#xff1a; …

微信小程序Vue+uniapp餐饮美食订餐骑手配送系统9g60o

本小程序uniapp菜品帮采用Java语言和Mysql数据库进行设计&#xff0c;技术采用微信小程序&#xff0c;可以不安装App软件就实现订餐。本系统实现管理员和用户、商家、配送员四个角色的功能。用户主要在微信端操作&#xff0c;内容有菜品信息&#xff0c;用户可以在线点餐和管理…

Mac安装jadx

1、使用命令brew安装 : brew install jadx 输入完命令,等待安装完毕 备注&#xff08;关于Homebrew &#xff09;&#xff1a; Homebrew 是 MacOS 下的包管理工具&#xff0c;类似 apt-get/apt 之于 Linux&#xff0c;yum 之于 CentOS。如果一款软件发布时支持了 homebrew 安…

浮点数的由来及运算解析

数学是自然科学的皇后&#xff0c;计算机的设计初衷是科学计算。计算机的最基本功能是需要存储整数、实数&#xff0c;及对整数和实数进行算术四则运算。 但是在计算机从业者的眼中&#xff0c;我们知道的数学相关的基本数据类型通常是整型、浮点型、布尔型。整型又分为int8&a…

[AI OpenAI-doc] 延迟优化

本指南涵盖了一系列核心原则&#xff0c;您可以应用这些原则来改善在各种LLM相关用例中的延迟。这些技术来自于与广泛的客户和开发人员在生产应用程序上的合作&#xff0c;因此无论您正在构建什么——从细粒度的工作流程到端到端的聊天机器人&#xff0c;都应该适用&#xff01…

PostgreSQL建表语句 INT, INT2, INT4, INT8 分别对应Java,Go, Python什么数据类型?

&#x1f42f; PostgreSQL建表语句 INT, INT2, INT4, INT8 分别对应Java&#xff0c;Go, Python什么数据类型 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题…

【JVM】从三种认知角度重识JVM

目录 JVM概述 JVM主要功能 虚拟机是Java平台无关的保障 JVM概述 JVM&#xff1a;Java Virtual Machine,也就是Java虚拟机。 虚拟机&#xff1a;通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统&#xff08;物理上不存在&#xff09;。 JVM通…

Springboot + xxlJob注意事项

1. 部署 就是这个地址: https://gitee.com/xuxueli0323/xxl-job 由于xxl-job的思想是 调度中心负责调度任务,然后有执行器负责接受调度的信息,然后根据调度,执行任务中的具体逻辑 将 xl-job-admin 启动起来,操作xl-job-admin这个文件夹下的配置文件即可: 创建数据库 执行sql…

Kaspa是潜力金吗?那么如何获取,以bitget钱包为例

$KAS 这个币比较小众&#xff0c;华语区知道的不多&#xff0c;目前挖这个币的矿工也不多&#xff0c;但是大家都有一个默契&#xff0c;就是尽量不要宣传&#xff0c;先建设生态&#xff0c;自私的心理就是&#xff1a;自己先多挖些币。 简单介绍一下 #KASPA 这个项目&#x…

第二证券今日投资参考:银保渠道合作限制松绑 低空旅游借势起飞

昨日&#xff0c;两市股指盘中震动上扬&#xff0c;沪指一度涨近1%续创年内新高&#xff0c;创业板指一度涨超2%。到收盘&#xff0c;沪指涨0.83%报3154.32点&#xff0c;深证成指涨1.55%报9788.07点&#xff0c;创业板指涨1.87%报1900.01点&#xff0c;科创50指数涨2.26%&…

Linux提权--Rsync(未授权访问) Docker 组挂载

免责声明:本文仅做技术学习与交流... 目录 Rsync&#xff08;未授权访问&#xff09; 介绍: 靶场及过程: 提权过程&#xff1a; Docker 组挂载 原理: 复现&#xff1a; 利用&#xff1a; 具体操作: 1-确定是否有docker服务 2-查看用户是否在docker组里面 3-执行命…

apinto OpenAPI

OpenApi 上游 查询列表 查询详情 新增 { "name": "jg_upstream", "driver": "http", "description": "通过postman添加上游", "scheme": "HTTPS", "retry":"1", "…

1063 计算谱半径

solution 找出虚部和实部平方和的最大值&#xff0c;输出该最大值的开方&#xff0c;保留两位小数 #include<iostream> #include<cmath> using namespace std; int main(){int n, a, b, ans 0;scanf("%d", &n);while(n--){scanf("%d%d"…

超便捷备忘录共享方法 文字文件都可共享

在这个信息爆炸的时代&#xff0c;备忘录已成为我们生活中不可或缺的小助手。它记录着我们的工作计划、待办事项、灵感闪现&#xff0c;甚至是那些温馨的家庭琐事。然而&#xff0c;当我们在不同的设备间穿梭&#xff0c;如何在手机、电脑&#xff0c;甚至是不同品牌的手机之间…

计算机辅助考试

加我zkhengyang可申请加入数字音频系统研究开发交流答疑群(课题组)&#xff0c;考神训练营&#xff0c;&#xff0c; 为了通过某项考试&#xff0c;可借助计算机(个人电脑)来辅助备考。本人通过电脑辅助学习&#xff0c;成功通过了驾照科目一&#xff0c;全国计算机二级C语言考…

新手做视频号电商,做什么样的产品好卖?适合不会选类目的新手看

大家好&#xff0c;我是电商花花&#xff0c;专注做电商的花花。 视频号现在的发展可以说是非常好的&#xff0c;拥有着空前的市场和流量&#xff0c;随着视频号小店新项目对电商的冲击&#xff0c;让更多创业者和新手商家开始涌入视频号电商的行列。 想要在新项目中抢占流量…

如何给远程服务器配置代理

目录 前言 正文 更换镜像源 开始之前 安装过程 遇到的问题 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ningbo China&#x1f4…

java面试题(常见集合)

算法复杂度分析 时间复杂度分析 时间复杂度分析&#xff1a;来评估代码的执行耗时的 大O表示法&#xff1a;不具体表示代码真正的执行时间&#xff0c;而是表示代码执行时间随数据规模增长的变化趋势 空间复杂度 空间复杂度的全称是渐进空间复杂度&#xff0c;表示算法占用…