「模仿学习」很强大,但和「强化学习」有什么关系
原文來源: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。
總結
以上是生活随笔為你收集整理的「模仿学习」很强大,但和「强化学习」有什么关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kali 使用已破解的 BurpSuit
- 下一篇: handsontable mysql_H