親手教的AI總是放心些

版權聲明:本文智能單元首發,本人原創,禁止未授權轉載。

前言:6月12日,DeepMind和OpenAI聯合發布了論文《Deep Reinforcement Learning from Human Preferences》,主要介紹了合作團隊在增強學習領域中,面對那些在「現實世界中,那些無法得到回饋函數的複雜任務」的新思路和相關工作進展,其核心思路就是引入了非專家人類對增強學習個體的學習過程進行了「指導」

有趣的是:雙方在博客中均提到了該研究是在「Technical AI Safty」的長遠研究願景之下產生的,這不能不讓人產生一些聯想:)

內容列表

  • 問題驅動
  • 論文思想
  • 演算法思路
  • 實驗效果
  • 下步研究
  • AI安全

問題驅動

在我看來,這篇論文是由兩個問題驅動的:

  • RL演算法面對複雜任務的回饋函數難以設計
  • 從技術層面探索人工智慧安全

其中第一個問題是論文用力著墨的。第二個問題是OpenAI和DeepMind這個合作團隊的遠期研究願景和在官方博客(OpenAI Blog & DeepMind Blog)中關於本次合作成果的介紹中體現出來的。本專欄文章重點介紹第一個問題,在文末簡單談下第二個問題

RL演算法在面對複雜任務時存在問題。增強學習發展良好,這個趨勢目前也良性地保持著。然而歸納一下就可以發現,增強學習演算法目前大放異彩的領域,大都是能夠給出一個良好定義的回饋函數(reward function)的領域。從最初的7個Atari遊戲,到後來的幾乎整個Atari遊戲集合,再到AlphaGo,幾乎都是這樣。這和增強學習演算法本身的世界觀設定是密切相關的:

上圖截取自David Sliver的增強學習課程Lecture 1

對於每個看David Silver的RL課程或者看Introduction進入到增強學習世界的人來說,上面這幅圖簡直是熟悉的不能再熟悉,因為這就是RL的基本世界觀。

有了Gym、Universe和ViZDoom,研究者在這些平台上能夠很方便地調試著自己演算法,讓智能個體(agent)在各種任務中去獲取更多的回報(Return),而每次env.step(action)之後得到的回饋(reward),也成為了一個默認事實。況且,即便是環境給出了回饋,有時還需要做一些回饋塑形(reward shaping)工作才能取得較好的效果,如何改進演算法本身是我們的核心關注,回饋不是本來就該有的嘛?

  • 然而問題在於:現實世界中,有太多的任務,它們的目標不但複雜,而且很難良好地定義,甚至連合理地描述都很困難,這樣的任務如何去設計一個回饋函數?既然無法給出良好的回饋函數,增強學習演算法該如何在這些任務中發揮他們的威力呢?

OpenAI和Deepmind合作團隊說:我們用人的判斷來指導演算法的學習

論文思想

要是我們想用增強學習演算法訓練一個人形機器人,讓它能夠收拾桌子或者說是打個雞蛋什麼的,你說該怎麼構建一個回饋函數函數?一般的思路就是去設計一個,讓它能夠儘可能低去近似想要的動作。然而事實證明這樣經常會讓演算法向著奇怪的方向跑偏。還有,你人形機器人相對來說人還比較能夠「感同身受」一點,但是要是是一個複雜的非人形機器人呢?就更麻煩了。

論文的解決思路是:讓人類對系統的當前動作來做出反饋,然後使用這些人類的反饋信息來定義這個具體的任務。這個思路的可行之處是可以自然地融入到增強學習的流程中,存在的主要問題是如果人類反饋信息的需求量過大,那麼就不切實際了,所以至少需要呈幾個量級地降低演算法對於人類反饋信息的需求。

首先要說的,是人類反饋的具體形式:很簡單,實驗是請了一些不是領域內的專家的志願者,然後演算法選出自己沒什麼把握的訓練過程中的視頻片段(一般1-2秒)讓人類看,人類給出反饋,看那個視頻片段中智能個體(agent)的動作更符合任務的目標定義。志願者們看到的界面如下圖所示:

