1. 程式人生 > >「模仿學習」很強大,但和「強化學習」有什麼關係

「模仿學習」很強大,但和「強化學習」有什麼關係

原文來源:Stats and Bots

作者:Vitaly Kurin

「機器人圈」編譯:嗯~阿童木呀、多啦A亮

在本文中,Statsbot團隊請教電腦科學家Vitaly Kurin簡要介紹模仿學習,並概述強化學習的基本知識。

生物有機體是及其複雜的。即使是諸如蒼蠅或蠕蟲這樣相對簡單的生物也是如此。他們不僅能夠在現實世界中成功生存,而且對環境的變化有著極強的適應力。人類可以提前計劃,亦可以根據新的資訊改變我們的計劃,我們還可以與他人合作,以便更有效地執行我們的計劃。

科學以及諸如歐洲核子研究組織(CERN)或阿雷西沃天文臺的巨大無線電望遠鏡等這樣的專案都是人類協作和規劃的藝術的完美印證。

所有試圖創造一個具有更小的自主權的人造有機體的嘗試都表明,多年的進化過程並不是徒勞的,而建立這樣的有機體是一項艱鉅的任務。

不錯,我們承認,我們現在可以在國際象棋或圍棋中擊敗最優秀的選手,我們可以在Atari 2600的視訊彈球中獲得近似瘋狂的分數,甚至,我們可以在撲克賽中挑戰人類,從而使其破產。那麼我們是否能開啟一瓶香檳慶祝勝利?恐怕不能。

是的,機器學習最近取得了突破性進步。新的深度學習理念與舊版本的結合使我們能夠在諸如計算機視覺、語音識別和文字翻譯等許多領域得以進步。

強化學習也從它與深度學習的結合中受益匪淺。而對於深度強化學習的成功,想必你也早有耳聞,例如在Atari 2600比賽中取得超越人類的成績,戰勝圍棋高手,以及讓機器人學習跑酷(parkou)。

來源:statsbot部落格

但是,我們不得不承認,在現實世界中的成功運作要比玩遊戲或太空入侵要困難得多。許多工比這要難得多。想象一下,一個孩子在擁擠的市中心中間騎著自行車,或者一個人以每小時200英里的時速開著保時捷飛奔在高速公路上。面對這樣的現實,我們必須承認,距離目標的實現,我們還有很遠的路要走。

為什麼我們還沒有實現目標呢?

典型的機器學習方法是從頭開始對模型進行訓練。給它一百萬張圖片和一些時間,從而對其進行識別。給它一個星期,讓它玩太空入侵者,直到它能夠達到一個可以接受的分數。而我們,作為人類,與其有著不同的訴求。

當一個人開始玩一個他從未見過的遊戲時,他已經擁有了大量的預先資訊。在“蒙特祖瑪的復仇”這款遊戲中,如果他看到了一扇門,他就會意識到,在某個地方應該會有一把鑰匙,他需要找到鑰匙。當他找到鑰匙的時候,他記得那扇關著的門是在他曾穿過的兩個房間的後面,然後他會返回從而開啟那扇門。而當他看到一個梯子時,他意識到可以爬上去,因為他已經做了幾百次這樣的事情了。如果我們可以以某種方式將人類對世界的瞭解轉移給智慧體將會怎樣呢?我們該如何提取所有的這些相關資訊呢?我們該如何建立一個基於此的模型呢?這時候就出了這樣一種方式,我們稱之為模仿學習。

模仿學習並不是唯一一個利用人類資料的好方法。一些研究人員也稱之為“學徒學習”(apprenticeship learning),而另外一些研究人員將其稱為“從演示中學習”(Learning from Demonstration)。從我們的角度來看,所有這些標題之間並沒有實質性的區別,我們將從現在開始稱其為模仿學習。

為了引入模仿學習,我們首先需要了解強化學習的基礎知識。

強化學習

