Reinforcement Learning強化學習--李宏毅機器學習筆記

個人學習筆記,如有錯誤歡迎指正,也歡迎交流,其他筆記見個人空間??

強化學習 vs 監督學習

  • 監督學習(Supervised Learning):你有輸入和明確的輸出標簽,例如圖像分類。

  • 強化學習(Reinforcement Learning):你不知道輸出的“最佳答案”,只能通過與環境互動、收集獎勵(Reward)來學習策略。

舉例:

  • 圍棋:每一步的“最優落子”可能連人類都不知道

  • 電子游戲:通過游戲畫面(Observation)作出動作(Action),根據得分獲得獎勵

強化學習的核心結構

環境(Environment)與智能體(Actor):

  1. Observation:環境給智能體的輸入

  2. Action:智能體輸出的行為

  3. Reward:環境給予智能體的反饋

智能體的目標:最大化總獎勵(Total Reward)

?強化學習的核心步驟和深度學習其實基本一樣

Step 1:定義一個有未知參數的Function(通常稱為Policy Network)

Step 2:定義Loss(負的Total Reward)

Step 3:優化參數以最大化Reward(Optimization)

第一步:?定義一個有未知參數的函數,也就是策略函數(Policy),通常用神經網絡來表示。

希望找到一個策略函數 (policy):

  • 輸入:當前環境的觀測(observation)

  • 輸出:某個動作(action)或一組動作的概率

這個函數內部有很多未知參數(θ),通過訓練來確定這些參數,從而讓策略越來越聰明。例如用CNN處理圖像輸入,用MLP處理數值輸入,RNN / Transformer處理歷史軌跡,生成不同action的概率后,通常根據這個分布 進行采樣(sampling) 來選擇動作,而不是直接選擇最大值(argmax),這是為了增加策略的探索性

第二步:?定義Loss

在強化學習中,我們沒有 Ground Truth 標簽,但依然需要定義一個目標 ——即使不能說“動作a對還是錯”,但我們知道做完這個動作之后是否有獎勵(Reward)

與環境交互(Episode):

  • 一個智能體從初始狀態開始,連續做出動作(Action)

  • 每個動作會得到一個即時獎勵(Reward),如 r1,r2,...,rT

  • 所有獎勵累加得到:R=r1?+r2?+?+rT?這個 R 又被稱為 ReturnTotal Reward

目標(Objective):

  • 我們希望找到策略參數 θ,使得這個總獎勵 R越大越好

轉換為損失函數:

  • 強化學習中不像監督學習有明確的 Loss

  • 所以我們把“最大化獎勵”變成“最小化負的獎勵”:Loss=?R

第三步:優化參數?

Optimization 就是 去找一個 Network,Learn 出一組參數 這一組參數放在 Actor 的裡面 它可以讓這個 R 的數值最大

問題是則不是一個一般的優化問題,難點:

1、Actor輸出是隨機采樣的?

2、Environment是不可導黑盒子,不能反向傳播

3、Reward是延遲的,無法直接分配“哪個動作貢獻了多少”

Policy Gradient

一種解決RL優化問題的經典方法,核心思想如下:

  • 把Actor當作一個分類器

  • 用類似Cross-entropy的Loss定義行為偏好(a和\hat{a}的交叉熵作為loss,希望采取\hat{a}時就令L=e,再令e最小,a就會趨向于\hat{a}。不希望時L=-e,a也就不趨向于采取\hat{a},再取L最小)

?????????如下希望看到 s 時采取\hat{a},看到 s' 時不采取?\hat{a}‘,則L=e1-e2。

?????????????????????????????????????????????????????????(需要收集大量s,a的一對一對的數據)

  • 設定希望Actor采取or避免的行為,并賦予不同權重(An),代表采取/避免某行動的“意愿”有多強。

  • 再用梯度下降去優化Actor網絡參數,使行為更符合期望

現在的問題在于怎么定義a的好壞

初級的思路就是直接用當前時間步的 Reward來評估當前 Action?的好壞,如果r>0就認為 Action 是好的,問題是忽視了當前動作對未來的長期影響,導致“短視近利”的策略

由此產生第二個版本的想法:a有多好取決于a之后收到的所有Reward,通通加起來得到一個累計獎勵G(Total Future Reward)。

優點:考慮到動作的長期影響

問題:游戲太長時,早期動作對后期獎勵影響不明顯,不一定是這一步的動作導致后面好的結果,導致歸因失真

