化學(xué)習(xí)筆記:Dyna-Q 與 DQN 算法詳解)
文檔教程人工智能大模型RLHF【免費(fèi)下載鏈接】Awesome-ML-SYS-TutorialMy learning notes for ML SYS.項目地址https://gitcode.com/gh_mirrors/aw/Awesome-ML-SYS-Tutorial點(diǎn)擊查看免費(fèi)下載本指南基于 Awesome-ML-SYS-Tutorial 倉庫中 rlhf/rl-walk-through/part-5.md 展開聚焦兩條從表格型價值方法走向?qū)嵱没闹匾窂揭皇且氕h(huán)境模型的Dyna-QQ-planning二是用神經(jīng)網(wǎng)絡(luò)做函數(shù)擬合的DQN深度 Q 網(wǎng)絡(luò)。讀完本文你將掌握基于模型與無模型強(qiáng)化學(xué)習(xí)的區(qū)別、Dyna-Q 如何用模擬采樣降低樣本復(fù)雜度以及 DQN 中經(jīng)驗回放與目標(biāo)網(wǎng)絡(luò)兩大穩(wěn)定訓(xùn)練模塊的設(shè)計動機(jī)與完整實現(xiàn)流程為后續(xù)理解策略梯度、Actor-Critic 乃至 PPO/GRPO 等現(xiàn)代 RLHF 算法建立直觀基礎(chǔ)。一、背景基于模型 vs 無模型的強(qiáng)化學(xué)習(xí)在強(qiáng)化學(xué)習(xí)中模型通常指與智能體交互的環(huán)境模型即對環(huán)境的狀態(tài)轉(zhuǎn)移概率和獎勵函數(shù)進(jìn)行建模。根據(jù)是否具有環(huán)境模型強(qiáng)化學(xué)習(xí)算法分為兩類基于模型的強(qiáng)化學(xué)習(xí)model-based模型可以是事先已知的也可以是根據(jù)智能體與環(huán)境交互采樣到的數(shù)據(jù)學(xué)習(xí)得到的然后用這個模型幫助策略提升或價值估計。動態(tài)規(guī)劃中的策略迭代與價值迭代見 part-3.md便是基于模型的強(qiáng)化學(xué)習(xí)方法但其中環(huán)境模型是事先已知的。無模型的強(qiáng)化學(xué)習(xí)model-free不依賴環(huán)境模型直接根據(jù)與環(huán)境交互采樣到的數(shù)據(jù)做策略提升或價值估計。時序差分算法 Sarsa 和 Q-learning見 part-4.md便是兩種典型代表它們在狀態(tài)轉(zhuǎn)移概率無法寫出的場景下直接使用交互采樣的數(shù)據(jù)來學(xué)習(xí)。本小結(jié)介紹的Dyna-Q 算法是非?;A(chǔ)的基于模型的強(qiáng)化學(xué)習(xí)算法其獨(dú)特之處在于它的環(huán)境模型是通過采樣數(shù)據(jù)估計得到的而非事先給定。二、強(qiáng)化學(xué)習(xí)的兩個評價指標(biāo)強(qiáng)化學(xué)習(xí)算法有兩個重要的評價指標(biāo)期望回報算法收斂后的策略在初始狀態(tài)下的期望回報樣本復(fù)雜度算法達(dá)到收斂結(jié)果需要在真實環(huán)境中采樣的樣本數(shù)量?;谀P偷膹?qiáng)化學(xué)習(xí)算法由于具有一個環(huán)境模型智能體可以額外和環(huán)境模型交互對真實環(huán)境中樣本的需求量往往就會減少因此通常會比無模型的強(qiáng)化學(xué)習(xí)算法具有更低的樣本復(fù)雜度。但需要注意環(huán)境模型可能并不準(zhǔn)確不能完全代替真實環(huán)境因此基于模型的強(qiáng)化學(xué)習(xí)算法收斂后其策略的期望回報可能不如無模型的強(qiáng)化學(xué)習(xí)算法——這構(gòu)成了基于模型方法省樣本與模型誤差之間的根本權(quán)衡。從 ML SYS 視角看樣本復(fù)雜度的直接含義是 rollout采樣成本真實環(huán)境交互例如 RLHF 中調(diào)用大模型生成數(shù)據(jù)昂貴若能用廉價的環(huán)境模型替代部分采樣可顯著降低訓(xùn)練成本這正是 Dyna-Q 思想的實用價值所在。三、Dyna-Q用 Q-planning 與模型模擬數(shù)據(jù)共同改進(jìn)策略3.1 Q-planning 的核心思想Dyna-Q 算法采用一種叫做Q-planning的方法來基于模型生成模擬數(shù)據(jù)然后用模擬數(shù)據(jù)和真實數(shù)據(jù)一起改進(jìn)策略。Q-planning 每次選取一個曾經(jīng)訪問過的狀態(tài)采取一個曾經(jīng)在該狀態(tài)下執(zhí)行過的動作通過模型得到轉(zhuǎn)移后的狀態(tài)以及獎勵并根據(jù)這個模擬數(shù)據(jù)用 Q-learning 的更新方式來更新動作價值函數(shù)。簡單來說Dyna-Q 在每次迭代中會進(jìn)行一步真實采樣和多步與模型進(jìn)行的模擬采樣然后利用模擬采樣數(shù)據(jù)和真實采樣數(shù)據(jù)一起改進(jìn)策略。3.2 Dyna-Q 完整偽代碼- 初始化 Q(s, a)初始化模型 M(s, a) - for 序列 e 1 - E do: - 得到初始狀態(tài) s - for t 1 - T do: - 用 ε-貪婪策略根據(jù) Q 選擇當(dāng)前狀態(tài) s 下的動作 a - 得到環(huán)境反饋的 rs - Q(s, a) ← Q(s, a) α [r γ max_{a} Q(s, a) - Q(s, a)] - M(s, a) ← r, s - for 次數(shù) n 1 - N do: 1. 隨機(jī)選擇一個曾經(jīng)訪問過的狀態(tài) s_m 2. 獲取一個曾經(jīng)在狀態(tài) s_m 下執(zhí)行過的動作 a_m 3. r_m, s_m ← M(s_m, a_m) 4. Q(s_m, a_m) ← Q(s_m, a_m) α [r_m γ max_{a} Q(s_m, a) - Q(s_m, a_m)] - end for - s ← s - end for - end for可以看到在每次環(huán)境反饋交互執(zhí)行一次 Q-learning 之后Dyna-Q 會進(jìn)行n 次 Q-planning第 3 行真實環(huán)境交互得到的轉(zhuǎn)移 $(s, a, r, s)$ 先用來按 Q-learning 更新規(guī)則更新一次 $Q(s, a)$這是無模型學(xué)習(xí)部分第 4 行同一經(jīng)驗同時用來投射/更新環(huán)境模型$M(s, a) \leftarrow r, s$這是模型學(xué)習(xí)部分第 59 行從已訪問過的狀態(tài)-動作對中隨機(jī)取樣讓模型 $M$ 產(chǎn)生模擬轉(zhuǎn)移 $(s_m, a_m) \to (r_m, s_m)$再按同樣的 Q-learning 規(guī)則更新 $Q(s_m, a_m)$這是基于模型的規(guī)劃planning部分。Q-planning 次數(shù) N 是一個可調(diào)節(jié)的參數(shù)當(dāng) N 0 時Dyna-Q 就退化為普通的 Q-learning。需要特別指出上述 Dyna-Q 算法執(zhí)行在一個簡單且確定的環(huán)境中所以當(dāng)看到一條經(jīng)驗數(shù)據(jù) $(s, a, r, s)$ 時可以直接投射模型做出更新即 $M(s, a) \leftarrow r, s$在隨機(jī)環(huán)境中模型通常需要記錄多次轉(zhuǎn)移的統(tǒng)計信息如頻率計數(shù)而不能用單條經(jīng)驗直接覆蓋。銜接前文第 1 步的 ε-貪婪策略是 exploration/exploitation 平衡的標(biāo)準(zhǔn)做法其 Q 值增量式更新的思想來自多臂老虎機(jī)一節(jié)見 part-1.md第 2 步的 Q-learning 更新公式正是 off-policy 的時序差分更新見 part-4.mdDyna-Q 的 Q-planning 沿用了同一更新算子。四、DQN用神經(jīng)網(wǎng)絡(luò)函數(shù)擬合解決連續(xù)狀態(tài)問題4.1 動機(jī)Q 表格的局限Q-learning 算法需要將每個狀態(tài)下所有動作的 Q 值表格存儲下來當(dāng)狀態(tài)空間過大時這個表格會非常大而實際上很多情況下動作和狀態(tài)都不是離散的根本無法窮舉。因此只能通過函數(shù)來擬合估計 Q 值。這里介紹的 DQNdeep Q network用于解決連續(xù)狀態(tài)、離散動作的問題。CartPole 是一個非常經(jīng)典的連續(xù)狀態(tài)和離散動作問題智能體的任務(wù)是通過左右移動保持車上的桿豎直若桿的傾斜度數(shù)過大或車子離初始位置左右的偏離程度過大或堅持時間到達(dá) 200 幀則游戲結(jié)束。智能體的狀態(tài)是一個維數(shù)為 4 的向量每一維都是連續(xù)的動作是離散的只能左移或右移動作空間大小為 2。4.2 函數(shù)擬合思想與 Q 網(wǎng)絡(luò)假設(shè)小車的動作價值函數(shù)為 $Q(s, a)$由于狀態(tài)是連續(xù)的無法使用表格記錄一個常見的解決方法是使用**函數(shù)擬合function approximation**思想即用一個神經(jīng)網(wǎng)絡(luò)來表示 Q若動作是**連續(xù)無限**的神經(jīng)網(wǎng)絡(luò)的輸入是狀態(tài) $s$ 和動作 $a$輸出一個標(biāo)量表示在狀態(tài) $s$ 下采取動作 $a$ 能獲得的價值若動作是離散有限的除了上述狀態(tài)動作輸入的方式還可以在狀態(tài) $s$ 輸入到神經(jīng)網(wǎng)絡(luò)后使其同時輸出每一個動作的 Q 值。需要注意的是DQN以及 Q-learning只能處理動作離散的情況因為在 Q 的更新過程中有 $\max_a$ 這一操作。假設(shè)神經(jīng)網(wǎng)絡(luò)參數(shù)為 $w$即單個狀態(tài) $s$ 下所有可能動作 $a$ 的 Q 值都可以表示為 $Q_w(s, a)$我們將用于擬合函數(shù)的神經(jīng)網(wǎng)絡(luò)稱為Q 網(wǎng)絡(luò)。4.3 從 Q-learning 更新規(guī)則構(gòu)造損失函數(shù)回顧 Q-learning 的更新規(guī)則$$Q(s, a) \leftarrow Q(s, a) \alpha \left[ r \gamma \max_{a \in A} Q(s, a) - Q(s, a) \right]$$上述公式用時序差分temporal difference, TD學(xué)習(xí)目標(biāo) $r \gamma \max_{a \in A} Q(s, a)$ 來增量式更新 $Q(s, a)$也就是說要使 $Q(s, a)$ 和 TD 目標(biāo) $r \gamma \max_{a \in A} Q(s, a)$ 靠近。于是對于一組數(shù)據(jù) ${(s_i, a_i, r_i, s_i)}$可以很自然地將 Q 網(wǎng)絡(luò)的損失函數(shù)構(gòu)造為均方誤差形式$$\omega^* \arg \min_{\omega} \frac{1}{2N} \sum_{i1}^N \left[ Q_{\omega}(s_i, a_i) - \left( r_i \gamma \max_{a} Q_{\omega}(s_i, a) \right) \right]^2$$至此就可以將 Q-learning 擴(kuò)展到神經(jīng)網(wǎng)絡(luò)形式——深度 Q 網(wǎng)絡(luò)deep Q network, DQN算法。由于 DQN 是off-policy 算法因此在收集數(shù)據(jù)的時候可以使用一個 ε-貪婪策略來平衡探索與利用將收集到的數(shù)據(jù)存儲起來在后續(xù)的訓(xùn)練中使用。DQN 中還有兩個非常重要的模塊——經(jīng)驗回放和目標(biāo)網(wǎng)絡(luò)它們能夠幫助 DQN 取得穩(wěn)定、出色的性能。五、經(jīng)驗回放Experience Replay在一般的有監(jiān)督學(xué)習(xí)中假設(shè)訓(xùn)練數(shù)據(jù)是獨(dú)立同分布的每次訓(xùn)練神經(jīng)網(wǎng)絡(luò)時從訓(xùn)練數(shù)據(jù)中隨機(jī)采樣一個或若干個數(shù)據(jù)來進(jìn)行梯度下降隨著學(xué)習(xí)的不斷進(jìn)行每一個訓(xùn)練數(shù)據(jù)會被使用多次。而在原來的 Q-learning 算法中每一個數(shù)據(jù)只會用來更新一次值。為了更好地將 Q-learning 和深度神經(jīng)網(wǎng)絡(luò)結(jié)合DQN 采用了**經(jīng)驗回放experience replay**方法維護(hù)一個回放緩沖區(qū)將每次從環(huán)境中采樣得到的四元組數(shù)據(jù)狀態(tài)、動作、獎勵、下一狀態(tài)存儲到回放緩沖區(qū)中訓(xùn)練 Q 網(wǎng)絡(luò)時再從回放緩沖區(qū)中隨機(jī)采樣若干數(shù)據(jù)進(jìn)行訓(xùn)練。這樣做有兩個作用使樣本滿足獨(dú)立假設(shè)在 MDP 中交互采樣得到的數(shù)據(jù)本身不滿足獨(dú)立假設(shè)因為這一時刻的狀態(tài)和上一時刻的狀態(tài)有關(guān)。非獨(dú)立同分布的數(shù)據(jù)對訓(xùn)練神經(jīng)網(wǎng)絡(luò)影響很大會使神經(jīng)網(wǎng)絡(luò)擬合到最近訓(xùn)練的數(shù)據(jù)上。采用經(jīng)驗回放可以打破樣本之間的相關(guān)性讓其滿足獨(dú)立假設(shè)。提高樣本效率每一個樣本可以被使用多次十分適合深度神經(jīng)網(wǎng)絡(luò)的梯度學(xué)習(xí)。注意到Q-learning 是 off-policy 算法但off-policy 并不意味著經(jīng)驗會被反復(fù)利用——離線策略與經(jīng)驗復(fù)用是兩個不同的概念DQN 正是通過經(jīng)驗回放機(jī)制顯式地將二者結(jié)合起來。六、目標(biāo)網(wǎng)絡(luò)Target NetworkDQN 最終更新的目標(biāo)是讓 $Q_w(s, a)$ 逼近 $r \gamma \max_{a} Q_w(s, a)$。由于 TD 誤差目標(biāo)本身就包含神經(jīng)網(wǎng)絡(luò)的輸出因此在更新網(wǎng)絡(luò)參數(shù)的同時目標(biāo)也在不斷被改變這非常容易造成神經(jīng)網(wǎng)絡(luò)訓(xùn)練的不穩(wěn)定性和震蕩性。為了解決這一問題DQN 使用了目標(biāo)網(wǎng)絡(luò)target network的思想既然訓(xùn)練過程中 Q 網(wǎng)絡(luò)的不斷更新會導(dǎo)致目標(biāo)不斷變化不如暫時先將 TD 目標(biāo)中的 Q 網(wǎng)絡(luò)固定住。為了實現(xiàn)這一思想需要利用兩套 Q 網(wǎng)絡(luò)訓(xùn)練網(wǎng)絡(luò) $Q_w(s, a)$用于計算損失函數(shù) $\frac{1}{2} \left[ Q_w(s, a) - \left( r \gamma \max_{a} Q_w(s, a) \right) \right]^2$ 中的 $Q_w(s, a)$目標(biāo)網(wǎng)絡(luò) $Q_{\hat{w}}(s, a)$用于計算 TD 誤差目標(biāo) $r \gamma \max_{a} Q_{\hat{w}}(s, a)$ 的值其中 $\hat{w}$ 表示目標(biāo)網(wǎng)絡(luò)的參數(shù)。如果兩套網(wǎng)絡(luò)的參數(shù)始終保持一致則仍然會出現(xiàn)震蕩的情況因此可以定期更新目標(biāo)網(wǎng)絡(luò)的參數(shù)$\hat{w}$比如每隔若干步更新一次即 $\hat{w} \leftarrow w$。這樣做的目的是讓目標(biāo)網(wǎng)絡(luò)的參數(shù)相對穩(wěn)定從而使得 TD 誤差目標(biāo)的計算穩(wěn)定下來。這一固定 TD 目標(biāo)、定期同步參數(shù)的設(shè)計在此倉庫筆記系列中持續(xù)復(fù)用在 part-7.md 的 Actor-Critic 一節(jié)中Critic 價值網(wǎng)絡(luò)的更新同樣采取了類似于目標(biāo)網(wǎng)絡(luò)的方法將 $r \gamma V_w(s_{t1})$ 作為不含梯度的 TD 目標(biāo)來穩(wěn)定訓(xùn)練可見該思想是深度價值學(xué)習(xí)方法的核心工程手段。七、DQN 完整算法流程綜合以上模塊DQN 的完整流程如下- 用隨機(jī)初始參數(shù) w 初始化網(wǎng)絡(luò) Q_w(s, a) - 復(fù)制相同的參數(shù) w^- ← w 來初始化目標(biāo)網(wǎng)絡(luò) Q_{w^-} - 初始化經(jīng)驗回放池 R - for 序列 e 1 - E do: - 獲取環(huán)境初始狀態(tài) s_1 - for 時間步 t 1 - T do: 1. 根據(jù)當(dāng)前網(wǎng)絡(luò) Q_w(s, a) 以 ε-貪婪策略選擇動作 a_t 2. 執(zhí)行動作 a_t獲得環(huán)境反饋 r_t環(huán)境狀態(tài)變?yōu)?s_{t1} 3. 將 (s_t, a_t, r_t, s_{t1}) 存入經(jīng)驗回放池 R 中 4. 若 R 中數(shù)據(jù)足夠從 R 中采樣 N 個數(shù)據(jù) {(s_i, a_i, r_i, s_{i1})}_{i1,...,N} 5. for 每個數(shù)據(jù) i do: - 計算目標(biāo)值 y_i r_i γ max_{a} Q_{w^-}(s_{i1}, a) - 最小化目標(biāo)損失 L (1/N) Σ_i (y_i - Q_w(s_i, a_i))^2以此更新當(dāng)前網(wǎng)絡(luò) Q_w 6. 更新目標(biāo)網(wǎng)絡(luò) - end for - end for關(guān)鍵流程拆解如下步驟 13數(shù)據(jù)收集用當(dāng)前 Q 網(wǎng)絡(luò)配合 ε-貪婪策略與環(huán)境交互并把四元組存入經(jīng)驗回放池——ε-貪婪是 off-policy 數(shù)據(jù)收集的標(biāo)配見 part-1.md 多臂老虎機(jī)一節(jié)步驟 4經(jīng)驗采樣只有當(dāng)回放池中數(shù)據(jù)足夠時才開始訓(xùn)練從池中隨機(jī)采樣 N 個數(shù)據(jù)打破時間相關(guān)性步驟 5損失與更新目標(biāo)值 $y_i$ 使用目標(biāo)網(wǎng)絡(luò)$Q_{w^-}$ 計算參數(shù)被固定而損失項 $Q_w(s_i, a_i)$ 使用訓(xùn)練網(wǎng)絡(luò)計算對 $w$ 求梯度做梯度下降步驟 6目標(biāo)同步定期將訓(xùn)練網(wǎng)絡(luò)參數(shù)拷貝到目標(biāo)網(wǎng)絡(luò)保證 TD 目標(biāo)相對穩(wěn)定。八、總結(jié)與系列銜接本小結(jié)覆蓋了兩條價值方法的核心演進(jìn)路徑Dyna-Q 回答了如何減少真實采樣通過一個由經(jīng)驗數(shù)據(jù)學(xué)習(xí)到的環(huán)境模型 $M$在每次真實交互后額外執(zhí)行 N 次 Q-planning 模擬更新N 從 0 調(diào)大即從純 Q-learning 逐步走向基于模型的強(qiáng)化學(xué)習(xí)屬于價值函數(shù)方法與規(guī)劃的結(jié)合。DQN 回答了狀態(tài)連續(xù)時 Q 值如何表示用神經(jīng)網(wǎng)絡(luò) $Q_w$ 替代 Q 表格通過均方誤差損失最小化 TD 誤差經(jīng)驗回放解決樣本相關(guān)性與樣本效率問題目標(biāo)網(wǎng)絡(luò)解決訓(xùn)練目標(biāo)漂移導(dǎo)致的震蕩問題二者共同保證了深度價值網(wǎng)絡(luò)訓(xùn)練的穩(wěn)定性。在整個筆記系列中本小結(jié)承上啟下前承 part-1.mdMDP 與價值函數(shù)定義、part-3.md動態(tài)規(guī)劃策略迭代/價值迭代、part-4.mdSarsa/Q-learning 時序差分與 on/off-policy 概念后啟 part-6.md策略梯度與 REINFORCE轉(zhuǎn)向基于策略的方法、part-7.mdActor-Critic、TRPO、PPO。理解本小結(jié)的 off-policy、TD 目標(biāo)、函數(shù)擬合與穩(wěn)定訓(xùn)練思想是理解后續(xù)策略優(yōu)化乃至現(xiàn)代 RLHF如 PPO/GRPO算法的必要基礎(chǔ)。贊分享文檔教程人工智能大模型RLHF【免費(fèi)下載鏈接】Awesome-ML-SYS-TutorialMy learning notes for ML SYS.項目地址https://gitcode.com/gh_mirrors/aw/Awesome-ML-SYS-Tutorial點(diǎn)擊查看免費(fèi)下載相關(guān)推薦無模型強(qiáng)化學(xué)習(xí)奠基從時序差分到 Sarsa 與 Q-learning 的同/異策略辨析Awesome-ML-SYS-Tutorial 學(xué)習(xí)筆記 part-4無模型強(qiáng)化學(xué)習(xí)奠基從時序差分到 Sarsa 與 Q learning 的同/異策略辨析Awesome ML SYS Tutorial 學(xué)習(xí)筆記 part 4文檔教程人工智能大模型RLHF如何從零開始學(xué)習(xí)QEMU內(nèi)部原理這份完整教程讓你快速上手如何從零開始學(xué)習(xí)QEMU內(nèi)部原理這份完整教程讓你快速上手 QEMU是一款功能強(qiáng)大的開源系統(tǒng)模擬器能夠在不同架構(gòu)之間實現(xiàn)硬件虛擬化和指令翻譯。對于想要深入理解從被動筆記到可交互學(xué)習(xí)系統(tǒng)Awesome-ML-SYS-Tutorial 的 /learn Agent 設(shè)計與實現(xiàn)方案從被動筆記到可交互學(xué)習(xí)系統(tǒng)Awesome ML SYS Tutorial 的 /learn Agent 設(shè)計與實現(xiàn)方案 本文導(dǎo)讀這是一篇關(guān)于「如何把一套學(xué)習(xí)文檔教程人工智能大模型RLHF創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考