【讀書筆記】1_增強學習介紹
本文為Thomas Simonini增強學習系列文章筆記或讀後感,原文可以直接跳轉到medium系列文章。
文章先是給用戶指出必須了解增強學習的概念
- 增強學些是什麽?為什麽獎勵是中心概念
- 增強學習的任務和三種實現方式
- 深度增強學習的深(deep)意味著什麽?
增強學習過程概念介紹
首先,什麽是增強學習? 我們需要用計算機進行模擬一個環境,例如玩馬裏奧遊戲,來理解這個過程。由於不是我們自己玩,需要一個代練(Agent),那麽就是用計算機了。代練進入遊戲(environment)開始接收到一個狀態(state)開始(game start, state 0), 基於遊戲這個狀態做出前進,後退,跳動等動作(action), 環境就從上一個狀態到下一個新的狀態,同時由於代練是沒有感覺的,需要通過給他激勵(rewards)告訴他采用這個動作是否是好的,然後我們不斷得循環這個過程。這個循環不斷輸出狀態
馬裏奧增強學習人體示意圖:
所以獎勵是中心概念,設計如何給代練獎勵,是代練能否按照我們的意願把遊戲玩好的關鍵。給一個計算機能明白的獎勵方式:
但是換另外一個遊戲,如下圖所示,老鼠想要獲得更多起司獎勵,但是更多的起司就更靠近貓。
如果每一步獎勵都按照一樣的比例給,會不會導致代練就在附近的地方一直逛,所以對每一步設計一個折扣,如果你不走遠一點,獎勵也會變得原來越少。所以我們的獎勵方式變成如下所示:
增加一個gamma,讓獎勵指數遞減。
增強學習任務,學習方法,實現方式
任務分兩種,插話型(episode)和連續型(continuous
學習方式也有兩種,一種是在episode結尾之後計算最大的獎勵,另外一種在每一步進行最大化的獎勵估計。前者采用Monte Carlo方法,後者采用Temporal Difference Learning方法
增強學習面臨上述老鼠和貓遊戲的EE問題(Exploration/Exploitation), 探索意味發現新的,具有隨機性;利用意味用現有知識進行判斷期望獲得最大獎勵。這需要我們做一個平衡。
3種實現方式:
- Value based. 設計函數讓代練去在每一步最大化未來期望獎勵。
- Policy based. 直接設計每一個狀態對應的動作的函數。有兩種類型policy, 一種會給每一個狀態一個動作;另外一種輸出動作的概率分布從而確定用哪個動作。
- Model based. 用模型去模擬環境,在這個系列教程當中不會進行講解。
value based | |
determinstic policy | |
stochastic policy |
深度增強學習中的”Deep”
在增強學習當中引入深度神經網絡就叫Deep RL了。明白了吧,這就是Deep的含義。
題外話,後續系列例子多采用openai的預定義環境,可以先了解一下python的gym庫,裏面預先定義了很多用於增強學習的遊戲庫,查看全部庫名稱:
import gym import pandas as pd game_envs = list(gym.envs.registry.all()) game_names = [e.id.split("-v") for e in game_envs] game_names = pd.DataFrame.from_records(game_names, columns=[‘name‘, ‘ver‘]) game_names[‘ver‘] = ‘v‘ + game_names[‘ver‘] df = game_names.groupby(‘name‘)[‘ver‘].apply(lambda x: ",".join(x)) print(df.shape) # 436+ game_names.head()
【讀書筆記】1_增強學習介紹