强化学习笔记1:强化学习概述
七個字概括強化學習適用的問題:多序列決策問題
1 agent和environment
????????強化學習討論的問題是一個智能體(agent) 怎么在一個復雜不確定的環境(environment)里面去極大化它能獲得的獎勵。
? ? ? ??上圖由兩部分組成:agent 和 environment。
????????在強化學習過程中,agent 跟 environment 一直在交互。
? ? ? ? agent 在environment里面獲取到狀態,agent 會利用這個狀態輸出一個動作(action),或者我們稱之為一個決策。
????????然后這個決策會放到environment之中去,environment會根據 agent 采取的決策,輸出下一個狀態以及當前的這個決策得到的獎勵。
? ? ? ? agent 的目的就是為了盡可能多地從環境中獲取獎勵。
? ? ? ? state是環境的狀態,不是agent的狀態(用另一種貼切的方法來說,可以想成agent的observation)
2 強化學習 VS 監督學習
2.1 監督學習:
?????????以圖片分類為例,監督學習(supervised learning)就是說我們有一大堆標注的數據,比如車、飛機、凳子這些標注的圖片。我們要訓練一個分類器,分辨照片的類型。
????????訓練過程中,我們把真實的標簽給了這個網絡。當這個網絡做出一個錯誤的預測,比如現在輸入了汽車的圖片,它預測出來是飛機。我們就會直接告訴它,你這個預測是錯誤的,正確的標簽應該是車。
? ? ? ??然后我們把這個錯誤寫成一個損失函數(loss function),通過反向傳播(Backpropagation)來訓練這個網絡。
? ? ? ? 也就是說,在監督學習中,我們需要告訴學習器(learner)正確的標簽是什么,這樣它才可以通過正確的標簽來修正自己的預測。
?
????????強化學習需要很多很多次的訓練。以圍棋為例,可能需要上千萬次的training,不可能有人可以這樣和機器互下來train 機器。所以AlfaGo 當時是建立了兩個強化學習模型,一開始先和人類下棋,之后互相下,來進行訓練。
2.2 強化學習
????????以Atari Breakout 游戲為例,這是一個打磚塊的游戲,控制木板左右移動把球反彈到上面來消除磚塊。
????????在游戲過程中,agent 得到的觀測數據是相關聯的時間序列數據,上一幀和下一幀之間其實有非常強的連續性。
????????另外一點是,在玩游戲的過程中,并沒有立刻獲得反饋,沒有告訴你哪個動作是正確動作。比如你現在把這個木板往右移,那么只會使得這個球往上或者往左上去一點,并不會得到立刻的反饋。
????????所以強化學習這么困難的原因是沒有得到很好的很及時的反饋,然后你依然希望 agent 在這個environment里面學習。
????????比如現在是在第三步,你把這個序列放進去,你希望這個網絡可以輸出一個決策,在當前的這個狀態應該輸出往右移或者往左移。
????????這里有個問題:我們沒有標簽來說明你現在這個動作是正確還是錯誤,必須等到游戲結束才可能說明。現在這個動作到底對最后游戲結束能贏是否有幫助,其實是不清楚的。這里就面臨延遲獎勵(Delayed Reward),所以就使得訓練這個網絡非常困難。
- Agent 獲得自己能力的過程中,其實是通過不斷地試錯探索(trial-and-error exploration)。
- 探索(exploration)和利用(exploitation)是強化學習里面非常核心的一個問題。
- 探索:你會去嘗試一些新的行為,這些新的行為有可能會使你得到更高的獎勵,也有可能使你一無所有。
- 利用:采取你已知的可以獲得最大獎勵的行為,你就重復執行這個動作就可以了,因為你已經知道可以獲得一定的獎勵。
- 因此,我們需要在探索和利用之間取得一個權衡,這也是在監督學習里面沒有的情況。?
????????在強化學習過程中,沒有非常強的監督者(supervisor),只有一個獎勵信號(reward signal),并且這個獎勵信號是延遲的,就是環境會在很久以后告訴你之前你采取的行為到底是不是有效的。
????????Agent 在這個強化學習里面學習的話就非常困難,因為你沒有得到即時反饋。
????????當你采取一個行為過后,如果是監督學習,你就立刻可以獲得一個指引,就說你現在做出了一個錯誤的決定,那么正確的決定應該是誰。模型可以及時通過損失函數調整參數。
????????而在強化學習里面,環境可能會告訴你這個行為是錯誤的,但是它并沒有告訴你正確的行為是什么。而且更困難的是,它可能是在一兩分鐘過后告訴你錯誤,它再告訴你之前的行為到底行不行。所以這也是強化學習和監督學習不同的地方。
3 強化學習的特征
通過跟監督學習比較,我們可以總結出強化學習的一些特征。
- 強化學習有這個?試錯探索(trial-and-error exploration),它需要通過探索環境來獲取對環境的理解。
- 強化學習 agent 會從環境里面獲得延遲的獎勵。
- 在強化學習的訓練過程中,時間非常重要。因為你得到的數據都是有時間關聯的(sequential data)時序數據。
- Agent 的行為會影響它隨后得到的數據,這一點是非常重要的。在我們訓練 agent 的過程中,很多時候我們也是通過正在學習的這個 agent 去跟環境交互來得到數據。所以如果在訓練過程中,這個 agent 的模型很快死掉了,那會使得我們采集到的數據是非常糟糕的,這樣整個訓練過程就失敗了。所以在強化學習里面一個非常重要的問題就是怎么讓這個 agent 的行為一直穩定地提升。
4 為什么關注強化學習?
為什么我們關注強化學習,其中非常重要的一點就是強化學習得到的模型可以有超人類的表現。
- 監督學習獲取的這些監督數據,其實是讓人來標注的。比如說 ImageNet 的圖片都是人類標注的。那么我們就可以確定這個算法的上限(upper bound)就是人類的表現,人類的這個標注結果決定了它永遠不可能超越人類。
- 但是對于強化學習,它在環境里面自己探索,有非常大的潛力,它可以獲得超越人的能力的這個表現,比如谷歌 DeepMind 的 AlphaGo 這樣一個強化學習的算法可以把人類最強的棋手都打敗。
?5 強化學習舉例:Pong
????????上圖是強化學習的一個經典例子,就是雅達利的一個叫 Pong 的游戲。這個游戲就是把這個球拍到左邊,然后左邊這個選手需要把這個球拍到右邊。
在這個 pong 的游戲里面,決策其實就是兩個動作:往上或者往下。如果強化學習是通過學習一個 policy network 來分類的話,其實就是輸入當前幀的圖片,policy network 就會輸出所有決策的可能性。
對于監督學習,我們可以直接告訴 agent 正確的標簽是什么(這一步應該是向上還是向下,這樣就可以用CrossEntropy來表示其損失函數,然后進行誤差反向傳播了)。但在這種游戲情況下面,我們并不知道它的正確的標簽是什么。
?
?在強化學習里面,我們是通過讓它嘗試去玩這個游戲,然后直到游戲結束過后,再去說你前面的一系列動作到底是正確還是錯誤。
?
-
上圖的過程是?rollout?的一個過程。Rollout 的意思是從當前幀去生成很多局的游戲。
-
當前的 agent 去跟環境交互,你就會得到一堆觀測。你可以把每一個觀測看成一個軌跡(trajectory)。軌跡就是當前幀以及它采取的策略,即狀態和動作的一個序列:
?????????????????????????????????????????????????
-
最后結束過后,你會知道你到底有沒有把這個球擊到對方區域,對方有沒有接住,你是贏了還是輸了。
-
我們可以通過觀測序列以及最終獎勵(eventual reward)來訓練這個 agent ,使它盡可能地采取可以獲得這個最終獎勵的動作。
-
一場游戲叫做一個?episode(回合)?或者?trial(試驗)。
?6 用CV 類比深度強化學習 deep reinforcement learning
強化學習也是有一定的歷史的,只是最近大家把強化學習跟深度學習結合起來,就形成了深度強化學習(Deep Reinforcemet Learning)。深度強化學習 = 深度學習 + 強化學習。
這里做一個類比,把它類比于這個傳統的計算機視覺以及深度計算機視覺。
- 傳統的計算機視覺由兩個過程組成。
- 給定一張圖,我們先要提取它的特征,用一些設計好的特征(feature),比如說 HOG、DPM。
- 提取這些特征后,我們再單獨訓練一個分類器。這個分類器可以是 SVM、Boosting,然后就可以辨別這張圖片是狗還是貓。
- 2012 年過后,我們有了卷積神經網絡CNN,大家就把特征提取以及分類兩者合到一塊兒去了,就是訓練一個神經網絡。這個神經網絡既可以做特征提取,也可以做分類。它可以實現這種端到端的訓練,它里面的參數可以在每一個階段都得到極大的優化,這樣就得到了一個非常重要的突破。
我們可以把神經網絡放到強化學習里面。
- Standard RL:之前的強化學習,比如 TD-Gammon 玩 backgammon 這個游戲,它其實是設計特征,然后通過訓練價值函數的一個過程,就是它先設計了很多手工的特征,這個手工特征可以描述現在整個狀態。得到這些特征過后,它就可以通過訓練一個分類網絡或者分別訓練一個價值估計函數來做出決策。
- Deep RL:現在我們有了深度學習,有了神經網絡,那么大家也把這個過程改進成一個端到端訓練(end-to-end training)的過程。你直接輸入這個狀態,我們不需要去手工地設計這個特征,就可以讓它直接輸出動作。那么就可以用一個神經網絡來擬合我們這里的價值函數或策略網絡,省去了特征工程(feature engineering)的過程。
?參考文獻?第一章 強化學習概述 (datawhalechina.github.io)
總結
以上是生活随笔為你收集整理的强化学习笔记1:强化学习概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强化学习笔记4:强化学习分类
- 下一篇: 强化学习笔记2:序列决策(Sequent