從獎勵到最優決策:動作價值函數與價值學習

從獎勵到最優決策:動作價值函數與價值學習

價值學習

本文旨在詳細介紹價值學習的基本理論與算法,并通過具體示例幫助你理解從動作價值函數到深度Q網絡(DQN)的整體流程。

一、動作價值函數

基礎概念

  • 獎勵 R R R:
    agent每作出一個動作,環境都會更新,并且會給出一個獎勵 R R R,每一個獎勵 R R R都依賴于前一個狀態和動作。
  • 回報(return) U t U_t Ut?:
    回報依賴從 T T T時刻開始的所有的動作和所有的狀態

U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + ? + γ T ? t R T U_t = R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \gamma^3 R_{t+3} + \dots + \gamma^{T-t} R_T Ut?=Rt?+γRt+1?+γ2Rt+2?+γ3Rt+3?+?+γT?tRT?

回報的特點:

  • 長期回報:一個狀態 s s s的回報 U t U_t Ut?,是所有 t t t時刻的獎勵的和,所以 U t U_t Ut?是一個長期的回報。回報 U t U_t Ut?依賴從 T T T時刻開始的所有的動作和所有的狀態
  • 動作的隨機性:動作的隨機性,即在狀態 s s s下,采取動作 a a a的概率是不確定的。動作的隨機性來自策略 π \pi π的抽樣。

P [ A = a ∣ S = s ] = π ( a ∣ s ) \mathbb{P}[ A = a | S = s ] = \pi(a | s) P[A=aS=s]=π(as)

  • 狀態的隨機性:狀態的隨機性來自狀態轉移函數 p p p,新的狀態市場函數 p p p中抽樣得到的

P [ S = s ′ ∣ S = s , A = a ] = p ( s ′ ∣ s , a ) \mathbb{P}[ S = s' | S = s, A = a ] = p(s' | s, a) P[S=sS=s,A=a]=p(ss,a)

  • 總體隨機性: 動作和狀態都是隨機的,因此 U t U_t Ut?也是一個隨機變量。

U t U_t Ut?求期望得到動作價值函數

因為回報 U t U_t Ut?是一個隨機變量,我們要消除它的隨機性,只留下 s t s_t st? a t a_t at?兩個變量,我們可以對它求期望。所以 U t U_t Ut?的期望值可以表示為:
Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_\pi(s_t,a_t) = \mathbb{E}[U_t | S_t = s_t, A_t = a_t] Qπ?(st?,at?)=E[Ut?St?=st?,At?=at?]

這樣我們就得到動作價值函數(Action-Value Function).
動作價值函數只和策略 π \pi π、當前的狀態和動作( s t s_t st? a t a_t at?)有關

動作價值函數的意義

動作價值函數可以反映出當前狀態 s t s_t st?下,采取動作 a t a_t at?的好壞程度(期望)。

最優動作價值函數(Optimal Action-Value Function)

要想消除策略 π \pi π對動作價值函數的隨機性,我們可以定義一個最優動作價值函數(Optimal Action-Value Function),對 Q π Q_\pi Qπ?求最大化:

Q ? ( s , a ) = m a x π Q π ( s t , a t ) Q^* (s, a) = {max}_\pi Q_\pi (s_t, a_t) Q?(s,a)=maxπ?Qπ?(st?,at?)

最優動作價值函數是一個最優的動作價值函數,它表示了當前狀態 s t s_t st?下,采取動作 a t a_t at?的最優情況,它與策略 π \pi π無關。要使agent在當前狀態 s t s_t st?下采取動作 a t a_t at?,得到的回報 U t U_t Ut?最多就是 Q ? ( s t , a t ) Q^* (s_t, a_t) Q?(st?,at?)

Q ? Q^* Q?函數可以指導agent做決策,它可以為所有的動作打分,并且選擇分數最高的作為動作。

如何理解 Q ? Q^* Q?函數

我們可以理解 Q ? Q^* Q?函數,它表示了當前狀態 s t s_t st?下,采取動作 a t a_t at?的平均回報,你可以把它當作一個先知,它可以告訴你每一支股票的期望收益。

二、價值學習的基本思想

