网站底部悬浮,建设银行网站 诚聘英才 频道,济南网站建设公司送400,网站空间选择的主要原则有哪些问题陈述
我们有两个多臂老虎机#xff08;Multi-Armed Bandit#xff09;#xff0c;分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布#xff1a; 左边的老虎机#xff1a;奖励服从均值为 500#xff0c;标准差为 50 的正态分布#xff0c;即…问题陈述
我们有两个多臂老虎机Multi-Armed Bandit分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布 左边的老虎机奖励服从均值为 500标准差为 50 的正态分布即 N(500,50)N(500,50)。 右边的老虎机奖励服从均值为 550标准差为 100 的正态分布即 N(550,100)N(550,100)。
我们的目标是使用 ε-greedy 强化学习算法ε0.1初始值为 998来估计这两个老虎机的奖励期望值。具体来说我们需要通过多次尝试拉动手臂来逐步更新对每个老虎机奖励的估计最终找到两个老虎机的奖励期望值。
问题分解 目标 使用 ε-greedy 算法估计两个老虎机的奖励期望值。 通过多次尝试逐步更新对每个老虎机奖励的估计。 ε-greedy 算法 ε0.1表示有 10% 的概率进行随机探索随机选择一个老虎机90% 的概率进行利用选择当前估计奖励最高的老虎机。 初始值998表示每个老虎机的初始奖励估计值为 998。 奖励分布 左边的老虎机N(500,50)N(500,50) 右边的老虎机N(550,100)N(550,100) 输出 经过多次尝试后输出两个老虎机的奖励期望值的估计结果 通过运行代码我们可以得到一个图表显示两个老虎机奖励期望估计值随着时间的变化情况。随着拉动次数的增加两个估计值应该逐渐接近它们各自的真实奖励期望值500 和 550。
import numpy as np
import matplotlib.pyplot as plt# 参数初始化
epsilon 0.1 # ε-greedy算法中的ε
Q1 998 # 左边老虎机的奖励期望估计
Q2 998 # 右边老虎机的奖励期望估计
n1 0 # 左边老虎机的拉动次数
n2 0 # 右边老虎机的拉动次数
num_plays 10000 # 总共拉动的次数# 奖励的真实分布
mu1, sigma1 500, 50 # 左边老虎机的真实奖励分布均值标准差
mu2, sigma2 550, 100 # 右边老虎机的真实奖励分布均值标准差# 用于存储结果
Q1_estimates []
Q2_estimates []# ε-greedy策略的实验
for t in range(num_plays):# 根据ε-greedy策略选择一个老虎机if np.random.random() epsilon:action np.random.choice([1, 2]) # 随机选择左或右else:action 1 if Q1 Q2 else 2 # 选择当前估计奖励最大的老虎机if action 1:reward np.random.normal(mu1, sigma1) # 从左边老虎机获得奖励n1 1Q1 (reward - Q1) / n1 # 更新左边老虎机的奖励期望估计Q1_estimates.append(Q1)else:reward np.random.normal(mu2, sigma2) # 从右边老虎机获得奖励n2 1Q2 (reward - Q2) / n2 # 更新右边老虎机的奖励期望估计Q2_estimates.append(Q2)# 最终的奖励期望估计
print(f最终左边老虎机的奖励期望估计: {Q1})
print(f最终右边老虎机的奖励期望估计: {Q2})# 绘图
plt.figure(figsize(12, 6))# 绘制左边老虎机奖励期望估计的变化
plt.plot(Q1_estimates, labelLeft Slot Machine (Q1), colorblue)# 绘制右边老虎机奖励期望估计的变化
plt.plot(Q2_estimates, labelRight Slot Machine (Q2), colorred)# 绘制真实奖励期望值的参考线
plt.axhline(ymu1, colorblue, linestyle--, labelTrue Q1 (500))
plt.axhline(ymu2, colorred, linestyle--, labelTrue Q2 (550))# 图表设置
plt.title(Reward Estimation in ε-greedy Slot Machine Experiment)
plt.xlabel(Number of Plays)
plt.ylabel(Estimated Reward)
plt.legend(locbest)
plt.grid(True)# 显示图表
plt.show()显示结果如图