其實要得到強化學習的基本概念並不難。有一些智慧體,我們希望這個智慧體能夠學習一些任務。假設,我們有一個Atari 2600控制檯,智慧體可以訪問操縱桿,可以看到螢幕上發生了什麼。

假設,我們以每秒60次的速度給予智慧體一個螢幕截圖,並問它想要按什麼按鈕。如果我們的智慧體表現出色,它可以看到它的分數在增加(正強化),否則我們可以給它一個懲罰作為負獎勵(負強化)。漸漸地,通過嘗試和錯誤,智慧體開始明白,它最好避免去做一些行為,而做一些能給它帶來獎勵的事情。

常用強化學習的設定

我們可以以更為正式的數學方式描述上面的過程:我們可以描述上述的強化學習框架(觀察—動作—獲得獎勵和下一個狀態)作為馬爾可夫決策過程(MDP):

其中:

S是一組狀態,

A是一套動作,

R是獎勵函式,

T是轉換函式,

γ是貼現因子,權衡當前獎勵和長遠獎勵之間的平衡。有一種普遍的觀點認為,相較於遙遠的未知,人類更喜歡當前的獎勵,儘管有一些人認為這種觀點是基於數學環境得出應該有所偏差。

我們還需要對用於下一節的策略函式進行定義,Policy是一個函式,它返回一個給定狀態的動作:

而實際上,實際上,在解決MDP時我們的最終目標是學習這樣一種策略,以便最大化我們的智慧體的獎勵。

舉一個MDP的例子,圓圈代表狀態,帶有綠色標籤的箭頭是動作,紅色標籤是動作的獎勵,而方塊是終端狀態。綠色數字標籤是轉換概率。

圖片來源:David Silver的強化學習課程的幻燈片,第二講

我們的學生現在從藍色圓圈開始,學習對他來說,很難而且有些無聊。他決定開啟一個Facebook應用程式,一旦他進入此狀態,他可以退出或繼續留在當前位置。然後,他學習越來越多的知識,最後決定去酒吧。

這個狀態是一個更小的圓圈,因為現在有一個隨機性的元素,基於學生在去過酒吧後忘記的知識量。然後,他可以學習更多知識,通過考試(+10的獎勵),或者現在他可以選擇睡覺並完成MDP。

DQN演算法(深度Q網路)

由於我們將來會使用DQN和以及相關思想,接下來,我們來簡單瞭解一下。

整個方法建立在近似於所謂的Q函式的基礎上,並基於此建立智慧體的行為。Q函式的概念如下:它返回給你一個關於特定的行為和特定狀態的整個預期的貼現獎勵流,給定從下一個狀態開始,我們將遵循策略π。它回答了這樣一個問題:“在此狀態下按此按鈕究竟有何好處”?

Q函式遵循貝爾曼方程(Bellman equation):

最後,貝爾曼的最優性原則如下:不能總是回顧過去,我們應該始終採取最高Q以最大化獎勵流:

但是你可能會問,我們該怎麼得到這樣的Q函式呢?讓我們來看一個例子:想象一下,你想要一杯咖啡(+20的獎勵)和一臺自動售貨機裡的巧克力(+10的獎勵)。你的總獎勵不能超過30。而且,如果你已經喝了咖啡,從現在起,它就不能超過10(對巧克力的獎勵)。

想法是這樣的:當前步驟和操作的Q值=下一個狀態的最大Q值(因為我們的行為是最優的)+轉換的獎勵。二次目標函式的值變成:

Q-learning本身並不新鮮。使用神經網路作為函式近似值的Q-learning也不新鮮(例如,神經適應型q迭代)。有關DQN的論文是第一個使用深度卷積網路來解決這一型別問題的文章,並引入了一些新穎的方法,使得訓練過程更加穩定。

首先,回放經驗。Vanilla Q-learning 的想法是一步一步操作,從而獲得獎勵和下一個狀態,然後根據這個轉換更新近似函式引數。DQN的想法是進行轉換,並將其儲存在“重放記憶體”中——這是一個數組,用於儲存最後10^6(<插入任何大數字>)個轉換期間有關獎勵的資訊、轉換前後的狀態,以及判別事件是否已達到終端(遊戲結束)或否。