?由此產生第三個版本的想法:引入折扣因子(Discount Factor)

距離 at 越遠的 r 對于 at 就越“不重要”,因為?γ?指數項會變大。

優點:距離當前動作越近的獎勵權重越高;解決遠期獎勵歸因問題

第四個版本:如果所有 Gt′? 都是正的,即使有些表現差的動作也被當作“ 好 ”進一步,因此需要做標準化,?引入基線(Baseline) b,將 Gt′?b 作為最終評價量 At。

  • 目的是讓評價結果“有正有負”,使訓練更穩定、更有區分度

  • b?可設為均值、滑動平均、甚至預測的值(將引出 Critic

Policy Gradient 實際操作流程?

  • 初始化策略網絡(Actor)參數 θ

  • 收集數據:用當前策略與環境交互,采樣出多個 (state, action) 對

  • 評估每個動作的好壞:計算 At,可以是版本 1~4 中任一種

  • 定義 Loss:例如交叉熵加權 At

  • 梯度上升更新Actor參數

  • 重新收集數據:由于策略已改變,必須用新的策略重新采樣(On-policy),重新收集數據

On-policy vs Off-policy

剛才說的 要被訓練的 Actor, 跟要拿來采樣,跟環境互動的 Actor ? 是同一個的時候 這種叫做 On-policy Learning。如果它們不一樣就是Off-policy

Off-policy 的代表方法:PPO(Proximal Policy Optimization),PPO 允許一定程度上“借用”舊策略的數據,同時控制策略變化幅度?

聽起來有點暈,李老師在課上也沒有細說,查資料后我的理解Off-policy 強化學習的本質是:
“我(要訓練的策略)不是親自去做,而是看別人做,再從別人的經驗中學習。”

類比總結和On-policy的區別就是:

  • On-policy:每更新一次策略,就必須重新采數據,慢又貴。

  • Off-policy:每次都用別人的策略來采集數據,然后訓練你的模型(比如別人開車時采集的數據記錄),但是你不能完全照搬別人的操作(因為別人的車可能技術更好),所以你要用算法糾正行為差異 。

這里有一些疑問需要解答,先了解兩個概念:

行為策略:用來與環境交互、采集數據,不一定更新(通常固定)

目標策略:是你真正想要訓練的策略,不斷更新

疑問:如果行為策略不更新,那它的采樣是不是就會重復、沒有意義?為什么還能學?

答案是:不會。

即使行為策略是“固定的”,你從它那里采樣的經驗軌跡每次也會不同,原因有兩個:1. 環境是動態的 / 有隨機性,行為策略+環境共同決定采樣軌跡,所以軌跡是多樣的;2.行為策略本身是“隨機策略”,行為策略即便固定,也有采樣上的隨機性

?

Critic

Critic 的概念

Critic 的作用是評估當前策略(Actor)的好壞,即預測在某個狀態下,采用該 Actor 后可能獲得的累積回報(Discounted Cumulative Reward,注意是個期望值,因為actor本身是有隨機性

Critic 形式之一是 Value Function,在下圖中用 表示 它的能力就是它要未卜先知 未看先猜 游戲還沒有玩完 只光看到 S 就要預 測這個 Actor, 它可以得到什么樣的表現

如何訓練 Value Function(Critic)

蒙特卡洛Monte-Carlo(MC)方法:

  • 完整地讓 Actor 玩一整局游戲,記錄每個狀態對應最終獲得的 G 值(實際累積回報),然后訓練 Critic 預測這些 G。

  • 優點:簡單直觀。

  • 缺點:需要完整回合,游戲太長或無終點時不適用。

時序差分Temporal-Difference(TD)方法:

  • 使用部分軌跡更新估值。核心思想是:在不知道最終結果的情況下,通過當前獎勵和下一步的估計結果來更新當前估計值

  • 優點:無需完整回合,適合長或無限游戲。

  • 缺點:更新可能有偏差。

MCvsTD

  • MC 使用真實累積獎勵訓練,更新慢但準確。

  • TD 使用估計值更新,快速但可能偏差。

  • 沒有絕對對錯,取決于假設和實際需求。

舉例:觀察某一個 Actor跟環境互動玩了某一個游戲八次,當然這邊為了簡化計算我們假設這些游戲都非常簡單都一個回合就到兩個回合就結束了。從下圖V(sa)的算法就可以看出MC和TD的區別

Critic 如何幫助訓練 Actor

前面提到需要做標準化,?引入基線(Baseline) b,讓評價結果“有正有負”,將 Gt′?b 作為最終評價量 At。這里b取多少本來是不知道的,現在可以確定了,b就是Critic估計的Actor后可能獲得的累積回報V,注意這個只是一個期望值,因為Actor本身是有隨機性的

?這樣得到的At,如果大于0說明實際執行的動作 At 得到的結果好于平均值,是一個“好的動作",小于,說明該動作表現差于平均,是個“壞動作”。

但是這種思路也不是完全沒問題,用某個狀態下的G減去平均值有可能會有極端情況,還有一種思路的用平均值減去平均值,就是:

  • 用即時獎勵r_t?加上下一個狀態的估值 ?V^\theta(s_{t+1})來代替G'_t

  • 這是對未來獎勵的一步估計,更快、更穩定。

?

小技巧:Actor-Critic 網絡共享結構

  • Actor 和 Critic 可以共享網絡的前幾層(例如 CNN 提取特征),僅在輸出結構上有所區分:

    • Actor 輸出 action 的概率分布。

    • Critic 輸出一個標量的估值。

Deep Q Network (DQN):

  • Deep Q Network(DQN)是另一類強化學習方法,主要使用 Critic(Q function)來直接選動作。

  • DQN 有許多變形,如 Rainbow(融合多個改進技巧)。

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

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

相關文章

Windows VsCode Terminal窗口使用Linux命令

背景描述: 平時開發環境以Linux系統為主,有時又需要使用Windows系統下開發環境,為了能像Linux系統那樣用Windows VsCode,Terminal命令行是必不可少內容。 注:Windows11 VsCode 1.99.2 下面介紹,如何在V…

軟件測試之測試數據生成(Excel版)

這是Excel生成測試數據的函數使用 1.時間 1.1.時間 例生成2022-05-01之前一年內任意時間點: =TEXT("2022-05-01"-RAND()-RANDBETWEEN(1,365),"yyyy-mm-dd hh:mm:ss")1.2.年月日 yyyy-mm-dd 以當前時間生成10年的日期 =TEXT(NOW()-RAND()-RANDBETWE…

libwebsocket建立服務器需要編寫LWS_CALLBACK_ADD_HEADERS事件處理

最近在使用libwebsocket,感覺它搭建Http與websocket服務器比較簡單,不像poco庫那么龐大,但當我使用它建立websocket服務器后,發現websocket客戶端連接一直沒有連接成功,不知道什么原因,經過一天的調試&…

從 PyTorch 到 ONNX:深度學習模型導出全解析

在模型訓練完畢后,我們通常希望將其部署到推理平臺中,比如 TensorRT、ONNX Runtime 或移動端框架。而 ONNX(Open Neural Network Exchange)正是 PyTorch 與這些平臺之間的橋梁。 本文將以一個圖像去噪模型 SimpleDenoiser 為例&a…

Hadoop集群部署教程-P6

Hadoop集群部署教程-P6 Hadoop集群部署教程(續) 第二十一章:監控與告警系統集成 21.1 Prometheus監控體系搭建 Exporter部署: # 部署HDFS Exporter wget https://github.com/prometheus/hdfs_exporter/releases/download/v1.1.…

【Altium】AD-生成PDF文件圖紙包含太多的空白怎么解決

1、 文檔目標 AD設計文件導出PDF時,圖紙模板方向設置問題 2、 問題場景 AD使用Smart PDF導出PDF時,不管你怎么設置頁面尺寸,只要從橫向轉為縱向輸出,輸出的始終是橫向紙張(中間保留縱向圖紙,兩邊大量留白…

大廠面試:六大排序

前言 本篇博客集中了冒泡,選擇,二分插入,快排,歸并,堆排,六大排序算法 如果覺得對你有幫助,可以點點關注,點點贊,謝謝你! 1.冒泡排序 //冒泡排序&#xff…

大模型開發:源碼分析 Qwen 2.5-VL 視頻抽幀模塊(附加FFmpeg 性能對比測試)

目錄 qwen 視頻理解能力 messages 構建 demo qwen 抽幀代碼分析 驗證兩個實際 case 官網介紹圖 性能對比:ffmpeg 抽幀、decord 庫抽幀 介紹 聯系 對比 測試結果 測試明細 ffmpeg 100 qps 測試(CPU) decord 100 qps 測試&#x…

git的上傳流程

好久沒使用git 命令上傳遠程倉庫了。。。。。溫習了一遍; 幾個注意點--單個文件大小不能超過100M~~~ 一步步運行下面的命令: 進入要上傳的文件夾內,點擊git bash 最終 hbu的小伙伴~有需要nndl實驗的可以自形下載哦

驅動學習專欄--字符設備驅動篇--2_字符設備注冊與注銷

對于字符設備驅動而言,當驅動模塊加載成功以后需要注冊字符設備,同樣,卸載驅動模 塊的時候也需要注銷掉字符設備。字符設備的注冊和注銷函數原型如下所示 : static inline int register_chrdev(unsigned int major, const char *name, const…

redis 放置序列化的對象,如果修改對象,需要修改版本號嗎?

在 Redis 中存儲序列化對象時,如果修改了對象的類結構(例如增刪字段、修改字段類型或順序),是否需要修改版本號取決于序列化協議的兼容性策略和業務場景的容錯需求。以下是詳細分析: 1. 為什么需要考慮版本號? 序列化兼容性問題: 當對象的類結構發生變化時,舊版本的序列…

WPF ObjectDataProvider

在 WPF(Windows Presentation Foundation)中,ObjectDataProvider 是一個非常有用的類,用于將非 UI 數據對象(如業務邏輯類或服務類)與 XAML 綁定集成。它允許在 XAML 中直接調用方法、訪問屬性或實例化對象,而無需編寫額外的代碼。以下是關于 ObjectDataProvider 的詳細…

深度學習-損失函數 python opencv源碼(史上最全)

目錄 定義 種類 如何選擇損失函數? 平方(均方)損失函數(Mean Squared Error, MSE) 均方根誤差 交叉熵 對數損失 筆記回饋 邏輯回歸中一些注意事項: 定義 損失函數又叫誤差函數、成本函數、代價函數…

poll為什么使用poll_list鏈表結構而不是數組 - 深入內核源碼分析

一:引言 在Linux內核中,poll機制是一個非常重要的I/O多路復用機制。它允許進程監視多個文件描述符,等待其中任何一個進入就緒狀態。poll的內部實現使用了poll_list鏈表結構而不是數組,這個設計選擇背后有其深層的技術考量。本文將從內核源碼層面深入分析這個設計決…

使用 Azure AKS 保護 Kubernetes 部署的綜合指南

企業不斷尋求增強其軟件開發和部署流程的方法。DevOps 一直是這一轉型的基石,彌合了開發與運營之間的差距。然而,隨著安全威脅日益復雜,將安全性集成到 DevOps 流水線(通常稱為 DevSecOps)已變得勢在必行。本指南深入探討了如何使用 Azure Kubernetes 服務 (AKS) 來利用 D…

2025年常見滲透測試面試題-webshell免殺思路(題目+回答)

網絡安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 webshell免殺思路 PHP免殺原理 webshell免殺測試: webshell免殺繞過方法: 編…

訪問不到服務器上啟動的llamafactory-cli webui

采用SSH端口轉發有效,在Windows上面進行訪問 在服務器上啟動 llamafactory-cli webui 后,訪問方式需根據服務器類型和網絡環境選擇以下方案: 一、本地服務器(物理機/虛擬機) 1. 直接訪問 若服務器與操作設備處于同一…

基于 LSTM 的多特征序列預測-SHAP可視化!

往期精彩內容: 單步預測-風速預測模型代碼全家桶-CSDN博客 半天入門!鋰電池剩余壽命預測(Python)-CSDN博客 超強預測模型:二次分解-組合預測-CSDN博客 VMD CEEMDAN 二次分解,BiLSTM-Attention預測模型…

C++ 編程指南35 - 為保持ABI穩定,應避免模板接口

一:概述 模板在 C 中是編譯期展開的,不同模板參數會生成不同的代碼,這使得模板類/函數天然不具備 ABI 穩定性。為了保持ABI穩定,接口不要直接用模板,先用普通類打個底,模板只是“外殼”,這樣 AB…

【iOS】OC高級編程 iOS多線程與內存管理閱讀筆記——自動引用計數(二)

自動引用計數 前言ARC規則所有權修飾符**__strong修飾符**__weak修飾符__unsafe_unretained修飾符__autoreleasing修飾符 規則屬性數組 前言 上一篇我們主要學習了一些引用計數方法的內部實現,現在我們學習ARC規則。 ARC規則 所有權修飾符 OC中,為了處…