初探Reforcement Learning強化學習【QLearning/Sarsa/DQN】

文章目錄

      • 一、Q-learning
        • 現實理解:
        • 舉例:
        • 回顧:
      • 二、Sarsa
        • 和Q-learning的區別
      • 三、Deep Q-Network
        • Deep Q-Network是如何工作的?
          • 前處理:
          • Convolution Networks
          • Experience Replay

一、Q-learning

是RL中model-free、value-based算法,Q即為Q(s,a)就是在某一時刻s (s∈S)狀態下采取動作a (a∈A) 能夠獲得收益的期望,環境根據Agent的動作反饋相應的回報reward。將State與Action構建成一張Q-table來存儲Q值,然后根據Q值來選取能夠獲得最大的收益的動作。

Q-Tablea1a2
s1q(s1,a1)q(s1,a2)
s2q(s2,a1)q(s2,a2)
s3q(s3,a1)q(s3,a2)

也就是馬爾科夫決策過程:每個格子都是一個狀態 s t s_t st?, π ( a ∣ s ) \pi(a|s) π(as)在s狀態下選擇動作a的策略。 P ( s ’ ∣ s , a ) P(s’|s,a) P(s’∣s,a) ,也可以寫做 P s s ′ a P^a_{ss'} Pssa?為s狀態下選擇動作a轉換到下一狀態 s ′ s' s的概率。 R ( s ’ ∣ s , a ) R(s’|s,a) R(s’∣s,a)表示這一Action轉移的獎勵。

在這里插入圖片描述

我們的目標是最大累計獎勵的策略期望:

m a x π E [ ∑ t = 0 H γ t R ( S t , A t , S t + 1 ) ∣ π ] max_π E [ ∑ _{t = 0} ^H γ^ t R ( S_t , A_t , S_t + 1 )∣π] maxπ?E[t=0H?γtR(St?,At?,St?+1)π]

使用了時間差分法TD能夠離線學習,使用bellman方程對馬爾科夫過程求最優解。

在我們探索環境(environment)之前,Q-table 會給出相同的任意的設定值(大多數情況下是 0)。隨著對環境的持續探索,這個 Q-table 會通過迭代地使用Bellman方程(動態規劃方程)更新 Q(s,a) 來給出越來越好的近似。

在這里插入圖片描述

算法是基于貪婪的策略進行選擇:

在這里插入圖片描述

S t e p 4 Step 4 Step4中選擇動作a并且執行動作并返回一個新的狀態 s ’ s’ s和獎勵r,使用Bellman方程更新 Q ( s , a ) Q(s,a) Q(s,a):

在這里插入圖片描述

新 Q ( s , a ) = 老 Q ( s , a ) + α ? ( 現實 ? 估計 ) 新Q(s,a)=老Q(s,a)+\alpha*(現實-估計) Q(s,a)=Q(s,a)+α?(現實?估計)

現實理解:

在狀態s采取行動a到達 s ′ s' s,但是我們用于決策的Q表并沒有實際采取任何行為,所以我們只能使用期望值進行下一個狀態 s ′ s' s各個動作的潛在獎勵評估:

  • Q-Learning的做法是看看那種行為的Q值大,把最大的 Q ( s ′ , a ′ ) Q(s', a') Q(s,a) 乘上一個衰減值 γ \gamma γ (比如是0.9) 并加上到達 s ′ s' s時所獲取的獎勵 R(真真實實存在的)
  • 這個值更新為現實中的新Q值
舉例:
  • 一塊奶酪 = +1
  • 兩塊奶酪 = +2
  • 一大堆奶酪 = +10(訓練結束)
  • 吃到了鼠藥 = -10(訓練結束)

img

S t e p 1 Step 1 Step1 初始化Q表都是0(所有狀態下的所有動作)

S t e p 2 Step2 Step2 重復 S t e p 3 ? 5 Step3-5 Step3?5

S t e p 3 Step 3 Step3 選擇一個動作:向右走(隨機)

img

S t e p 4 Step 4 Step4 更新Q函數

在這里插入圖片描述

  • 首先,我們計算 Q 值的改變量 ΔQ(start, right)。
  • 接著我們將初始的 Q 值與 ΔQ(start, right) 和學習率的積相加。
回顧:
  • Function Q(state, action) → returns expected future reward of that action at that state.
  • Before we explore the environment: Q table gives the same arbitrary fixed value → but as we explore the environment → Q gives us a better and better approximation.

二、Sarsa

State-Action-Reward-State-Action,清楚反應了學習更新函數依賴的5個值,分別是當前狀態S1,當前狀態選中的動作A1,獲得的獎勵Reward,S1狀態下執行A1后取得的狀態S2及S2狀態下將會執行的動作A2

img

和Q-learning的區別
  • Q_learing下一步q表最大值 γ ? m a x a ′ Q ( s ′ , a ′ ) + r γ*max_{a'}Q(s^′,a')+r γ?maxa?Q(s,a)+r
  • Sarsa:具體的某一步估計q值 γ ? Q ( s ′ , a ′ ) + r γ*Q(s^′,a^′)+r γ?Q(s,a)+r

img

Q-learning更激進,當前的Q值和以后的Q都有關系,越近影響越大

  • Q_learning:取max,也就是不考慮最終走到很大負獎勵的值,只考慮會不會最終獲得最大獎勵,如果獲得了,那這條路就牛逼,所以么Q-learning更勇猛,不害怕錯,更激進
  • Sarsa :是取某具體的一步,只要周圍有錯(很大的負獎勵),那么就有機會獲得這個不好的獎勵,那么整條路反饋都會評分很差。之后會盡量避開。那么最終導致Sarsa會對犯錯更敏感,會遠離犯錯的點,更保守

三、Deep Q-Network

成千上萬的狀態和動作,Q-Table顯然不現實。使用Q-Network網絡將在給定狀態的情況下近似每個動作的不同 Q 值。

Image

Deep Q-Network是如何工作的?

Image

  • input: 一組 4 幀
  • 為給定狀態下每個可能的動作輸出一個 Q 值向量
  • output:取這個向量中最大的 Q 值來找到我們的最佳行動
前處理:

Image

  1. 對每個狀態進行灰度化,降低state復雜度
  2. 裁剪幀
  3. 減小幀的大小,將四個幀堆疊在一起。堆疊?因為它可以幫助我們處理時間限制問題,產生運動的概念
Convolution Networks

使用一個具有 ELU 激活函數的全連接層和一個輸出層(具有線性激活函數的全連接層),為每個動作生成 Q 值估計。

Experience Replay

problem1:

  • 權重的可變性,因為動作和狀態之間存在高度相關性。
  • 將與環境交互的順序樣本提供給我們的神經網絡。它往往會忘記以前的體驗,因為它會被新的體驗覆蓋。

solution:

  • create a “replay buffer.” This stores experience tuples while interacting with the environment, and then we sample a small batch of tuple to feed our neural network.
  • 重播緩沖區視為一個文件夾,其中每個工作表都是一個體驗元組。您可以通過與環境交互來喂養它。然后你隨機獲取一些工作表來饋送神經網絡

Image

problem2:

  • 每個 action 都會影響下一個 state。這將輸出一系列可以高度相關的體驗元組。按順序訓練網絡,我們的Agent可能會受到這種相關性的影響。

從 replay buffer中隨機采樣,我們可以打破這種相關性。這可以防止作值發生振蕩或發散。

solution:

  • 停止學習,同時與環境互動。我們應該嘗試不同的東西,隨機玩一點來探索狀態空間。我們可以將這些體驗保存在replay buffer中
  • 回憶這些經歷并從中學習。之后,返回 Play with updated value function。

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

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

相關文章

WebRTC技術EasyRTC嵌入式音視頻通信SDK打造遠程實時視頻通話監控巡檢解決方案

一、方案概述? 在現代工業生產、基礎設施維護等領域,遠程監控與巡檢工作至關重要。傳統的監控與巡檢方式存在效率低、成本高、實時性差等問題。EasyRTC作為一種先進的實時音視頻通信技術,具備低延遲、高穩定性、跨平臺等特性,能夠有效解決這…

專題四:綜合練習(括號組合算法深度解析)

以leetcode22題為例 題目分析: 給一個數字n,返回合法的所有的括號組合 算法原理分析: 你可以先考慮如何不重不漏的羅列所有的括號組合 清楚什么是有效的括號組合??? 1.所有的左括號的數量等于右括號的…

星云智控自定義物聯網實時監控模板-為何成為痛點?物聯網設備的多樣化-優雅草卓伊凡

星云智控自定義物聯網實時監控模板-為何成為痛點?物聯網設備的多樣化-優雅草卓伊凡 引言:物聯網監控的模板革命 在萬物互聯的時代,設備監控已成為保障物聯網系統穩定運行的核心環節。傳統的標準化監控方案正面臨著設備類型爆炸式增長帶來的…

5.27本日總結

一、英語 復習list2list29 二、數學 學習14講部分內容 三、408 學習計組1.2內容 四、總結 高數和計網明天結束當前章節,計網內容學完之后主要學習計組和操作系統 五、明日計劃 英語:復習lsit3list28,完成07年第二篇閱讀 數學&#…

幾種運放典型應用電路

運算放大器簡稱:OP、OPA、OPAMP、運放。 一、電壓跟隨器 電壓跟隨器顧名思義運放的輸入端電壓與運放的輸出電壓相等 這個電路一般應用目的是增加電壓驅動能力: 比如說有個3V電源,借一個負載,隨著負載電流變大,3V就會變小說明3V電源帶負載能力小,驅動能力弱,這個時候…

Android核心系統服務:AMS、WMS、PMS 與 system_server 進程解析

1. 引言 在 Android 系統中,ActivityManagerService (AMS)、WindowManagerService (WMS) 和 PackageManagerService (PMS) 是三個最核心的系統服務,它們分別管理著應用的生命周期、窗口顯示和應用包管理。 但你是否知道,這些服務并不是獨立…

從另一個視角理解TCP握手、揮手與可靠傳輸

本文將深入探討 TCP 協議中三次握手、四次揮手的原理,以及其保證可靠傳輸的機制。 一、三次握手:為何是三次,而非兩次? 建立 TCP 連接的過程猶如一場嚴謹的 “對話”,需要經過三次握手才能確保通信雙方的可靠連接。 三…

將Docker compose 部署的夜鶯V6版本升到V7版本的詳細步驟、常見問題解答及相關鏡像下載地址

環境說明 夜鶯官網:首頁 - 快貓星云Flashcat 夜鶯安裝程序下載地址:快貓星云下載中心 夜鶯v7.7.2鏡像(X86架構): https://download.csdn.net/download/jjk_02027/90851161 夜鶯ibex v1.2.0鏡像(X86架構…

JavaScript【4】數組和其他內置對象(API)

1.數組: 1.概述: js中數組可理解為一個存儲數據的容器,但與java中的數組不太一樣;js中的數組更像java中的集合,因為此集合在創建的時候,不需要定義數組長度,它可以實現動態擴容;js中的數組存儲元素時,可以存儲任意類型的元素,而java中的數組一旦創建后,就只能存儲定義類型的元…

永久免費!專為 Apache Doris 打造的可視化數據管理工具 SelectDB Studio V1.1.0 重磅發布!

作為全球領先的開源實時數據倉庫, Apache Doris Github Stars 已超過 13.6k,并在 5000 余家中大型企業生產環境得到廣泛應用,支撐業務核心場景,成為眾多企業數據分析基礎設施不可或缺的重要基座。過去,Apache Doris 用…

數字萬用表與指針萬用表使用方法及注意事項

在電子測量領域,萬用表是極為常用的工具,數字萬用表和指針萬用表各具特點。熟練掌握它們的使用方法與注意事項,能確保測量的準確性與安全性。下面為您詳細介紹: 一 、數字萬用表按鈕功能 > 進入及退出手動量程模式 每 按 […

深度學習Dropout實現

深度學習中的 Dropout 技術在代碼層面上的實現通常非常直接。其核心思想是在訓練過程中,對于網絡中的每個神經元(或者更精確地說,是每個神經元的輸出),以一定的概率 p 隨機將其輸出置為 0。在反向傳播時,這…

AtCoder AT_abc406_c [ABC406C] ~

前言 除了 A 題,唯一一道一遍過的題。 題目大意 我們定義滿足以下所有條件的一個長度為 N N N 的序列 A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\dots,A_N) A(A1?,A2?,…,AN?) 為波浪序列: N ≥ 4 N\ge4 N≥4(其實滿足后面就必須滿足這…

Java Web 應用安全響應頭配置全解析:從單體到微服務網關的實踐

背景:為什么安全響應頭至關重要? 在 Web 安全領域,響應頭(Response Headers)是防御 XSS、點擊劫持、跨域數據泄露等攻擊的第一道防線。通過合理配置響應頭,可強制瀏覽器遵循安全策略,限制惡意行…

如何停止終端呢?ctrl+c不管用,其他有什么方法呢?

如果你在終端中運行了一個程序(比如 Python GUI tkinter 應用),按下 Ctrl C 沒有作用,一般是因為該程序: 運行了主事件循環(例如 tkinter.mainloop()) 或 在子線程中運行,而 Ctrl …

深入解析 React 的 useEffect:從入門到實戰

文章目錄 前言一、為什么需要 useEffect?核心作用: 二、useEffect 的基礎用法1. 基本語法2. 依賴項數組的作用 三、依賴項數組演示1. 空數組 []:2.無依賴項(空)3.有依賴項 四、清理副作用函數實戰案例演示1. 清除定時器…

Ubuntu 更改 Nginx 版本

將 1.25 降為 1.18 先卸載干凈 # 1. 完全卸載當前Nginx sudo apt purge nginx nginx-common nginx-core# 2. 清理殘留配置 sudo apt autoremove sudo rm -rf /etc/apt/sources.list.d/nginx*.list修改倉庫地址 # 添加倉庫(通用穩定版倉庫) codename$(…

如何在 Windows 10 或 11 中安裝 PowerShellGet 模塊?

PowerShell 是微軟在其 Windows 操作系統上提供的強大腳本語言,可用于通過命令行界面自動化各種任務,適用于 Windows 桌面或服務器環境。而 PowerShellGet 是 PowerShell 中的一個模塊,提供了用于從各種來源發現、安裝、更新和發布模塊的 cmdlet。 本文將介紹如何在 PowerS…

NBA足球賽事直播源碼體育直播M33模板賽事源碼

源碼名稱:體育直播賽事扁平自適應M33直播模板源碼 開發環境:帝國cms7.5 空間支持:phpmysql 帶軟件采集,可以掛著自動采集發布,無需人工操作! 演示地址:NBA足球賽事直播源碼體育直播M33模板賽事…

【Python】魔法方法是真的魔法! (第二期)

還不清楚魔術方法? 可以看看本系列開篇:【Python】小子!是魔術方法!-CSDN博客 【Python】魔法方法是真的魔法! (第一期)-CSDN博客 在 Python 中,如何自定義數據結構的比較邏輯&…