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一樣也是三個步驟訓練
- 定義未知參數的function
- 定義loss for training data
- optimization
RL第一步: 定義Actor為一個叫做policy的network,output為每個action的機率,我們可以根據機率來做行動(sample),或著選擇機率最大的action,但前者增加了隨機性,並且在經驗上會比較好。
RL第二步: 我們把total reward當作loss,負的loss。
RL第三部: 優化
從流程圖可以看出我們的目標是優化把右下角的loss(負的reward)降到最低,但這邊會遇到很多問題:
- actor輸出式隨機的
- 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】