Reinforcement Learning, RL-1

--

經典的應用為圍棋,圍棋看到一個棋譜,我們不知道正確的答案(下一步棋)是什麼,所以針對圍棋,我們不知道最好的label(下一步)是什麼。

RL中有environment以及action這個我們要找的function,function input為environment給的observation,output為action,傳回給environment。environment會給action一個reward,我們的目標就是最大化所有的reward(total reward = return)。

RL跟普通ML一樣也是三個步驟訓練

  1. 定義未知參數的function
  2. 定義loss for training data
  3. optimization

RL第一步: 定義Actor為一個叫做policy的network,output為每個action的機率,我們可以根據機率來做行動(sample),或著選擇機率最大的action,但前者增加了隨機性,並且在經驗上會比較好。

RL第二步: 我們把total reward當作loss,負的loss。

RL第三部: 優化

RL整體流程圖

從流程圖可以看出我們的目標是優化把右下角的loss(負的reward)降到最低,但這邊會遇到很多問題:

  1. actor輸出式隨機的
  2. env and reward都是黑盒子,根本不是個架構,甚至有些RL問題中他們也是有隨機性的,下棋對面的回應,每次也都可能不太一樣。

RL的隨機性很大,就算你train一個model,你在testing給同樣的input出來的結果總是不一樣。

Policy gradient,RL一種optimization方法

收集一些資料,這些資料有label,label代表想要做這個action跟不想要做這個action(不想要的loss就加上負號),甚至label可以有程度(小數),來訓練actor。

結果其實又回到supervise learning,你的資料data為某個情況下採取的action,然後label為這麼action好的程度或者壞的程度。

最簡單的版本就是我們隨機產生actor,然後配合不同的env,最後的label用當下做的那個選擇的reward,但很明顯看出這是個短視近利的data,因為我們看的reward因該是整體的reward,不好。

Policy gradient其實是把label把之後所有的reward當作label(cumulated reward)。而因為距離越遠的reward跟現在我所做的Action關係比較小,所以會有weight來讓越遠的reward占比較小。

並且reward是相對的,還要做標準化,讓label減掉base line。

所以整個步驟就是,在每一個episode,獲得很多資料(用actor跟env當作feature,reward當作label),拿這個資料訓練actor,下一個episode,獲得很多資料…重複,收集資料的Actor跟訓練的Actor是一樣的(On-policy),所以很花時間。

Off-policy則是收集資料的Actor跟訓練的Actor不一樣的(Ex PPO),不細講。

並且在訓練的時候我們增加隨機性的名詞叫做 Exploration。

RL從遊戲開始到遊戲最後的過程,稱為一個episode。

參考資料: Hung-yi Lee 【機器學習2021】

--

--

Kola (Yan-Hao Wang)
Kola (Yan-Hao Wang)

Written by Kola (Yan-Hao Wang)

在系統軟體跟資安領域學習的學生

No responses yet