
到目前为止,我們講的幾乎都是 Supervised Learning、就算是我們在講 Self Supervised Learning 的時候、其实也是很类似Supervised Learning的方法,只是label不需要特別僱用人力去標記,可以自动产生。或者是我們在講 Auto-encoder 的時候、我們雖然說它是一個 Unsupervised 的方法、没有用到人类的标记,但事实上,还是有一个label,只是这个label不需要耗费人力来产生。
但是 RL 就是另外一個面向的問題了,当人类也不知道正确答案是什么的时候,,也许就是你该考虑RL的时候,
藉由跟環境的互動、机器可以知道 它現在的輸出是好的還是不好的(Reward)
介绍RL的基本概念时,有很多不同的切入點、也許你比較常聽過的切入點是從 Markov Decision Process 開始講起、那我們這邊選擇了一個比較不一樣的切入點、我要告诉你 RL 它跟我們這一門課學的 Machine Learning是一樣的框架(三个步骤)

RL最早的几篇论文都是让机器去玩Space Invader这個非常簡單的小遊戲

游戏操控者是Actor,Action是三个:向左、向右或者开火。如果杀掉一个外星人Reward=5,左右移动不得分。学习目标是使游戏得分最大。

那接下來要告訴你說、RL 跟機器學習的 Framework、它們之間的關係是什麼
RL 其實也是一模一樣的三個步驟

Step1: Function with Unknown

在還沒有把 Deep Learning 用到 RL 的時候、通常你的 Actor 是比較簡單的、不是network,它可能只是一個 Look-Up-Table
Actor叫做Policy Network,其实是一个复杂的function,他的输入是游戏画面,输出是每一个可以采取的行为的分数。其实是一个分类任务。
其实在RL里,你的 Policy Network跟分類的那個 Network其實是一模一樣的。至于这个Network架构,可以自己设计,比如如果输入是画面,network可以是CNN。
在作业里,不是直接讓我們的 Machine 去看遊戲的畫面、讓它直接去看遊戲的比较难做,所以是看跟現在遊戲的狀況有關的一些參數而已。在作业的simple code里还没有用CNN那么复杂,就是一個簡單的 Fully Connected Network
如果要同时考虑整場遊戲到目前為止發生的所有事情,可以用RNN(过去)或者transformer(现在)。
最后机器决定采取哪个action、取決於每一個 Action 取得的分數
常见的做法是,直接把这个分数当做一个机率,然后按照这个机率去sample,去隨機決定要採取哪一個 Action
为什么不直接看哪个分数最高就采取哪个?采取sample的好处是、就算是看到同樣的遊戲畫面,机器每次采取的行为也会略有不同,在很多游戏里这种随机性也许是重要的。还有一个理由等下再讲。
Step2: Define “Loss”

从游戏开始到结束 这一整个过程叫一个episode,
total reward另一个名字叫return,RL的文献上常常同时看到这两个词。
Reward 跟 Return 其實有點不一樣、Reward 指的是你採取某一個行為的時候、立即得到的好處、把整場遊戲裡面所有的 Reward 通通加起來 叫做 Return

Step3: Optimization
根据互动过程机器会得到Reward,可以把Reward想象成一个function,
Reward Function有不同的表示方法、在有的遊戲裡面、也许reward只需要看你採取哪一個 Action 就可以決定。不過通常決定 Reward 的時候、光看 Action 是不夠的、還要看現在的 Observation 才可以、因為並不是每一次開火都一定會得到分數、要正好有擊到外星人、所以通常 Reward Function 在定義的時候,不仅需要看Action还需要看Observation
目标是 找一个network的参数让R越大越好。
乍看之下,如果Env、actor和reward都是 Network 的話、這個問題其實也沒有什麼難的、它看起來就有點像是一個 Recurrent Network
而RL困难的地方是,這不是一個一般的 Optimization 的問題
1. actor的输出有随机性,因为a1是sample出来的,
所以假設你把 Environment Actor 跟 Reward合起來當做是一個巨大的 Network 來看待、這個 Network 裡面的某一個 Layer 它的輸出每次都是不一樣的
2.
你的 Environment 跟 Reward它根本就不是 Network 啊、是一个黑盒子。遊戲機它裡面發生什麼事情你不知道、你只知道採取一個行為它會有對應的回應、但是到底是怎麼產生這個對應的回應、我們不知道。而Reward也不是一个network 是一个规则。
而且往往Env和Reward也有随机性。
所以 RL 真正的難點就是、我們怎麼解這一個 Optimization 的問題
其实,跟GAN有异曲同工之妙,
一样的地方:actor就像generator,Env和Reward就像discriminat