機器學習:強化學習的epsilon貪心算法

強化學習(Reinforcement Learning, RL)是一種機器學習方法,旨在通過與環境交互,使智能體(Agent)學習如何采取最優行動,以最大化某種累積獎勵。它與監督學習和無監督學習不同,強調試錯探索(Exploration-Exploitation)以及基于獎勵信號的學習。

在這里插入圖片描述

強化學習任務通常用馬爾可夫決策過程來描述:機器處于環境 E E E中,狀態空間 X X X,其中每個狀態 x ∈ X x \in X xX是機器感知到的環境的描述,機器能采取的動作構成了動作空間 A A A,若某個動作 a ∈ A a \in A aA作用在當前狀態 x x x上,則潛在的轉移函數 P P P將使得環境從當前狀態按照某種概率轉移到另一個狀態,在轉移到另一個狀態的同時,環境會根據潛在的“獎賞”函數 R R R反饋給機器一個獎賞。

在環境中狀態的轉移、獎賞的返回是不受機器控制的,機器只能通過選擇要執行的動作來影響環境,也只能通過觀察轉移后的狀態和返回的獎賞來感知環境。

機器要做的是通過在環境中不斷地嘗試而學得一個“策略”,根據這個“策略”在狀態 x x x下就能知道要執行得動作。

在強化學習任務中,學習的目的就是要找到能使長期累積獎賞最大化的策略。

強化學習與監督學習來說,強化學習是沒有人直接告訴機器在什么狀態下應該做什么動作,只有等到最終結果揭曉,才能通過“反思”之前的動作是否正確來進行學習,因此,強化學習在某種意義上可看作具有“延遲標記信息”的監督學習問題。

強化學習任務的最終獎賞是在多步動作之后才能觀察到,這里考慮簡單情形:最大化單步獎賞,即僅考慮一步操作。單步強化學習任務對應了一個理論模型:k-搖臂賭博機。

k- 搖臂賭博機:有k個搖臂,賭徒在投入一個硬幣后可選擇按下其中一個搖臂,每個搖臂以一定的概率吐出硬幣,但這個概率賭徒并不知道。賭徒的目標是通過一定的策略最大化自己的獎賞,即獲得最多的硬幣。

若僅為獲知每個搖臂的期望獎賞,則可采用“僅探索”法:將所有的嘗試機會平均分配給每個搖臂,最后以每個搖臂各自的平均吐幣概率作為其獎賞的近似評估。若僅為執行獎賞最大的動作,則可采用“僅利用”法:按下目前最優的搖臂。“僅探索”法會失去很多選擇最優搖臂的機會;“僅利用”法可能經常選不到最優搖臂。

? \epsilon ?貪心法是基于一個概率來對探索和利用進行折中:每次嘗試時,以 ? \epsilon ?的概率進行探索,以 1 ? ? 1 - \epsilon 1??的概率進行利用。

則平均獎賞為:
Q ( k ) = 1 n ∑ i = 1 n v i Q(k) = \frac{1}{n} \sum_{i=1}^nv_i Q(k)=n1?i=1n?vi?
可以改成增量計算:
Q n ( k ) = 1 n ( ( n ? 1 ) × Q n ? 1 ( k ) + v n ) = Q n ? 1 ( k ) + 1 n ( v n ? Q n ? 1 ( k ) ) Q_n(k) = \frac {1}{n} ( (n - 1) \times Q_{n-1}(k) + v_n) \\ = Q_{n-1}(k) + \frac{1}{n}(v_n - Q_{n-1}(k)) Qn?(k)=n1?((n?1)×Qn?1?(k)+vn?)=Qn?1?(k)+n1?(vn??Qn?1?(k))

代碼

k-搖臂賭博機實現:

import numpy as npclass KArmedBandit:def __init__(self, k=10, true_reward_mean=0, true_reward_std=1):"""k: 搖臂數量true_reward_mean: 獎勵均值的均值true_reward_std: 獎勵均值的標準差"""self.k = kself.q_true = np.random.normal(true_reward_mean, true_reward_std, k)  # 每個搖臂的真實均值def step(self, action):"""執行動作(拉某個搖臂),返回獎勵"""reward = np.random.normal(self.q_true[action], 1)  # 以 q*(a) 為均值的正態分布return reward

? \epsilon ?貪心實現:

