RL讀書筆記1

  • 概述
  • 強化學習與監督學習的對比
  • 通過與監督學習的比較,我們可以總結出強化學習的一些特徵。
  • 標準強化學習和深度強化學習
  • 序列決策
  • 獎勵
  • 序列決策
  • 動作空間
  • 問題

概述

強化學習(reinforcement learning,RL)的目的是讓智能體環境中獲取足夠多的獎勵。智能體根據在環境中的狀態做出動作(決策),由此動作獲得與之對應的獎勵以及下一個狀態。

強化學習與監督學習的對比

監督學習過程中有兩個假設:

  • 輸入:帶標籤的數據為獨立同分布
  • 監督:每個數據對應一個正確的標籤

強化學習中兩個假設無法被滿足:

  • 在打磚塊遊戲中,智能體(玩家操控的底部小木板)得到的**觀測(observation)**不是獨立同分布的,上一幀與下一幀有非常強的連續性,我們得到的數據是相關的時間序列數據,不滿足獨立同分布。比如如果此時模板在屏幕的邊緣,則向相反一側移動的概率要大於向邊緣方向移動的概率。
  • 另外,我 們並沒有立刻獲得反饋,遊戲沒有告訴我們哪個動作是正確動作。比如現在把木板往右移,這隻會使得球往上或者往左一點兒,我們並不會得到即時的反饋。

思考1
此處的觀測是指輸入的移動指令 (動作) 還是指環境中小球與木板的位置 (狀態)
A1: 狀態是對世界的完整描述,不會隱藏世界的信息。觀測 是對狀態的部分描述,可能會遺漏一些信息。一般用實值的向量、矩陣或者更高階的張量來表示狀態和觀測。

強化學習的訓練數據就是一個玩遊戲的過程。
step1:木板往右移(動作),接到球(狀態)
step2:木板往左移(動作),接到球(狀態)
輸入:step1,step2。 輸出:step3的動作。

思考2:輸入為一個連續序列,動作作為輸入好理解,狀態是否需要作為輸入的一部分?

這裏有個問題,我們沒有標籤來説明現在這個動作是正確還是錯誤的,必須等到遊戲結束才可能知道,這個遊戲可能 10s 後才結束。現在這個動作到底對最後遊戲是否能贏有無幫助,我們其實是不清楚的。這裏我們就面臨延遲獎勵(delayed reward)的問題,延遲獎勵使得訓練網絡非常困難。

思考3:訓練過程是否為,隨機輸入序列,得到失敗的結果後,反向更新每一個動作。如保持前n-1個動作不變,更新第n個動作重新得到結果。

通過與監督學習的比較,我們可以總結出強化學習的一些特徵。

(1)強化學習會試錯探索,它通過探索環境來獲取對環境的理解。

(2)強化學習智能體會從環境裏面獲得延遲的獎勵。

(3)在強化學習的訓練過程中,時間非常重要。因為我們得到的是有時間關聯的數據(sequential data), 而不是獨立同分布的數據。在機器學習中,如果觀測數據有非常強的關聯,會使得訓練非常不穩定。這也是為什麼在監督學習中,我們希望數據儘量滿足獨立同分布,這樣就可以消除數據之間的相關性。

(4)智能體的動作會影響它隨後得到的數據,這一點是非常重要的。在訓練智能體的過程中,很多時 候我們也是通過正在學習的智能體與環境交互來得到數據的。所以如果在訓練過程中,智能體不能保持穩定,就會使我們採集到的數據非常糟糕。我們通過數據來訓練智能體,如果數據有問題,整個訓練過程就會失敗。所以在強化學習裏面一個非常重要的問題就是,怎麼讓智能體的動作一直穩定地提升。

亂想記錄1:雖然輸入的序列不為i.i.d,但每個動作單獨拿出來應該是i.i.d吧?類似單詞中每一個字母的分佈情況。那麼既然輸入是時間強相關序列,是否可以與transformer結合使用。

標準強化學習和深度強化學習

類比於傳統的計算機視覺和深度計算機視覺

傳統的計算機視覺的兩個過程:

  • 提取特徵
  • 訓練一個分類器(SVM)

深度計算機視覺將兩步合為一步,通過卷積神經網絡和下游任務模型結合,輸入圖片,輸出結果(分類、識別等)。卷積提取特徵,根據任務要求再做下游模型微調。

標準強化學習:比如 TD-Gammon 玩 Backgammon 遊戲的過程,其實就是設計特徵,然後訓練價值函數的過程

  • 標準強化學習先設計很多特徵,這些特徵可以描述現在整個狀態。
  • 得到這些特徵後,我們就可以通過訓練一個分類網絡或者分別訓練一個價值估計函數來採取動作
    輸入為設計的滕徵
  • 問題:手工設計的特徵具體指什麼,什麼樣的特徵能描述整個狀態呢?

深度強化學習:自從我們有了深度學習,有了神經網絡,就可以把智能體玩遊戲的過程改進成一個 端到端訓練(end-to-end training)的過程,如圖 1.10b 所示。我們不需要設計特徵,直接輸入狀 態就可以輸出動作。我們可以用一個神經網絡來擬合價值函數或策略網絡,省去特徵工程(feature engineering)的過程。(萬物可煉丹是吧!)

序列決策

agent 一直在跟環境進行交互。這個 agent 把它輸出的動作給環境,環境取得這個動作過後,會進行到下一步,然後會把下一步的觀測跟它上一步是否得到獎勵返還給 agent。通過這樣的交互過程會產生很多觀測,agent 的目的是從這些觀測之中學到能極大化獎勵的策略。

獎勵

獎勵標量
智能體在環境裏面存在的目 的就是最大化它的期望的累積獎勵。不同環境獎勵不同。因為過程中的動作並不會直接產生獎勵(此處獎勵指宏觀),強化學習裏面一個重要的課題就是近期獎勵和遠期獎勵的權衡 ,研究怎麼讓智能體取得更多的遠期獎勵。例如在打磚塊遊戲中,某一時間步的動作向左或向右都不會導致遊戲結束,但在整局遊戲中,假設向左比向右對贏得遊戲幫助更大,那麼此時給向左動作的獎勵就要高於向右。

序列決策

針對每一個觀測,智能體會採取一個動作,也會得到一個獎勵。所以歷史是觀測、動作、獎勵的序列:Ht = O1,R1,A1,…At-1,Ot,Rt
Agent 在採取當前動作的時候會依賴於它之前得到的這個歷史,所以你可以把整個遊戲的狀態看成關於這個歷史的函數St = f(Ht)
S: 狀態, H:歷史, O:觀測, R:獎勵, A:動作
環境與智能體分別有一個函數更新自己的狀態。當兩個函數值相等時,我們稱智能體能觀測到環境所有狀態(環境完全可觀測)。此時強化學習被建模為馬爾可夫決策過程(MDP)的問題。在此過程中,觀測等價於智能體狀態等價於環境狀態。

動作空間

動作空間分為連續與離散,區別為動作數量的有限性。

問題

我理解的基於策略與基於價值,一種為動態規劃,一種為貪心算法?
沒太理解有模型與免模型結構的應用場景
兩者的區別主要在於是否需要對於真實的環境進行建模, model-free不需要對於環境進行建模,直接與真實環境進行交互即可,所以其通常需要較大的數據或者採樣工作來優化策略,這也幫助model-free對於真實環境具有更好的泛化性能; 而model-based 需要對於環境進行建模,同時再真實環境與虛擬環境中進行學習,如果建模的環境與真實環境的差異較大,那麼會限制其泛化性能。現在通常使用model-free進行模型的構建工作。(抄在這裏,慢慢理解…)