比如:一個任務的描述是「讓機器人玩Qbert玩得更好」,志願者就看兩個視頻,哪個視頻中的機器人感覺玩得更好,就選擇哪個。具體的原理後文有講解。

根據下圖並比對傳統RL可以看到:傳統增強學習演算法賴以訓練演算法的回饋信息是環境直接給出的,就好比我們在Gym中調用了env.step()函數後,它返回給我們的數據中就包含了回饋(reward),回饋是明明白白寫那裡,可以實際看到的,比如就是1。然而在本文的設定中,這麼一個回饋不是環境直接給出的,而是來自於一個回饋函數預測器(紫色方框)。

上圖截取自OpenAI博客對於論文的介紹博文

回饋函數預測器一方面能夠預測出回饋信號,並把回饋扔給演算法說:喏,雖然不是環境直接給的回饋,不過我預測回饋還是將就能用的,拿去訓練吧!另一反面,它通過比較自己的預測結果與真實人類的反饋信息,不斷地在學習,讓自己能夠更加接近人類的偏好。總的說來,它即努力揣摩老闆(人類),又給下屬明確的反饋(回饋信息),是個稱職的小伙兒。

演算法思路

看完論文簡介,我給自己提出以下問題:

  • 問題:演算法的回饋預測器具體是什麼結構?
  • 問題:演算法的回饋預測器如何根據人類反饋信號去擬合人類偏好的?
  • 問題:演算法是如何挑選哪些片段應該以視頻的方式呈現給人類讓其判斷的?
  • 問題:人類對於視頻片段的反饋信息數據是如何設計的?
  • 問題:策略網路是如何更新的?

帶著這些疑問去閱讀,往往能夠理解得更深。我發現其實以上問題得到解答,基本上這個演算法也就理解了,所以我就不按照論文的組織,而是按照對以上問題的解答順序去介紹演算法

演算法的基本設定和目標:觀測o_tin O,動作a_t in A,個體軌跡的片段是由觀測和動作組成的序列sigma =((o_0,a_0),(o_1,a_1),...,(o_{k-1},a_{k-1}))in(O	imes A)^k,同時假設人類能夠對個體軌跡的片段表達出自己的偏好。如果人類認為智能個體的動作軌跡片段sigma^1sigma^2更符合目標任務的表述,這種偏好就用sigma^1succ sigma^2來標示。

說的直白一點,智能個體的目標就是兩點

  • 一方面要儘可能產生符合人類偏好期望的動作軌跡
  • 另一方面要儘可能少地去詢問人類(這是為了減少人類成本)。

論文中還定量地分有回饋函數和沒有回饋函數兩種情況討論了目標問題,符合直觀感受,這裡就不贅述。

