當前位置:
首頁 > 科技 > 你知道「模仿學習」功能強大,但它和「強化學習」有什麼關係?

你知道「模仿學習」功能強大,但它和「強化學習」有什麼關係?

GIF/1.7M

原文來源: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。

想進一步了解,歡迎閱讀以下內容:

Andrew Sutton和Andrew Barto的強化學習聖經

David Silver在倫敦大學學院的強化學習課程

DQN原文報告:NIPS workshop, Nature

原始DQN torch代碼

有關強化學習的優秀系列Medium文章,由Athur Juliani撰寫並附代碼。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器人圈 的精彩文章:

嫌圖片太大!有卷積神經網路幫忙,生成高質壓縮圖像不再難
瞬間變樣!看TensorFlow如何實現深度「圖片風格遷移」
TensorFlow和PyTorch相繼發布最新版,有何變化
如何用CoreML和Swift在蘋果上開發「實時對象識別器」

TAG:機器人圈 |

您可能感興趣

「勉強」為什麼是學習的意思?
如何讓知識在大腦里安寨紮營?為什麼說「概念」和「思想」是認知學習法最有利的武器?這是關於高效學習你最應該讀的文章!
你怎麼知道你的學習是否有效果?
什麼是真正的學習?
孩子不再「勉強」學習的關鍵
都知道「深度學習」,但你知道什麼是「廉價學習」嗎?
為何學習新知識這麼難?因為大腦可能比你想像中更死板
學習如何才能更有效?
學習化學有什麼快速的好方法?
強迫症是如何損害記憶和學習能力的?
大學英語,我是這樣學習的,親試有效!
哲學不能吃不能喝,那學習哲學的意義是什麼呢?
孩子為什麼學習難,學習吃力?您知道嗎?
學習壓力究竟能有多大?意志在頑強支撐,身體卻已經唱反調!
必須要學習再學習,勤能補拙才是真理
如何有效的學習化妝技巧?
如何更有效的學習?
心理學:為什麼明明知道學習好,但還是會拒絕學習
真正有效的學習方法是什麼樣的?
怎樣學習更有效