文章目錄
- 一、什么是強化學習
- 二、強化學習的應用
一、什么是強化學習
強化學習的流程可以用上面這張圖來說明:智能體(Agent)對環境進行觀測,然后根據觀測結果(Observation / State)采取相應的動作(Action),動作作用于環境(Environment)之后,環境就會產生相應的變化,這樣智能體就可以再一次得到新的觀測結果,同時環境也會給智能體一個反饋(Reward)表明這個動作是好的還是不好的。強化學習就是想辦法找到一個策略能夠最大化總的反饋(Total reward)。
比較成功的應用,如:AlphaGo,下圍棋時,它的Observation就是棋盤的情況,根據棋局的形式采取一個Action下一步棋。然后根據Environment的反饋情況,得到一個Reward和新的Observation,再進行下一次的分析和動作。
通過上述圍棋的例子,我們不難發現,Environment是由系統本身決定的,Observation本質上也只是通過某種轉換由Environment變動過來的,在這個例子中,可以是一個視覺神經網絡,將棋局轉換成數學矩陣。同時,有一個好的**Agent(策略生成)**也很重要,它決定了實際的Action,在沒有深度學習之前,用過一些類似于表格的形式,根據局勢進行查表,決定怎么下一步怎么走。這種方式本質上也是一種有監督學習。但圍棋這個數學組合很難窮舉,但有了Reinforcement Learning就不同了,通過一個通用的神經網絡來分析形勢。這也是Supervised Learning和Reinforcement Learning的差異。
而Reward這個變量就比較特殊,雖然也是和Environment有關系,但也是由人為定義的一些規則來決定的,比如圍住了對方的棋子,得1分;被圍住得-1分,沒有棋子數量變動為0分。所以如何從一個定義好的Reward規則也很重要。這里的Reward設定也有它的弊端,即得分為0的情況是比較常見的,得分或扣分的情況是比較少見的,所以它的Reward是比較稀疏。
二、強化學習的應用
Supervised Learning的方法在某些問題也不適用,比如在聊天機器人(Chatbot)訓練時,上一個人的提問,沒有完全對應的答案。
而利用Reinforcement Learning的思想,雖然對話沒有像圍棋一樣有明確的得分Reward規則,但我們可以train兩個Chatbot互相對話,人為定義一個規則:“通過查看對話記錄,來評判是好是壞”。
還有一個比較常見的應用:電子游戲,OpenAI也有對應的python游戲環境,可以用于強化學習的訓練。
比如上述的Video Game就來自于gym。左上角是分數,中間是需要打擊的目標,玩家可以左右移動,開火。轉換到RL中就是三個Action。
gym中的游戲Environment已經轉換成矩陣給到用戶,可以直接給到Agent,得到Action。像這個游戲中擊殺一個外星人,可以得到5分。當采取一個Action之后,Environment也會發生變化(通常都是隨機的),這樣我們又進入了下個Action生成的階段。
當游戲進行了N次這樣的循環之后,當采取了某次Action- α T \alpha_T αT?之后,游戲進入了終止狀態,這時候得到了一個總的Reward。那么這一整個游戲過程,我們稱為episode,通常我們以一個episode和它對應總的Reward為一個訓練數據。為什么這么做呢?
這里就要回到我們上面提到Reward設計的弊端了,有時候Reward的規則往往會導致Agent沒法得到即時的獎勵,但這又是無法避免的。在現實生活中,這種問題比較常見,比如下棋中,短期的誘敵犧牲可能為后期的勝利做鋪墊。所以Reward的delay是很常見的,所以我們在訓練的時候也需要將這種情況考慮進去。
其次Agent作為一個小白,如果僅以即時獎勵為優化目標,那么在alien游戲中,它只有開火才能得分,那么訓出來的Agent就只會開火。
以上內容為李宏毅老師課程中的總結。