隨著論文的閱讀,我發現自己提出的問題都被有序地得到了解答:

  • 問題:演算法的回饋預測器具體是什麼結構?
  • 演算法在每個時間點都保持著兩個深度神經網路,一個是策略網路pi:O	o A,一個就是回饋函數預測器:hat{r}:O	imes A 	o mathbb{R}。所有回饋函數預測器就是個深度神經網路,那麼它如何去擬合人類偏好的套路基本也就差不多是有監督學習的老套路了。

    這些神經網路之間的協作方式還是需要注意一下的:

    1. 在策略網路pi的指導下,智能個體與環境發生交互,得到了一系列的軌跡集合left{ 	au^1,...,	au^i  
ight} 。策略網路還是採用傳統的增強學習演算法來更新,目的就是得到最大的回報;
    2. 從軌跡集合left{ 	au^1,...,	au^i  
ight} 中選取軌跡片段left( sigma^1, sigma^2 
ight) ,然後做成視頻扔給人類,讓人類去比較判斷;
    3. 回饋函數預測器hat{r}的參數更新採用典型的有監督學習方式,使用從人類那兒得到的反饋信息(就是比較結果啦)作為目標讓其學習並擬合。
    • 問題:人類對於視頻片段的反饋信息數據是如何設計的?

    人類得到的是動作軌跡片段的可視化樣本,也就是視頻,視頻長度一般1-2秒。然後根據視頻和研究者給出的,對於任務目標的自然語言描述,開始判斷視頻到底哪一個更符合任務目標的期望。演算法使用元組left( sigma^1, sigma^1, mu 
ight) 的來記錄人類的反饋,並將其存儲在資料庫D。其中:

    1. sigma^1, sigma^1, 自然是指動作兩個軌跡片段;

    2. mu指的是對於兩個片段的偏好的概率分布;

    3. 實際操作時:如果人類判斷片段1優於片段2,那麼就將所有的質量放在1上(具體mu的取值論文沒說);如果人類覺得兩個片段一樣好,那麼mu就是平均的。如果人類無法判斷,那麼就不放入資料庫。

    按照這種數據結構,人類的偏好就記錄了下來。個人猜測mu的實際是由兩個和為1的mu_1,mu_2構成,當偏好明確的時候,取值為0,1。當偏好均等時,均取0.5。

  • 問題:演算法是如何挑選哪些片段應該以視頻的方式呈現給人類讓其判斷的?
  • 這個問題實際上對應的就是論文作者在開篇提出的:要讓人工反饋的量下降幾個量級才能使得演算法具有實際操作性。思路如下:

    1. 基本思想是:回饋函數預測器中存在不確定性,基於對這種不確定性的近似來向人類進行詢問

    2. 具體流程是:首先取樣出大量的動作軌跡對left( sigma^1, sigma^1 
ight) ,軌跡的長度均為k。然後演算法中其實有多個回饋函數預測器(因為本文是按照自己提問的順序在組織,論文在介紹如何挑選詢問軌跡之前已經介紹有多個回饋函數預測器情況),那麼就用每個回饋函數預測器對所有的動作軌跡對都做出預測。假設有n個回饋函數預測器,那麼每個軌跡對就會得到n個預測的回饋值。其中有些軌跡對的n個預測值的方差大,有的方差小,演算法選擇方差最大的那些軌跡對作為被人類詢問的軌跡對
    3. 具體選多少來詢問人類呢?在論文的實驗與結果部分,可以看到它不同的實驗環境(MoJoCo和Atari)用的標籤數不同:在機器人任務MoJoCo的不同任務中,用了750次人類判斷數據來訓練;在Atari的不同遊戲中,用了5500次人類判斷數據來訓練。實際採集的數據可能更多些。

    論文的作者認為這個挑選方式還是有點簡單粗暴了,下一步可能會基於詢問信息的期望值來進行挑選,但是這也是後續的工作了。

    • 問題:策略網路是如何更新的?

    沒什麼好說的,還是老的RL那一套。MoJoCo任務用的是TRPO,Atari用的是A2C,為啥選擇這倆演算法呢?因為回饋函數預測器hat{r}的分布可能是非靜態的,所以演算法最好對回饋信號能夠魯棒一些,於是方法最好選策略梯度類方法咯。還有個細節要注意:回饋函數預測器hat{r}的預測回饋數據出來在用來訓練之前,要進行歸一化處理。

  • 【核心問題】:演算法的回饋預測器如何根據人類反饋信號去擬合人類偏好的?
  • 這個問題直接指向了論文演算法的核心了。然而思路也還是比較簡單直接的,肯定還是有監督學習的套路,就是看看Loss是如何構建的了。

    首先我們做出如下假設

    • 回饋函數預測器hat{r}是解釋人類判斷的潛在因素;
    • 人類對於智能個體的某個動作軌跡片段sigma^i的偏好的概率是指數級地依賴於這個動作軌跡中的left( o^i_t, a^i_t 
ight) 的某種計算方式得出的值;
    • 這種計算方式就是就是對軌跡中整個長度的所有觀測和動作對left( o^i_t, a^i_t 
ight) 求出潛在回饋之和,也就是說,求出hat{r} left( o^i_t, a^i_t 
ight) 之和。

    如果接受以上假設,那麼就可以把回饋函數預測器hat{r}看做是人類偏好的預測器

    論文給出了更加偏好於某個動作軌跡的概率的計算方式:

    egin{align}hat{P}left[ sigma^1succ sigma^2 
ight]=frac{exp sum hat{r}(o^1_t,a^1_t)}{exp sum hat{r}(o^1_t,a^1_t)+exp sum hat{r}(o^2_t,a^2_t)}  end{align}

    那麼如何構建損失函數呢?使用預測標籤和人類打的標籤,計算它們之間的交叉熵損失,然後讓回饋函數預測器hat{r}(也就是一個深度神經網路)來最小化這個損失值即可。典型的有監督套路,夠直接!計算方式如下:

    loss(hat{r})=-sum_{(sigma^1,sigma^2,mu)} left( mu(1) log hat{P}[sigma^1succ sigma^2]+mu(2) log hat{P}[sigma^2succ sigma^1] 
ight)

    :原論文在求和符號後沒有括弧,我根據自己的理解補充了括弧將兩個式子都包含起來。

    為什麼要這麼計算,論文說這是Luce-Shephard選擇規則的一個特例。我暫時還沒有去更細地查看這個選擇規則的細節。

    現在,就理清了如何根據人類反饋數據來訓練回饋函數預測器了:利用人類反饋數據中的偏好標籤mu、運動軌跡中的觀測與動作對序列和回饋函數預測器,按照Luce-Shephard選擇規則構建回饋函數預測器網路的損失函數,以最小化損失值為目標,最優化訓練網路

    在介紹如何擬合回饋函數預測器的時候,論文還介紹了一些細節,分別是:

    • 擬合了好幾個回饋函數預測器;
    • 數據的1/e用來做驗證集,用了l_2正則化,有的任務用了dropout;
    • 假設了10%的人類數據是隨機的,因為人類判斷可能存在錯誤。

    關於以上幾個設置,在實驗與結果中有一個小結專門進行了比較,但是我認為不是特別重要,所有會略過。感興趣的請閱讀原文。

    實驗效果

    先說一下總體感受,然後就值得一說的一些特殊情況做簡要介紹:

    • 越難以用人工設計的回饋函數來描述的任務,本文演算法相對於傳統演算法越有優勢。相對的,在一些用回饋簡單的任務中,本文演算法沒有什麼優勢;
    • 人工判斷能夠起到一種潛在的較好的回饋塑形(reward shaping)的作用;
    • 論文比對了人工標籤與機器硬體的成本經濟問題,使用堆硬體用傳統RL跑的成本和將人類納入到演算法中的本文方法的成本已經接近,而且如果演算法能進一步降低需要問詢人類的量,那麼可行性就更高了。

    前文也提到了,實驗主要在兩個環境中做:一個是模擬機器人MuJoCo中的8個子任務,另一個是Atari中的7個遊戲。但是需要特別注意一點的是比較的對象分為三類

    1. 用RL演算法和環境提供的真實回饋信息訓練的演算法表現:比如在Atari中使用env.step()提供的reward和A2C演算法訓練智能個體;
    2. 用論文方法和人類回饋數據訓練的演算法表現:比如用750個詢問過人類得出的回饋數據訓練的智能個;
    3. 用論文方法和合成問詢數據訓練的演算法表現。

    什麼是合成問詢數據?原文寫作synthetic queries,實際上也很簡單:就是用環境內部機制製造的仿人類反饋的絕對正確的判斷數據。

    具體操作是這樣的:當智能個體想要就某個兩個動作軌跡的比較詢問人類的時候,不去詢問人類,而是通過後台的任務直接計算得出哪個動作軌跡會有更高的回饋得分,然後用這個結果作為判斷去回應智能個體。比如智能個體給出了兩段視頻,是機器人走路的,一個走得穩,一個走得不穩,人類自己不表達判斷,而是看了下MoJoCo環境中對於這兩段動作軌跡給出的回饋得分,哪個高就說哪個好。

    在MoJoCo任務中,實驗結果如下:

    上圖截取自論文

    其中,橙色的是利用環境給出的回饋數值的標準RL演算法,紫色的是人類判斷數據訓練的本文方法,其他的是用不同數量的合成問詢數據訓練的本文方法。可以看到,大部分情況下,紫色比橙色是要差一些,但是相差也不是很大。唯一在ant任務上,出現了紫色的大幅度反超,這引起了我的興趣。

    Ant任務上的特例:首先,Ant任務是要求實現機器人向前走。論文關於Ant任務上方法表現非常好的解釋是說,可能是因為在對人類志願者給出的任務描述中,要求人類偏好那些「機器人能夠站得直」的動作軌跡片段,這一要求被證明是有效的回饋塑形(reward shaping)。實際上在RL的回饋函數中,有類似的設計對站得直的動作有加分,但是不怎麼有效。

    在Atari任務中,實驗結果如下:

    上圖截取自論文

    可以看到相較於MoJoCo中的「差不多」,Atari中有不少任務中使用RL+真實回饋的橙色都吊打了本文的方法了。對於這個現象,論文作者的解釋比較輕描淡寫,重點在說論文人類詢問數據訓練的水平和相同數量級的合成詢問數據的水平接近。在breakout和spaceinvader中與RL差距過大被解釋為「不管怎麼樣還是在穩步提升」。唯一一個讓人開心的特例是enduro:

    Enduro任務上的特例:運行了下Gym,發現就是這麼一個開車躲其他車的遊戲。(哦哦,居然還是Activision哦!)

    為什麼在這個任務上,傳統的A2C表現如此差,而本文方法如此好呢?論文作者認為是因為A2C演算法想要在隨機探索之中學會成功地避開其他車輛非常地難,而人類在打標籤的時候,對於任何能夠避開旁邊快車的行為都會傾向於獎勵,這又是一個很好的回饋塑形。

    下一步研究

    論文本身的結論當然是好好好啦,這裡就略去不表,談談他指出的下一步研究方向:

    • 一是提高演算法學習人類偏好的效率;
    • 二是讓演算法嘗試應用在更大範圍的任務上;
    • 三是更高效地挑選需要人類進行判斷比較的動作軌跡片段;

    個人認為第三點是最有價值的,現在只是看誰方差大誰上,簡單了點。

    AI安全

    OpenAI在官方介紹博客第一句就開篇明義:「移除由人類來設計全局函數的需求,是構建安全人工智慧系統的重要一步。因為對於一個複雜的任務來說,使用一個簡單的代理(也就是說回饋函數),或者稍微把複雜的目標搞錯一點兒,就會導致無法預期的、甚至十分危險的後果」。

    通讀全文,該篇論文只是在解決一個無法給出回饋函數的任務如何使用RL演算法進行訓練的技術問題,沒有一字著墨人工智慧安全。然而在雙方博客上對於合作團隊願景的介紹上來看,著力於人工智慧安全的探索已經穩步展開了。

    個人認為:O家和D家這些人工智慧的頂尖團隊,不僅要思考技術問題,更會思考如何營造一種有利於AI技術持續發展的良好輿論氛圍。AlphaGo和此前的波士頓動力多多少少也引起了普通民眾對於人工智慧技術的擔憂,反對的思潮也若隱若現。研究者當然可以認為這是由於無知導致的愚昧,但是相較於斥責他人無知,激起更多非理性的情緒,做一些能夠從技術上保障AI安全,同時緩解大眾對於人工智慧技術的擔憂和恐懼,改善輿論環境的事情,顯然是更合理的行為。

    這篇論文的妙處就在於:不僅僅在技術上探索了複雜任務下移除人工設計回饋函數,這個工作本身就從技術上探索了安全性。而且在整個演算法的外在形式上,也非常地合乎人類期望,讓一般民眾能夠易於接受

    論文演算法思想可以比喻為人類在指導AI進行學習。而在這個過程中,人類處於主導地位:我想要教好一點也可以,我想要教差一點也可以。既然人類能夠控制AI學習的水平,那麼矛盾也就轉移到人怎麼去教,教的對錯問題上,而不是集中在AI技術是否應該發展上了。

    文末人工智慧安全這一塊,只是個人基本該論文和兩家博文的發散聯想,歡迎拍磚:)

    讀者反饋

    • 歡迎批評大家對解讀內容在評論中批評討論;
    • 還有人問CS231n的資源問題,現在17年春的都出來了,大家自己找資源吧,我就不回復此類私信咯;
    • 堅持一個月一篇的節奏。

    推薦閱讀:

    他這個Z炮是怎麼壓到我的?——OpenAI解釋Dota2AI的實現過程

    TAG:强化学习ReinforcementLearning | 人工智能 | openai |