1. 程式人生 > >【讀書筆記】1_增強學習介紹

【讀書筆記】1_增強學習介紹

新的 進行 pla 開始 進入 idt nvi 利用 lin


本文為Thomas Simonini增強學習系列文章筆記或讀後感,原文可以直接跳轉到medium系列文章


文章先是給用戶指出必須了解增強學習的概念


  • 增強學些是什麽?為什麽獎勵是中心概念
  • 增強學習的任務和三種實現方式
  • 深度增強學習的深(deep)意味著什麽?


增強學習過程概念介紹


首先,什麽是增強學習? 我們需要用計算機進行模擬一個環境,例如玩馬裏奧遊戲,來理解這個過程。由於不是我們自己玩,需要一個代練(Agent),那麽就是用計算機了。代練進入遊戲(environment)開始接收到一個狀態(state)開始(game start, state 0), 基於遊戲這個狀態做出前進,後退,跳動等動作(action), 環境就從上一個狀態到下一個新的狀態,同時由於代練是沒有感覺的,需要通過給他激勵(rewards)告訴他采用這個動作是否是好的,然後我們不斷得循環這個過程。這個循環不斷輸出狀態

動作獎勵。這個過程的目標就是讓代練為我們帶來這個過程中持續獲得的最大獎勵。


馬裏奧增強學習人體示意圖:


技術分享圖片


所以獎勵是中心概念,設計如何給代練獎勵,是代練能否按照我們的意願把遊戲玩好的關鍵。給一個計算機能明白的獎勵方式:


技術分享圖片

但是換另外一個遊戲,如下圖所示,老鼠想要獲得更多起司獎勵,但是更多的起司就更靠近貓。


技術分享圖片


如果每一步獎勵都按照一樣的比例給,會不會導致代練就在附近的地方一直逛,所以對每一步設計一個折扣,如果你不走遠一點,獎勵也會變得原來越少。所以我們的獎勵方式變成如下所示:


技術分享圖片

增加一個gamma,讓獎勵指數遞減。


增強學習任務,學習方法,實現方式


任務分兩種,插話型(episode)和連續型(continuous

),前者有起點和終點狀態(如玩遊戲總有game over的時候),後者無終點狀態(股市的話,就比較長久了,可能一直沒有終點)


學習方式也有兩種,一種是在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_增強學習介紹