from data_processing import KArmedBandit
import numpy as np
import matplotlib.pyplot as pltdef select_action(epsilon:float, q_estimates:np.ndarray):"""根據 epsilon-greedy 策略選擇動作"""if np.random.rand() < epsilon: # 隨機選擇return np.random.choice(len(q_estimates))  # else:return np.argmax(q_estimates)  # 選擇估計獎勵最高的動作
def update_estimates(q_estimates:np.ndarray, action:int, reward:float, action_counts:np.ndarray):"""更新動作的估計獎勵"""action_counts[action] += 1q_estimates[action] += (reward - q_estimates[action]) / action_counts[action]return q_estimates, action_countsdef start(k:int, epsilon:float, epochs:int, stps:int):"""開始運行 epsilon-greedy 算法"""q_estimates = np.zeros(k)  # 每個搖臂的估計獎勵action_counts = np.zeros(k)  # 每個搖臂被選擇的次數avg_rewards = np.zeros(stps)  # 記錄每次拉搖臂的獎勵for epoch in range(epochs):bandit = KArmedBandit(k)rewards = []for step in range(stps):action = select_action(epsilon, q_estimates)reward = bandit.step(action)q_estimates, action_counts = update_estimates(q_estimates, action, reward, action_counts)rewards.append(reward) # 記錄獎勵avg_rewards += np.array(rewards) # 記錄每次拉搖臂的獎勵avg_rewards /= epochsreturn avg_rewardsif __name__ == '__main__':k = 10epsilon = 0.1epochs = 2000stps = 1000avg_rewards = start(k, epsilon, epochs, stps)plt.plot(avg_rewards)plt.xlabel('Steps')plt.ylabel('Average reward')plt.title('RL: epsilon-greedy Performance')plt.show()

在這里插入圖片描述

深入理解強化學習(一)- 概念和術語 - 知乎 (zhihu.com)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896848.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring學習筆記03——Spring Boot的文件結構

Spring boot常見的文件結構&#xff1a; src/ ├── main/ │ ├── java/ │ │ └── com.example.demo/ │ │ ├── DemoApplication.java # 主入口 │ │ ├── config/ # 配置類 │ │ ├── controller/ …

談談 HTTPS 的工作原理,SSL / TLS 握手流程是什么?

一、HTTPS 核心機制&#xff1a;非對稱加密 對稱加密 HTTPS HTTP over TLS/SSL&#xff0c;通過 ?混合加密體系? 解決三大問題&#xff1a; ?防竊聽? - 對稱加密傳輸內容&#xff08;如 AES&#xff09;?防篡改? - 數字簽名驗證數據完整性?防冒充? - 數字證書驗證服…

共軛梯度法筆記

一、梯度下降法 x k 1 x k ? α ? f ( x k ) x_{k1} x_k - \alpha \nabla f(x_k) xk1?xk??α?f(xk?) 這是普通的梯度下降公式&#xff0c;有兩個量是關鍵&#xff0c;步長 α \alpha α和方向 ? f ( x k ) \nabla f(x_k) ?f(xk?)。這里的方向直接選擇了梯度方向&…

ubuntu 啟動不起來,光標閃爍 解決方法

ubuntu 啟動不起來&#xff0c;光標閃爍 進不了系統&#xff0c;解決方法 按ctrl alt f2&#xff0c;進入終端&#xff0c;登錄。 jounal -b 查看啟動日志。 發現是找不到顯卡驅動程序。 解決方法&#xff1a; 卸載nvidia程序。 sudo systemctl stop gdm # 適用于GNOME…

CSS - 妙用Sass

官方文檔&#xff1a;https://www.sass.hk/docs/ 1.例1&#xff1a; each $theme in $themeList {$themeKey: map-get($theme, key);media screen and (weex-theme: $themeKey) {.btnText {max-width: 150px;include font(map-get($theme, medFont),map-get($theme, subFontS…

chromadb向量數據庫使用 (2)

目錄 代碼代碼解釋**1. 導入 chatGLM 嵌入函數****2. 創建 ChromaDB 客戶端和集合****3. 查詢集合中的數據數量****4. 添加數據到集合****5. 獲取已存儲的文檔****6. 更新文檔****7. 再次獲取數據&#xff0c;驗證更新結果****8. 刪除某個文檔****9. 獲取已刪除的文檔****總結*…

我的世界1.20.1forge模組開發進階物品(7)——具有動畫、3D立體效果的物品

基礎的物品大家都會做了對吧?包括武器的釋放技能,這次來點難度,讓物品的貼圖呈現動畫效果和扔出后顯示3D立體效果,這個3D立體效果需要先學習blockbench,學習如何制作貼圖。 Blockbench Blockbench是一個用于創建和編輯三維模型的免費軟件,特別適用于Minecraft模型的設計…

大模型在敗血癥預測及圍手術期管理中的應用研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 1.3 研究方法與數據來源 二、敗血癥概述 2.1 定義與流行病學 2.2 病因與發病機制 2.3 臨床表現與診斷標準 2.4 并發癥與危害 三、大模型技術原理及在醫療領域的應用 3.1 大模型技術概述 3.2 大模型在醫療領…

SpringBoot接口自動化測試實戰:從OpenAPI到壓力測試全解析

引言&#xff1a;接口測試的必要性 在微服務架構盛行的今天&#xff0c;SpringBoot項目的接口質量直接影響著系統穩定性。本文將分享如何通過自動化工具鏈實現接口的功能驗證與性能壓測&#xff0c;使用OpenAPI規范打通測試全流程&#xff0c;讓您的接口質量保障體系更加完備。…

