強化初學筆記
強化學習和監督學習不同,強化學習討論的問題是一個 智慧體(agent) 怎麼在一個複雜不確定的環境(environment)裡面去極大化它能獲得的獎勵,它可能會在狀態間隨機變換以獲得最優獎勵(reward)。它由兩部分組成:agent 和environment。
在強化學習過程中,agent 跟environment 一直在互動。Agent 在環境裡面獲取到狀態,agent 會利用這個狀態輸出一個 action,一個決策。然後這個決策會放到環境之中去,環境會通過這個 agent 採取的決策,輸出下一個狀態以及當前的這個決策得到的獎勵。Agent 的目的就是為了儘可能多地從環境中獲取獎勵。
對於一個強化學習 agent,它有如下組成成分:
- 首先 agent 有一個 policy function ,agent 會用這個函式來選取下一步的動作。
- 然後它也可能生成一個 價值函式(value function) 。我們用價值函式來對當前狀態進行估價,它就是說你進入現在這個狀態,可以對你後面的收益帶來多大的
影響。當這個價值函式大的時候,說明你進入這個狀態越有利。 - 另外一個組成成分是 模型(model) 。模型表示了 agent 對這個環境的狀態進行了理解,它決定了這個世界是如何進行的。
Policy 決定了這個 agent 的行為,它其實是一個函式,把輸入的狀態變成行為。這裡有兩種 policy:
- 一種是 stochastic policy(隨機性策略)。當你輸入一個狀態 的時候,輸出是一個概率。這個概率就是你所有行為的一個概率,然後你可以進一步對這個概率分佈進行取樣,得到真實的你採取的行為。比如說這個概率可能是有 70% 的概率往左,30% 的概率往右,那麼你通過取樣就可以得到一個 action。
- 一種是 deterministic policy(確定性策略) ,就是說你這裡有可能只是採取它的極大化,採取最有可能的動作。你現在這個概率就是事先決定好的。
Value Function價值函式是一個折扣的未來獎勵的加和,就是你通過進行某一種行為,然後你未來得到多大的獎勵。
第三個組成部分是模型Model,模型決定了下一個狀態會是什麼樣的,就是說下一步的狀態取決於你當前的狀態以及你當前採取的行為。它由兩個部分組成,一個是probability,它這個轉移狀態之間是怎麼轉移的。另外是這個獎勵函式,當你在當前狀態採取了某一個行為,可以得到多大的獎勵。
根據強化學習 agent 的不同,我們可以把 agent 進行歸類。
- 基於價值函式的 agent。這一類 agent 顯式地學習的是價值函式,隱式地學習了它的策略。因為這個策略是從我們學到的價值函式裡面推算出來的。
- 基於策略的 agent,它直接去學習 policy,就是說你直接給它一個 state,它就會輸出這個動作的概率。在這個 policy-based agent 裡面並沒有去學習它的價值函式。
- 另外還有一種 agent 是把這兩者結合,把 value-based 和 policy-based 結合起來就有了 Actor-Critic agent 。這一類 agent 就把它的策略函式和價值函式都學習
了,然後通過兩者的互動得到一個最佳的行為。
另外,我們是可以通過 agent 到底有沒有學習這個環境模型來分類。
- 第一種是 model-based(有模型) RL agent,它通過學習這個狀態的轉移來採取措施。
- 另外一種是 model-free(免模型) RL agent,它沒有去直接估計這個狀態的轉移,也沒有得到環境的具體轉移變數。它通過學習 value function 和 policy function
進行決策。這種 model-free 的模型裡面沒有一個環境轉移的一個模型。
在強化學習裡面, Exploration 和 Exploitation 是兩個很核心的問題。
- Exploration 是說我們怎麼去探索這個環境,通過嘗試不同的行為來得到一個最佳的策略,得到最大獎勵的策略。
- Exploitation 是說我們不去嘗試新的東西,就採取已知的可以得到很大獎勵的行為。
相關文章
- 強化學習筆記強化學習筆記
- 強化學習-學習筆記13 | 多智慧體強化學習強化學習筆記智慧體
- 強化學習-學習筆記5 | AlphaGo強化學習筆記Go
- python初學筆記Python筆記
- 強化學習-學習筆記12 | Dueling Network強化學習筆記
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- 初學Golang的筆記Golang筆記
- 強化學習-學習筆記15 | 連續控制強化學習筆記
- 強化學習-學習筆記10 | 經驗回放強化學習筆記
- 強化學習-學習筆記1 | 基礎概念強化學習筆記
- 強化學習-學習筆記8 | Q-learning強化學習筆記
- 強化學習-學習筆記4 | Actor-Critic強化學習筆記
- 強化學習-學習筆記2 | 價值學習強化學習筆記
- 強化學習筆記之【SAC演算法】強化學習筆記演算法
- 【強化學習篇】--強化學習從初識到應用強化學習
- C++類初學筆記C++筆記
- 初學linux的fork筆記Linux筆記
- [寒假學習筆記](二)Python初學筆記Python
- 強化學習-學習筆記14 | 策略梯度中的 Baseline強化學習筆記梯度
- 強化學習-學習筆記11 | 解決高估問題強化學習筆記
- 強化學習-學習筆記9 | Multi-Step-TD-Target強化學習筆記
- 【Java】弱項強化筆記Java筆記
- Python 裝飾器初學筆記Python筆記
- 【自用】彙編初學筆記 #1筆記
- 從Python到Go:初學筆記PythonGo筆記
- 【Nginx學習筆記】-初識NginxNginx筆記
- JVM學習筆記——初識JVMJVM筆記
- 基於docker 初學 MongoDb 學習筆記DockerMongoDB筆記
- 安卓初學基礎學習筆記安卓筆記
- 初級英語學習筆記01筆記
- MongDB學習筆記(一) 初遇篇筆記
- LevelDB學習筆記 (1):初識LevelDB筆記
- Redis學習筆記(一)——初識RedisRedis筆記
- 初賽筆記筆記
- 強化學習演算法筆記之【DDPG演算法】強化學習演算法筆記
- 當初自學C++時的筆記記錄C++筆記
- 初識C語言(01)—學習筆記C語言筆記
- HTTP Client 學習筆記 (一) 初遇篇HTTPclient筆記