【強化學習-讀書筆記】多臂賭博機 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[Rt?At?=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=1t?1?1Ai?=a?i=1t?1?Ri?1Ai?=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?[Rn??Qn?]

此時 α = 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.pswp.cn/news/215909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215909.shtml
英文地址,請注明出處:http://en.pswp.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…