微軟具身智能感知交互多面手!Magma:基于基礎模型的多模態AI智能體

作者&#xff1a; Jianwei Yang, Reuben Tan, Qianhui Wu, Ruijie Zheng, Baolin Peng, Yongyuan Liang, Yu Gu, MuCai, SeonghyeonYe, JoelJang, Yuquan Deng, Lars Liden, Jianfeng Gao 單位&#xff1a;微軟研究院&#xff0c;馬里蘭大學&#xff0c;威斯康星大學麥迪遜分校…

Linux中jdk-8u291-linux-x64 中jdk工具包

jdk-8u291-linux-x64 指的是適用于 64 位 Linux 系統的 Java 開發工具包&#xff08;JDK&#xff09;8 更新 291 版本。這是 JDK 的一個特定版本&#xff0c;用于開發 Java 應用程序和小程序。 jdk-8u291-linux-x64 網盤下載鏈接&#xff1a;夸克網盤分享

Baklib云內容中臺的核心架構是什么?

云內容中臺分層架構解析 現代企業內容管理系統的核心在于構建動態聚合與智能分發的云端中樞。以Baklib為代表的云內容中臺采用三層架構設計&#xff0c;其基礎層為數據匯聚工具集&#xff0c;通過標準化接口實現多源異構數據的實時采集與清洗&#xff0c;支持從CRM、ERP等業務…

17.3 LangSmith Evaluation 深度解析:構建數據驅動的模型優化體系

LangSmith Evaluation 深度解析:構建數據驅動的模型優化體系 關鍵詞:模型評估體系、自動化測試框架、業務指標對齊、A/B測試集成、生產級質量監控 1. Evaluation 核心功能全景 1.1 評估維度矩陣 維度評估指標示例采集方式質量評估準確率、相關性評分、事實性檢查人工標注+A…

華為 VRP 系統簡介配置SSH,TELNET遠程登錄

華為 VRP 系統簡介&配置TELNET遠程登錄 1.華為 VRP 系統概述 1.1 什么是 VRP VRP&#xff08;Versatile Routing Platform 華為數通設備操作系統&#xff09;是華為公司數據通信產品的通用操作系統平臺&#xff0c;從低端到核心的全系列路由器、以太網交換機、業務網關等…

算法基礎 -- 字符串哈希的基本概念和數學原理分析

字符串哈希的基本概念和數學原理分析 1. 字符串哈希的定義和基本概念 哈希函數的定義 哈希函數&#xff08;Hash Function&#xff09;是一種將任意長度的輸入映射為固定長度輸出的函數。對于字符串而言&#xff0c;哈希函數通過某種算法將字符串轉換成一個整數&#xff0c;…

從新加坡《Companion Guide on Securing AI Systems 》看可信AI全生命周期防護框架構建

從新加坡《AI系統安全指南配套手冊》看可信AI全生命周期防護框架構建 一、引言 1.1 研究背景與意義 近年來,人工智能(AI)技術以前所未有的速度蓬勃發展,已然成為推動各行業變革與創新的核心驅動力。從醫療領域輔助疾病診斷,到金融行業的風險預測與智能投顧,再到交通領…

C++學習之C++初識、C++對C語言增強、對C語言擴展

一.C初識 1.C簡介 2.第一個C程序 //#include <iostream> //iostream 相當于 C語言下的 stdio.h i - input 輸入 o -output 輸出 //using namespace std; //using 使用 namespace 命名空間 std 標準 &#xff0c;理解為打開一個房間&#xff0c;房間里有我們所需…

HTMLS基本結構及標簽

HTML5是目前制作網頁的核心技術&#xff0c;有叫超文本標記語言。 基本結構 聲明部分位于文檔的最前面&#xff0c;用于向瀏覽器說明當前文檔使用HTML標準規范。 根部標簽位于聲明部分后&#xff0c;用于告知瀏覽器這是一個HTML文檔。< html>表示文檔開始&#xff0c;&l…

eMMC存儲器詳解(存儲區域結構、EXT_CSD[179]、各分區介紹、主要引腳、命令格式與類型等)

讀本篇博文所需要的先行知識 關于芯片內部的ROM的作用、工作原理的介紹&#xff0c;鏈接如下&#xff1a; https://blog.csdn.net/wenhao_ir/article/details/145969584 eMMC的物理結構、特點、用途 這個標題的相關內容見我的另一篇博文&#xff0c;博文鏈接如下&#xff1a…

分布式鎖—2.Redisson的可重入鎖一

大綱 1.Redisson可重入鎖RedissonLock概述 2.可重入鎖源碼之創建RedissonClient實例 3.可重入鎖源碼之lua腳本加鎖邏輯 4.可重入鎖源碼之WatchDog維持加鎖邏輯 5.可重入鎖源碼之可重入加鎖邏輯 6.可重入鎖源碼之鎖的互斥阻塞邏輯 7.可重入鎖源碼之釋放鎖邏輯 8.可重入鎖…