汤普森采样:多臂老虎机问题

ops/2024/10/19 5:30:07/

两个AI工具包:

  • Colaboratory运行环境:欢迎使用 Colaboratory - Colab (google.com)
  • Github源代码页面:PacktPublishing/AI-Crash-Course: AI-Crash-Course, published by Packt (github.com)

四种AI模型:

  1. 汤普森采样
  2. Q学习
  3. 深度Q学习
  4. 深度卷积Q学习

学习三步法:

  1. 获得对模型怎样运行的直觉
  2. 学会该理论背后的数学知识
  3. 用Python从头开始实现该模型

强化学习的五大原理

  • 输入与输出系统
  • 奖励
  • AI环境
  • 马尔科夫决策模型
  • 训练与推断

汤普森采样

  • 多臂老虎机问题:以最少的实验次数找出最好的老虎机。(迅速从位置胜率中找到最大的那一个)
  • 模型直觉:每台老虎机都有自己的贝塔分布,经过一轮又一轮的下注,具有最高胜率的老虎机的贝塔分布会逐渐向右平移,具有较低胜率的老虎机的贝塔分布会逐渐向左平移。
  • 输入状态:目前位于第几轮、nPosReward和nNegReward在该轮的取值。输出行为:下拉选中的老虎机的拉杆,即下注。奖励:1或-1
import numpy as np## 仿真
# 事先设定每个老虎机的胜率
conversionRates = [0.15, 0.04, 0.13, 0.11, 0.05]
N = 10000   # 样本数
d = len(conversionRates) # 老虎机的数量# 创立仿真数据集:每一轮老虎机按照胜率进行预先设定的实验结果
X = np.zeros((N, d))
for i in range(N):for j in range(d):if np.random.rand() < conversionRates[j]:X[i, j] = 1# 创建两个数组记录下注每台老虎机时的输赢战况
nPosReward = np.zeros(d) # 赢钱次数
nNegReward = np.zeros(d) # 输钱次数# 运行N轮汤普森采样
for i in range(N):selected = 0  # 选择的老虎机下标maxRandom = 0 # 记录所有老虎机中最高的贝塔分布for j in range(d):randomBeta = np.random.beta(nPosReward[j] + 1, nNegReward[j] + 1)if randomBeta > maxRandom:maxRandom = randomBetaselected = jif X[i, selected] == 1:nPosReward[selected] += 1else:nNegReward[selected] += 1# 打印结果
nSelected = nPosReward + nNegReward
for i in range(d):print('老虎机{}被选中{}次'.format(i+1, nSelected[i]))
print('最好的老虎机是{}号'.format(np.argmax(nSelected) + 1))

http://www.ppmy.cn/ops/19959.html

相关文章

云安全和传统安全之间有什么区别?

云安全也可以被称为云计算安全&#xff0c;是用来保护云中的应用、基础设施以及数据的任意攻击、流程或策略的都被称为云安全&#xff0c;云安全适用于私有云、公有云和混合云等多种云环境&#xff0c;能够在企业、驾驭、金融和政务等多种场景中快速发展。 那云安全和传统安全两…

langchain pdf链检索,提问式表单(实体命名识别)

目录 PDF检索 提问式表单 PDF检索 stuff 链&#xff0c;重排链&#xff0c;RetrievalQA 链from PyPDF2 import PdfReader from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import FAISS from langchain.embeddings import HuggingF…

IIS中搭建.Net Core项目,步骤详解

一、准备服务器 1&#xff09;安装IIS 这个比较简单&#xff0c;百度一下就行 2&#xff09;安装 .NET Core 运行时 下载地址&#xff1a;下载 .NET(Linux、macOS 和 Windows) 因为我是本地开发&#xff0c;所以我下载的是SDK 安装成功之后显示如下&#xff1a; 检查是否安装…

Codeforces 1945G 块状链表 / 堆

题意 传送门 Codeforces 1945G Cook and Porridge 题解 块状链表 使用块状链表维护队列&#xff0c;链表每个节点维护 O ( n ) O(\sqrt{n}) O(n ​)个元素&#xff0c;并维护元素的最大值&#xff0c;则可以实现 O ( n ) O(\sqrt{n}) O(n ​)的元素插入与出队。总时间复杂度…

docker部署前端项目(三)简易迅速版本

前两个docker 部署都出现了 意外&#xff0c;通过dockerfile 文件操作的时候&#xff0c; 不是 npm 无法下载&#xff0c;就是 npm build 无法打包 总是困难重重&#xff0c;原因甚多&#xff0c;不是网络导致&#xff0c;就是版本不对&#xff0c; 原因可能是 node 版本和 npm…

MySQL-用户管理

MySQL 用户分为 普通用户 和 root用户。root用户即超级管理员&#xff0c;拥有所有权限&#xff0c;包含创建&#xff0c;删除和修改用户等相关权限&#xff1b;普通用户只拥有被root用户授予的各种权限MySQL的安全性需要通过账户管理来实现 1、登录MySQL服务器 命令如下&…

物联网嵌入式ESP32开发实战,从基础到项目程序开发125例【doc.yotill.com】

一、ESP32基础入门例程开发 物联网嵌入式ESP32开发例程-ESP32实现ADC模拟量信号采集&#xff08;ESP-IDF VSCode编程&#xff09; 物联网嵌入式ESP32开发例程-ESP32实现RTC实时时钟&#xff08;ESP-IDF VSCode编程&#xff09; 物联网嵌入式ESP32开发例程-ESP32实现USB虚拟串口…

Linux - tar (tape archive)

tar 的全称是 Tape Archive。它最初是在 Unix 系统中用于将数据写入磁带的工具&#xff0c;但现在它通常用于创建、维护、修改和提取文件的归档文件。尽管 tar 可以用于压缩和解压缩文件&#xff0c;但它本身并不进行压缩&#xff0c;而是通常与 gzip 或 bzip2 等压缩工具一起使…