雖然 Q ? Q^* Q?函數非常厲害,但是實際上我們并沒有 Q ? Q^* Q?函數,我們只能通過學習得到 Q ? Q^* Q?函數。我們可以通過學習一個函數來近似 Q ? Q^* Q?函數。這就是價值學習的基本思想。

Deep Q-Network(DQN)

使用一個深度學習的神經網絡來近似 Q ? Q^* Q?函數。

我們可以使用一個函數來代表這個神經網絡
Q ( s , a ; W ) → Q ? ( s , a ) Q(s,a;W) \rightarrow Q^* (s,a) Q(s,a;W)Q?(s,a)

其中:

  • W: 神經網絡的參數
  • s: 神經網絡的輸入,狀態。
  • 神經網絡的輸出是很多數值,這些數值是對每個可能的動作的打分。

舉個例子,在超級瑪麗中,游戲可以有三個動作,分別是向左,向右,向上。
我們將游戲的一幀通過卷積、特征提取輸入到DQN中,然后得到三個動作的打分。

  • 向上: 2000
  • 向右: 1000
  • 向右: 1000

很明顯這時我們應該采取的動作是向上。

DQN玩游戲的具體流程

一個使用深度Q網絡(DQN)來玩電子游戲的基本流程。流程從當前狀態開始,通過選擇動作、接收獎勵、更新狀態,不斷循環進行。以下是詳細的步驟描述:

  1. 開始于當前狀態:流程從當前狀態 S t S_t St? 開始。

  2. 選擇動作:在狀態 S t S_t St? 下,通過最大化Q值函數 Q ( S t , a ; w ) Q(S_t, a; \mathbf{w}) Q(St?,a;w) 來選擇一個動作 a t a_t at?。這里的 w \mathbf{w} w 表示Q值函數的參數。

  3. 執行動作并觀察結果:執行動作 a t a_t at? 后,狀態轉移函數 P P P觀察到下一個狀態 S t + 1 S_{t+1} St+1? 和獲得的獎勵 r t r_t rt?。獎勵可以用來更更新參數

  4. 更新狀態:狀態更新到 S t + 1 S_{t+1} St+1?

  5. 重復選擇動作:在新的狀態 S t + 1 S_{t+1} St+1? 下,再次通過最大化Q值函數來選擇動作 a t + 1 a_{t+1} at+1?

  6. 繼續循環:這個過程不斷重復,即在每個新的狀態 S t + 2 , S t + 3 , … S_{t+2}, S_{t+3}, \ldots St+2?,St+3?, 下,都通過最大化Q值函數來選擇最優動作 a t + 2 , a t + 3 , … a_{t+2}, a_{t+3}, \ldots at+2?,at+3?,,并觀察到相應的獎勵 r t + 1 , r t + 2 , … r_{t+1}, r_{t+2}, \ldots rt+1?,rt+2?,。知道游戲結束

  7. 狀態轉移:每個狀態 S t + 1 , S t + 2 , S t + 3 , … S_{t+1}, S_{t+2}, S_{t+3}, \ldots St+1?,St+2?,St+3?, 都是根據當前狀態和動作,通過概率分布 p ( ? ∣ S t , a t ) p(\cdot | S_t, a_t) p(?St?,at?) 來確定的。

這個流程展示了如何通過不斷學習和選擇最優動作來最大化累積獎勵,這是強化學習中DQN算法的核心思想。

如何訓練DQN——TD算法(Temporal Difference Algorithm,時差算法)

實際問題類比

假如我想要從廣州坐高鐵到西安,我們可以先使用 Q ( W ) Q(W) Q(W)函數進行預測。假設預測值為q = 15小時 ,注意此時模型還在訓練,預測的值可能是完全錯誤的,然后我們實際坐車是y = 10個小時,這樣我們就得到一個誤差,我們希望這個誤差越小越好。

  • 得到損失
    L o s s = 1 2 ( q ? y ) 2 Loss = \frac{1}{2}(q - y)^2 Loss=21?(q?y)2

  • 梯度
    ? L ? w = ? L ? q ? q ? w = ( q ? y ) ? Q ( w ) ? w \frac{\partial L}{\partial w} = \frac{\partial L}{\partial q} \frac{\partial q}{\partial w} = (q - y) \frac{\partial Q(w)}{\partial w} ?w?L?=?q?L??w?q?=(q?y)?w?Q(w)?

  • 梯度下降
    w t + 1 = w t ? α ? L ? w ∣ w = w t w_{t+1} = w_t - \alpha \frac{\partial L}{\partial w} |_{w = w_t} wt+1?=wt??α?w?L?w=wt??

