【强化学习-读书笔记】多臂赌博机 Multi-armed bandit

参考 
Reinforcement Learning, Second Edition  
An Introduction 
By Richard S. Sutton and Andrew G. Barto

强化学习与监督学习

强化学习与其他机器学习方法最大的不同,就在于前者的训练信号是用来评估(而不是指导)给定动作的好坏的。

强化学习:评估性反馈
有监督学习:指导性反馈


价值函数

最优价值函数,是给定动作 a a a 的期望,可以理解为理论最优
q ∗ ( a ) ≐ E [ R t ∣ A t = a ] q_*(a) \doteq\mathbb{E}[R_t|A_t=a] q(a)E[RtAt=a]
我们将算法对动作 a a a 在时刻 t t t 时的价值的估计记作 Q t ( a ) Q_t(a) Qt(a),我们希望它接近 q ∗ ( a ) q_*(a) q(a)


利用(Exploit)与探索(Explore

利用:选择最高估计价值的动作(贪心)
探索:选择非贪心的动作


动作-价值方法(基于价值的方法)

思想:对价值进行估计,来选择动作。

采样平均方法

Q t ( a ) ≐ t 时刻前执行动作 a 得到的收益总和 t 时刻前执行动作 a 的次数 = ∑ i = 1 t − 1 R i 1 A i = a ∑ i = 1 t − 1 1 A i = a Q_t(a)\doteq \frac{t时刻前执行动作a得到的收益总和}{t时刻前执行动作a的次数}=\frac{\sum_{i=1}^{t-1} R_i \mathbf{1}_{A_i=a}}{\sum_{i=1}^{t-1} \mathbf{1}_{A_i=a}} Qt(a)t时刻前执行动作a的次数t时刻前执行动作a得到的收益总和=i=1t11Ai=ai=1t1Ri1Ai=a

贪心动作选择

最简单的动作选择规则是选择具有最高估计值的动作,即贪心动作
A t ≐ arg ⁡ max ⁡ a Q t ( a ) A_{t}\ \doteq \ {\arg \max_a}\ Q_{t}(a) At  argamax Qt(a)
缺点:不能持续探索(虽然可以乐观初始化在开始阶段进行探索)
乐观初始化:对于纯粹贪心策略,可以把每一个初始值 Q 0 ( a ) Q_0(a) Q0(a)都设置得更大,从而鼓励算法在算法刚开始的时候尝试其他状态。因为一开始获得奖励之后都把 Q 0 ( a ) Q_0(a) Q0(a)降低了。

ϵ \epsilon ϵ-贪心方法

以小概率 ϵ \epsilon ϵ随机选择动作, 1 − ϵ 1-\epsilon 1ϵ 贪心选择
在这里插入图片描述

在这里插入图片描述

两者都并不是完美的

贪心动作虽然在当前时刻看起来最好,但实际上其他一些动作可能从长远看更好
ϵ \epsilon ϵ-贪心算法会尝试选择非贪心的动作,但是这是一种盲目的选择,因为它不大会去选择接近贪心或者不确定性特别大的动作


增量更新、平稳/非平稳问题

为了计算效率,采用增量更新:
Q n + 1 = Q n + 1 n [ R n − Q n ] Q_{n+1} = Q_n + \frac{1}{n}[R_n - Q_n ] Qn+1=Qn+n1[RnQn]

此时 α = 1 n \alpha = \frac{1}{n} α=n1,适合平稳分布的问题,但是如果 bandit 背后的分布是会变化的,那么 α \alpha α 应该采用 > 1 n >\frac{1}{n} >n1 ,从而给更靠近的奖励更大的权重。


UCB

置信度上界 (upper confidence bound, UCB)——平衡了 探索与利用
A t ≐ a r g max ⁡ a [ Q t ( a ) + c ln ⁡ t N t ( a ) ] A_{t}\ \doteq \ {\mathrm{arg}}\max_a\left[Q_{t}(a)+c\sqrt{\frac{\ln t}{N_{t}(a)}}\,\right] At  argamax[Qt(a)+cNt(a)lnt ]

左边:利用平均奖励大的动作
右边:鼓励探索访问次数少的动作,但是同时要考虑到其他非 a a a 的状态的访问次数,用 t t t近似。每次选 a a a之外的动作时,在分子上的 ln ⁡ t \ln t lnt增大,而 N t ( a ) N_t(a) Nt(a) 却没有变化,所以不确定性增加了

UCB一般来说比贪心、 ϵ \epsilon ϵ-贪心 要好。

在这里插入图片描述

UCB 的缺点:

  1. 处理非平稳问题时,需要一些更复杂的 tricks, 不能仅仅使用这样的策略。
  2. 处理不了很大的状态空间。

上下文赌博机(Contextual Bandit)

普通的赌博机:算法每一次选择新动作的时候,没有额外的环境信息。
上下文赌博机:算法每一次选择新动作的时候,有额外的环境信息

也许你面对的是一个真正的老虎机、它的外观颜色与它的动作价值集合一一对应,动作价值集合改变的时候,外观颜色也会改变.那么,现在你可以学习一些任务相关的操作策略,例如,用你所看到的颜色作
为信号,把每个任务和该任务下最优的动作直接关联起来,比如,如果为红色, 则选择1号臂 ;如果为绿色,则选择2号臂。有了这种任务相关的策略,在知道任务编号信息时,你通常要比不知道任务编号信息时做得更好。
——《RL》

上下文赌博机介于多臂赌博机问题和完整强化学习问题之间。它与完整强化学习问题的相似点是,它需要学习一种策略,但它又与多臂赌博机问题相似,体现在每个动作只影响即时收益。

总结

在多臂赌博机问题来说,一般来说,UCB是比贪心, ϵ \epsilon ϵ-贪心更好的
在这里插入图片描述

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

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

相关文章

第21章网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封 装成不同的类,用户只要创建这些类的对象,使用相应的方法,即使不具备有关的网络支持,也可 以编写出高质量的网络通信程序…

2023年【危险化学品生产单位安全生产管理人员】考试题库及危险化学品生产单位安全生产管理人员考试技巧

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考试题库是安全生产模拟考试一点通总题库中生成的一套危险化学品生产单位安全生产管理人员考试技巧,安全生产模拟考试一点通上危险化学品生产单位安全生产管理人员作业…

【教程】制作 iOS 推送证书

如需向 iOS 设备推送数据,您首先需要在消息推送控制台上配置 iOS 推送证书。iOS 推送证书用于推送通知,本文将介绍消息推送服务支持的证书类型,并引导您制作 iOS 推送证书。 证书类型 消息推送服务仅支持 Apple Push Service 类型的证书。有…

react Hooks之useDebugValue

1、作用: 用于在开发过程中帮助开发者调试自定义 Hook。它的作用是将自定义 Hook 中的某些值暴露给 React 开发工具(例如 React DevTools)以便于调试。 当我们使用 React 开发工具查看组件的状态时,React DevTools 会从组件和其…

鸿蒙(HarmonyOS)应用开发——保存应用数据

保存应用数据 harmonyOS系统提供了四种数据存储方式 #mermaid-svg-kZlN0CFY1VGySIPo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kZlN0CFY1VGySIPo .error-icon{fill:#552222;}#mermaid-svg-kZlN0CFY1VGySIPo .…

竞赛保研 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

Android RecyclerView 动画处理 流程 原理(源码分析第二篇)

零、本文主题 本文要解决的问题: 1. Recyclerview 动画的实现原理是什么? 2. 处理的主要流程大概是怎样的? 一、核心原理 我们抛开代码,想一下,RecyclerView中的view动画有几种? 添加一个view:…

react Hooks之useLayoutEffect和useInsertionEffect

在介绍这两个hooks之前。让我们先对比一下useEffect、useLayoutEffect、useInsertionEffect 执行时机: useEffect 在组件渲染完成后执行,属于异步执行。useInsertionEffect 在组件渲染并插入 DOM 后执行,也属于异步执行。useLayoutEffect 在组…

互联网公司,哪个部门才是鄙视链最顶端?

文章目录 每日一句正能量前言财务部法务部公关部销售部前台行政IT部创意部后记 每日一句正能量 我们必须在失败中寻找胜利,在绝望中寻求希望。 前言 在互联网公司中,不同职位的鄙视链是存在的。有些职位享有高尚的地位,而有些则被看作是次要…

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥,构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下: import requests import re import os from tqdm import tqdm from Crypto.Cipher import AES# 创建临…

Shopify二次开发之五:元字段(Metafields)

目录 解释 操作 1、添加Custom data 2、选择特定类型的数据 3、为Page配置元子段和值 4、模板访问 解释 Shopify Metafields 是一种用于存储和管理自定义数据的功能。它们允许商户在商城中的产品、订单、客户、Page等对象上添加自定义字段,以满足特定业务需求…

c语言->自定义类型联合体和枚举类型

系列文章目录 文章目录 前言 ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青_C语言,函数,指针-CSDN博客 目的:学习联合体和枚举类型的…

[cleanrl] ppo_continuous_action源码解析

1 import库(略) import os import random import time from dataclasses import dataclassimport gymnasium as gym import numpy as np import torch import torch.nn as nn import torch.optim as optim import tyro from torch.distributions.normal…

Kubernetes实战(八)-防止k8s namespace被误删除

1 背景 运维新同学在预发环境操作删除pod的时候,不知道什么原因把kubectl delete pod命令敲成了kubectl delete ns pre把预发环境删了,几十个模块,将近一个小时才恢复。幸亏是测试环境啊,如果是生产可以可以跑路了。 2 解决方案…

jsonpath:使用Python处理JSON数据

使用Python处理JSON数据 25.1 JSON简介 25.1.1 什么是JSON JSON全称为JavaScript Object Notation,一般翻译为JS标记,是一种轻量级的数据交换格式。是基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清…

java对二维数组进行排序

一、按行排序&#xff1a; 对二维数组按进行排序&#xff0c;直接调用Arrays.sort就行&#xff1a; private static int [][] sortRows(int[][] arr) {//行排序for (int i 0; i < arr.length; i) {Arrays.sort(arr[i]);}return arr;}二、按列排序&#xff1a; 1.使用比较…

计算机网络:应用层(一)

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

鸿蒙开发之状态管理@Observed和@ObjectLink

一、使用场景 当对象内引用对象&#xff0c;改变内部对象属性的时候其他状态管理如State、Provide、Consume等是无法触发更新的。同样&#xff0c;在数组内如果有对象&#xff0c;改变对象的属性也是无法更新的。在这种情况下就可以采用Observed和ObjectLink装饰器了。 二、使…

C# WPF上位机开发(简易图像处理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 图像处理是工业生产重要的环节。不管是定位、测量、检测还是识别&#xff0c;图像处理在工业生产中扮演重要的角色。而c#由于自身快速开发的特点&a…

玩转 Go 语言并发编程:Goroutine 实战指南

一、goroutine 池 本质上是生产者消费者模型在工作中我们通常会使用可以指定启动的 goroutine 数量-worker pool 模式&#xff0c;控制 goroutine 的数量&#xff0c;防止 goroutine 泄漏和暴涨一个简易的 work pool 示例代码如下&#xff1a; package mainimport ("fmt…