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 = pdef 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] += 1Q[ad_chosen] += (1 / N[ad_chosen]) * (R - Q[ad_chosen])total_reward += Ravg_reward_so_far = total_reward / (i + 1)avg_rewards.append(avg_reward_so_far)# Select the next ad to displayif 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 displayif np.random.uniform() <= eps:ad_chosen = np.random.randint(n_ads)else:ad_chosen = np.argmax(Q)

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

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

相关文章

ICode国际青少年编程竞赛- Python-6级训练场-递归入门

ICode国际青少年编程竞赛- Python-6级训练场-递归入门 1、 def recur(n):# 边界条件if n<1:return# 额外动作Dev.step(n)Dev.turnRight()# 递归调用recur(n-1)recur(8)2、 def recur(n):# 边界条件if n<1:return# 额外动作Dev.step(n)Dev.turnLeft()# 递归调用recur(n-1)…

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

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

第14节 第二种shellcode编写实战(3)

我最近在做一个关于shellcode入门和开发的专题课&#x1f469;&#x1f3fb;‍&#x1f4bb;&#xff0c;主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料&#xff0c;内容里面的每一个环境我都亲自测试实操过的记录&#xff0c;有需要的小伙伴可以参考…

探索数字社交的奇迹:解读Facebook的革命性影响

1. 社交互动的全新模式 Facebook的出现不仅仅是一个社交媒体平台的诞生&#xff0c;更是一种全新的社交互动模式的开启。传统的社交模式主要依赖于面对面的交流&#xff0c;而Facebook则将社交推向了全新的数字化平台&#xff0c;使得人们可以在虚拟的世界里建立和维系社交关系…

sql注入---sqli靶场

1.什么是SQL注入 SQL注入是比较常见的网络攻击方式之一&#xff0c;它不是利用操作系统的BUG来实现攻击&#xff0c;而是针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号登录&#xff0c;甚至篡改数据库 2.sql注入原理 攻击者注入一段包含注释符的SQL语…

AI大模型探索之路-训练篇22: ChatGLM3微调实战-从原理到应用的LoRA技术全解

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

【CSP CCF记录】202109-2 非零段划分

题目 过程 思路 参考&#xff1a;http://t.csdnimg.cn/XRKTm STL库用法 unique用法 unique是STL中很实用的函数之一&#xff0c;需要#include&#xff08;感谢各位提醒&#xff09;&#xff0c;下面来简单介绍一下它的作用。 unique的作用是“去掉”容器中相邻元素的重复…

【Qt】之【CMake】Error : The source.. does not match the soused

QT中cmak编译出现CMake Error: The source… does not match the soused 分析 前提是该项目是从另一个路径的项目复制过来的&#xff0c;编写代码时发现无论怎样修改代码&#xff0c;运行后都没有任何变化&#xff0c;以为是qtbug&#xff0c;重构重启都没用&#xff0c;最后…

ICode国际青少年编程竞赛- Python-5级训练场-多参数函数

ICode国际青少年编程竞赛- Python-5级训练场-多参数函数 1、 def go(a, b):Spaceship.step(2)Dev.step(a)Spaceship.step(b)Dev.turnRight()Dev.step(b)Dev.turnLeft()Dev.step(-a) Dev.turnLeft() Dev.step(3) Dev.step(-3) go(3, 2) go(6, 1) go(5, 2) go(4, 3)2、 def go(…

docker搭建mysql集群实现主从复制

前言 随着业务的增长&#xff0c;一台数据服务器已经满足不了需求了&#xff0c;负载过重。这个时候就需要减压了&#xff0c;实现负载均衡和读写分离&#xff0c;一主一丛或一主多从。 主服务器只负责写&#xff0c;而从服务器只负责读&#xff0c;从而提高了效率减轻压力。 …

会声会影2024中文旗舰免费版(Corel VideoStudio)下载安装包附带会声会影软件注册机

一、软件背景及版本概述 会声会影&#xff08;Corel VideoStudio&#xff09;是由加拿大Corel公司发布的一款视频编辑软件&#xff0c;该软件以其功能丰富、操作简便而广受好评。2024年版本在继承之前版本优点的基础上&#xff0c;进行了诸多创新和改进&#xff0c;为用户提供…

只需三步,教你轻松搞定内网穿透

最近开发过程中又遇到了需要外网访问内部服务接口的需求&#xff0c;比如调用三方服务的各种回调通知、支付成功回调、大模型回调等都需要外部服务器来访问内部的接口&#xff0c;这里有个问题就是如果我们在本地或者测试环境调试的过程中我们使用的是内网环境&#xff0c;那外…

ABeam德硕 | 大语言模型系列(3):企业如何拥抱大语言模型

继前两期我们分享了大语言模型的概要简介及商业模式、商业价值之后&#xff0c;作为大语言模型系列的收尾篇&#xff0c;本期我们将聚焦在大语言模型的落地&#xff0c;结合案例简单分析拥抱大语言模型的思路&#xff0c;为企业提供ABeam见解。 往期回顾 ABeam Insight | 大语…

分享一个适用于 Vue 非常好用的移动端组件库【Vant 】

一、介绍 Vant 是一款轻量、可靠的移动端 Vue 组件库&#xff0c;由 Youzan UI 团队开发和维护。它专注于移动端 UI 组件的设计和实现&#xff0c;为开发者提供了一套完整的、高质量的组件集合&#xff0c;帮助开发者快速构建出符合移动设计规范的应用。 以下是 Vant 的一些主…

1070: 邻接矩阵存储简单路径

解法&#xff1a; #include<iostream> #include<vector> using namespace std; int arr[100][100]; int n; int sta, des; vector<int> path; vector<vector<int>> res; void dfs(vector<int> &a,int i) {a[i] 1;path.push_back(i);…

WINDOWS下zookeeper突然无法启动但是端口未占用的解决办法(用了WSL)

windows下用着用着时候突然zookeeper启动不了了。netstat查也没有找到端口占用&#xff0c;就是起不来。控制台报错 java.lang.reflect.UndeclaredThrowableException: nullat org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:147) ~…

APK签名

有些没签名的apk在高版本的安卓系统是无法运行的&#xff0c;就需要进行签名。 签名需要2个步骤 反编译回编译签名 使用到的工具 ApkTool &#xff0c; 免费获取地址&#xff1a; https://githubs.xyz/boot?app58 ApkTool运行需要安装java环境&#xff0c;如果你有了&…

一个API接口对接ChatGPT3.5/4.0,Claude3,文心一言,通义千问,智谱AI等多款AI模型,打造属于自己的AI应用

今天我要给大家介绍团队的最新项目——一个集成了ChatGPT-3.5/4.0、Claude3、文心一言、通义千问、智谱AI等多个AI模型的API模型聚合平台。仅需使用一个接口就可以对接所有AI模型 为什么要创建这个平台&#xff1f; 随着不同的AI模型陆续问世&#xff0c;每个模型都有其独特…

HarmonyOS应用模型Stage基本介绍

文章目录 <font colorcoral> HarmonyOS应用模型概况<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 写在后面的话<font colorcoral>Referen…

Hadopp入门之基础概念

Hadoop概述 Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构主要解决海量数据的存储和海量数据的分析计算问题广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念——Hadoop生态圈 Hadoop优势 高可靠性&#xff1a;Hadoop底层维护多个数据副本&…