提出問題:上述算法必須完成整個旅途才能對模型做一次更新,假如沒有完成全程,如何進行更新

假如我從廣州做到西安,使用 Q ( W ) Q(W) Q(W)函數進行預測。預測值為q = 15小時 ,但是我坐了三個個小時到了武漢,中途下車不去西安,這時我該如何進行更新模型呢?

我到了武漢,還可以使用 Q ( W ) Q(W) Q(W)函數進行預測,預測值為q = 10小時

  • 模型最初的預測: Q ( W ) Q(W) Q(W) = 15小時
  • 我們可以使用武漢的時間進行更新模型的預測: Q ( W ) Q(W) Q(W) = 3小時(實際的時間) + 10小時(再進行預測的時間 = 13小時,我們將這個值稱為TD target

TD target與最開始預測的q 同樣也有一個誤差,我們也可以利用這個誤差進行更新模型。

TD target y = 13 y = 13 y=13
Loss : L o s s = 1 2 ( Q ( w ) ? y ) 2 Loss = \frac{1}{2}(Q(w) - y)^2 Loss=21?(Q(w)?y)2

梯度 ? L ? w = ( 15 ? 13 ) ? Q ( w ) ? w \frac{\partial L}{\partial w} = (15 - 13) \frac{\partial Q(w)}{\partial w} ?w?L?=(15?13)?w?Q(w)?

梯度下降
w t + 1 = w t ? α ? L ? w ∣ w = w t w_{t+1} = w_t - \alpha \frac{\partial L}{\partial w} |_{w = w_t} wt+1?=wt??α?w?L?w=wt??

這個算法就是時差算法,它通過不斷更新模型來最小化損失函數,從而提高模型的預測性能。

換成是強化學習也是同樣的道理,我們不需要完成游戲全程也能更新參數。

并據此更新模型參數。

三、將TD算法應用到DQN中

再上述例子中,我們可以發現有以下的等式;

T 西安 → 廣州 ≈ T 西安 → 武漢 + T 武漢 → 廣州 T_{西安 \rightarrow{廣州}} \approx T_{西安 \rightarrow{武漢}} + T_{武漢 \rightarrow{廣州}} T西安廣州?T西安武漢?+T武漢廣州?

其中 T 西安 → 廣州 T_{西安 \rightarrow{廣州}} T西安廣州?是模型預測的, T 西安 → 武漢 T_{西安 \rightarrow{武漢}} T西安武漢?是實際時間, T 武漢 → 廣州 T_{武漢 \rightarrow{廣州}} T武漢廣州?是再進行預測的時間。

那么在深度強化學習中,也應該有一個等式。

Q ( s t , a t ; W ) ≈ R t + γ Q ( s t + 1 , a t + 1 ; W ) Q(s_t,a_t;W) \approx R_t + \gamma Q(s_{t+1},a_{t+1};W) Q(st?,at?;W)Rt?+γQ(st+1?,at+1?;W)

模型的輸出 Q ( s t , a t ; W ) Q(s_t,a_t;W) Q(st?,at?;W)是對回報 E ( U t ) \mathbb{E}(U_t) E(Ut?)做出的估計,
模型的輸出 Q ( s t + 1 , a t + 1 ; W ) Q(s_{t+1},a_{t+1};W) Q(st+1?,at+1?;W)是對回報 E ( U t + 1 ) \mathbb{E}(U_{t+1}) E(Ut+1?)做出的估計,

所以:
Q ( s t , a t ; W ) ≈ E ( R t + γ Q ( s t + 1 , a t + 1 ; W ) ) Q(s_t,a_t;W) \approx \mathbb{E}(R_t + \gamma Q(s_{t+1},a_{t+1};W)) Q(st?,at?;W)E(Rt?+γQ(st+1?,at+1?;W))

更新過程:

  • 開始的預測 Prediction: Q ( S t , a t ; w t ) Q(S_t, a_t; \mathbf{w}_t) Q(St?,at?;wt?).
  • TD target:
    y t = r t + γ ? Q ( S t + 1 , a t 1 + ; w t ) = r t + γ ? max ? a Q ( S t + 1 , a ; w t ) . y_t = r_t + \gamma \cdot Q(S_{t+1}, a_{t1+}; \mathbf{w}_t) = r_t + \gamma \cdot \max_a Q(S_{t+1}, a; \mathbf{w}_t). yt?=rt?+γ?Q(St+1?,at1+?;wt?)=rt?+γ?amax?Q(St+1?,a;wt?).
  • Loss: L t = 1 2 [ Q ( S t , a t ; w ) ? y t ] 2 L_t = \frac{1}{2} [Q(S_t, a_t; \mathbf{w}) - y_t]^2 Lt?=21?[Q(St?,at?;w)?yt?]2.
  • 梯度更新Gradient descent: w t + 1 = w t ? α ? ? L t ? w ∣ w = w t \mathbf{w}_{t+1} = \mathbf{w}_t - \alpha \cdot \frac{\partial L_t}{\partial \mathbf{w}} \big|_{\mathbf{w}=\mathbf{w}_t} wt+1?=wt??α??w?Lt?? ?w=wt??.

通過這種方式,TD算法能夠逐步減小預測誤差,進而提高模型的預測性能,并幫助智能體在不斷更新中趨向最優策略

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

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

相關文章

智能手表該存什么音頻和文本?場景化存儲指南

文章目錄 為什么需要“場景化存儲”?智能手表的定位手機替代不了的場景碎片化的場景存儲 音頻篇:智能手表該存什么音樂和音頻?運動場景通勤場景健康場景 文本篇:哪些文字信息值得放進手表?(部分情況可使用圖…

液態神經網絡技術指南

一、引言 1.從傳統神經網絡到液態神經網絡 神經網絡作為深度學習的核心工具,在圖像識別、自然語言處理、推薦系統等領域取得了巨大成功。尤其是卷積神經網絡(CNN)、循環神經網絡(RNN)、長短期記憶網絡(LS…

hive通過元數據庫刪除分區操作步驟

刪除分區失敗: alter table proj_60_finance.dwd_fm_ma_kpi_di_mm drop partition(year2025,month0-3,typeADJ); 1、查詢分區的DB_ID、TBL_ID – 獲取數據庫ID-26110 SELECT DB_ID FROM DBS WHERE NAME ‘proj_60_finance’; – 獲取表ID-307194 SELECT TBL_ID FR…

1990-2019年各地級市GDP數據

1990-2019年各地級市GDP數據 1、時間:1990-2019年 2、來源:城市年鑒 3、指標:行政區劃代碼、年份、省份、城市、經度、緯度、地區生產總值(萬元) 4、范圍:250地級市 5、指標解釋:地區生產總值(Gross R…

滄州鐵獅子

又名“鎮海吼”,是中國現存年代最久、形體最大的鑄鐵獅子,具有深厚的歷史文化底蘊和獨特的藝術價值。以下是關于滄州鐵獅子的詳細介紹: 歷史背景 ? 鑄造年代:滄州鐵獅子鑄造于后周廣順三年(953年)&#…

《Java八股文の文藝復興》第十一篇:量子永生架構——對象池的混沌邊緣(終極試煉·完全體)

Tags: - Java高并發 - 量子架構 - 混沌工程 - 賽博修真 - 三體防御 目錄: 卷首語:蝴蝶振翅引發的量子海嘯 第一章:混沌初開——對象池的量子涅槃(深度擴展) 第二章:混沌計算——對象復活的降維打擊&…

Java面試34-Kafka的零拷貝原理

在實際應用中,如果我們需要把磁盤中的某個文件內容發送到遠程服務器上,那么它必須要經過幾個拷貝的過程: 從磁盤中讀取目標文件內容拷貝到內核緩沖區CPU控制器再把內核緩沖區的數據復制到用戶空間的緩沖區在應用程序中,調用write…

TF-IDF忽略詞序問題思考

自從開始做自然語言處理的業務,TF-IDF就是使用很頻繁的文本特征技術,他的優點很多,比如:容易理解,不需要訓練,提取效果好,可以給予大規模數據使用,總之用的很順手,但是人…

SQL122 刪除索引

alter table examination_info drop index uniq_idx_exam_id; alter table examination_info drop index full_idx_tag; 描述 請刪除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。 后臺會通過 SHOW INDEX FROM examination_info 來對比輸出結果。…

Langchat平臺知識庫測試

平臺介紹: LangChat是Java生態下企業級AIGC項目解決方案,集成RBAC和AIGC大模型能力,幫助企業快速定制AI知識庫、企業AI機器人。 支持的AI大模型:Gitee AI / 阿里通義 / 百度千帆 / DeepSeek / 抖音豆包 / 智譜清言 / 零一萬物 /…

Vue3 Composition API 深度開發指南

Vue3 Composition API 深度開發指南 響應式系統核心解析 1.1 響應式原理解構 Vue3 基于 Proxy 實現響應式追蹤,其核心流程為: const reactiveHandler {get(target, key, receiver) {track(target, key) // 依賴收集return Reflect.get(target, key, …

基于自回歸模型的酒店評論生成

《DeepSeek大模型高性能核心技術與多模態融合開發(人工智能技術叢書)》(王曉華)【摘要 書評 試讀】- 京東圖書 我們使用新架構的模型完成情感分類,可以看到,使用注意力機制可以很好地對特征進行抽取從而完成二分類的情感分類任務…

關于轉置卷積

🧠 具體講解神經網絡中的轉置卷積(Transposed Convolution) 🧭 1. 轉置卷積的動機:為什么我們需要它? 標準卷積通常會降低特征圖的空間尺寸(比如從 64x64 → 32x32),這對…

JavaScript 模塊化詳解( CommonJS、AMD、CMD、ES6模塊化)

一.CommonJS 1.概念 CommonJS 規范概述了同步聲明依賴的模塊定義。這個規范主要用于在服務器端實現模塊化代碼組 織,但也可用于定義在瀏覽器中使用的模塊依賴。CommonJS 模塊語法不能在瀏覽器中直接運行;在瀏覽器端,模塊需要提前編譯打包處理…

TCP BBR 的優化

前段時間,老板發了篇資料,下面是我學習的相關記錄整理。 https://aws.amazon.com/cn/blogs/china/talking-about-network-optimization-from-the-flow-control-algorithm/ PS:ubuntu24默認使用的tcp控制算法。還是 cubic sysctl net.ipv4.tc…

什么是異步?

什么是異步? 異步是一個術語,用于描述不需要同時行動或協調就能獨立運行的流程。這一概念在技術和計算領域尤為重要,它允許系統的不同部分按自己的節奏運行,而無需等待同步信號或事件。在區塊鏈技術中,異步是指網絡中…

SSM婚紗攝影網的設計

🍅點贊收藏關注 → 添加文檔最下方聯系方式咨詢本源代碼、數據庫🍅 本人在Java畢業設計領域有多年的經驗,陸續會更新更多優質的Java實戰項目希望你能有所收獲,少走一些彎路。🍅關注我不迷路🍅 項目視頻 SS…

石頭剪刀布游戲

自己寫的一個石頭剪刀布游戲&#xff0c;如果有需要更改的地方請指出 #define _CRT_SECURE_NO_WARNINGS // scanf_s編寫起來太過于麻煩&#xff0c;直接把這個警告關掉&#xff0c;便于編寫。 #include <stdio.h> #include <stdlib.h> #include <time.h> //…

大數據系列之:Kerberos

大數據系列之&#xff1a;Kerberos 基本概念工作流程安全特性應用場景總結加密原理Kerberos認證流程更改您的密碼授予賬戶訪問權限票證管理Kerberos 票據屬性使用 kinit 獲取票據使用 klist 查看票據使用 kdestroy 銷毀票據.k5identity 文件描述 Kerberos 是一種網絡認證協議&a…

WPF 免費UI 控件HandyControl

示例效果和代碼 直接可以用 Button 按鈕 | HandyOrg 1.安裝 , 輸入 HandyControl 2.<!--配置HandyControl--> <!--配置HandyControl--> <ResourceDictionary Source"pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/> …