有了回放經驗,我們可以隨機取樣mini-batch,更有效地學習。

第一,每個轉換可能潛在地用於幾個權重更新,並且更有效地使用資料。

第二,通過隨機抽樣,我們打破了樣本之間的相關性,從而減少了權重更新的方差。

使演算法更穩定的另一件事是DQN使用兩個神經網路:第一個計算當前狀態的Q值,第二個計算下一個狀態的Q值。

你可以從具有目標的方程式中看出:兩個不同的Q函式分別使用θ和θ'。每10000步,從學習引數θ複製引數θ',這有助於提高穩定性。

這裡使用一個函式的出現的問題是,當我們更新權重時,Q(s,a)和Q(s',a')都會增加,這可能會導致振盪或策略散度。使用兩個單獨的網路在目標Q值的更新和計算之間增加了延遲,並減少這種情況。如果你對這些現象感興趣,請閱讀 DQN Nature paper中的“方法”部分。

好的,上面描述的一切聽起來都很簡單。如果還有一些你不明白的東西,請看David Silver的講座,他完美地解釋了這一切!

瞭解了這些,我們現在可以建立一個True AI嗎?對不起,但我們不能。

強化學習的挑戰

有幾個問題阻礙我們建立一個能夠在星際爭霸II上擊敗ByuN(Hyun Woo,韓國的一位星際爭霸選手)的智慧體,使自動駕駛汽車早日問世,以及給你的奶奶買個午餐後為她洗碗的機器人。

其中一個問題是,我們的智慧體最後獲得的獎勵可能非常少。假設你下國際象棋,如果你輸了,你怎麼知道什麼時候下的死招?此外,很有可能沒有死招,而是幾個平常的棋子挪動。

獎勵稀疏性是阻礙我們擊敗“蒙提祖瑪的復仇”遊戲的一個問題,這是一個非常難的Atari 2600遊戲,尚未得到破解。

與前一個密切相關的另一個問題是樣本效率問題。或者,更坦率地講,是樣本效率低下問題。即使掌控一個簡單的遊戲,如太空侵略者(Space Invaders),都可能需要幾天的遊戲時間。由於我們可以利用模擬器,所以在遊戲中加速學習過程是很容易的,但是如果我們想在現實生活中學習一些東西呢?不幸的是,物理學還達不到,而且我們不能加速時間。

插圖來源(http://toyoutheartist.co.uk/technique/imitation/)

有一種方法可以解決這些問題,以及其他問題——模仿學習。正如我們在這篇文章開頭提到的那樣。像我們所說,人類很少學習一些沒有任何先前資訊的東西。我們現在使用這個資料,我們應該做什麼?

什麼是模仿學習?

模仿學習是通過在某種意義上模仿人類行為來暗示給予智慧體關於世界的先前資訊。

模仿學習不僅有助於我們解決樣本效率低下或計算可行性問題,還可能使訓練過程更加安全。 我們不能把一輛自動駕駛汽車放在街道的中間,讓它做任何它想要做的事情。我們不希望它危害周圍的人,摧毀某人的財產或裝置。對人類演示的資料進行預處理可能會使訓練過程更快,避免不好的情況發生。

說了上面所有的一切,我們忘了一件事——資料。

訓練模型需要一些資料。 訓練深度學習模型需要更多的資料。 訓練深度強化學習模型需要...好的,你明白了。

所以,這一系列文章只是部分描述我們可以用演示資料做什麼。所有這一切的要點是要求人類演示資料集,不幸的是,到目前為止我們沒有很多辦法。

好的,內容就到這裡。這篇文章的要點是:

機器學習還遠遠沒有建立一個能夠解決或多或少複雜的現實世界任務的自主智慧體;

模仿學習是使這些智慧體更接近的可能解決方案之一;

我們還概述了強化學習的基礎知識,特別是詳細描述了強化演算法之一的DQN。