南京大學教授俞揚:走出遊戲世界的強化學習

杭州網訊12月18日-20日,2020本站未來大會在杭州盛大舉行。大會以“洞覺未見”爲主題,匯聚了全球最強大腦,期盼以遠見超越未見,去尋找打開未來的鑰匙。

大會上,南京大學教授,國家萬人計劃青年拔尖人才俞揚做了《走出遊戲世界的強化學習》主題演講,分享了一種通過深度學習,使用機器人幫助我們自主解決問題技術

他認爲,今天看到大部分人工智能技術其實是在擴展人類的感知,比如虛擬的場景,屬於擴展人類的感知。但在整個智能系統上,除了感知、認知,還有決策

怎麼樣讓機器人自主的解決問題,一個很關鍵的技術就是強化學習。俞揚表示,它不需要收集數據,也不需要做任何標記,而是把稱之爲智能體的Agent放在一個環境裡,自己學會如何完成一個任務,解決一個問題。目前,在遊戲環境裡要做很多事情時,已經開始用強化學習。

既然它已經能夠自主在遊戲環境下幫我們解決問題,有沒有可能在遊戲外面也能夠自主解決問題呢?

俞揚表示,在遊戲上學習可以上億次試錯,但真實世界裡要做上億次試錯是不可能的,哪怕今天最先進的學習方法都是上萬次的試錯。

在展示了各種嘗試過的方案之後,他提出一種解決方案,從數據自動還原虛擬環境,並且可以在虛擬環境裡面自動做決策。

他說,這個過程和之前的方案最大的不同,就是人可以不在環境裡面,技術路線全部走通以後就可以實現機器自主決策,也期待未來能走到真正的通用人工智能道路上。

以下爲俞揚演講的部分內容:

大家好,非常感謝本站的邀請。

我們這裡要講的是未來,未來是什麼樣子的呢,這是《I Robot》電影裡描述的未來場景,實際上描述的是2035年,到現在也就是15年之後,相信這樣的場景會出現,到那個時候有很多機器人在幫助我們解決一些任務。

當我們看到這樣的場景時,機器人要幫我們解決任務,和我們今天看到大部分人工技術其實是在擴展人類的感知,比如虛擬的場景,屬於擴展人類的感知。但在整個智能系統上,除了感知、認知,還有決策。如果我們需要用機器人來幫助我們解決問題的話,一定需要這個機器人能夠自主的解決問題。怎麼樣讓機器人自主的解決問題,這裡一個很關鍵的技術就是強化學習。強化學習和其他的人工智能技術有一個很大的差異,那就是它的學習範式和其它技術不太一樣。

它不需要我們去收集數據,也不需要我們去做任何標記,而是我們把稱之爲智能體,Agent,放在一個環境裡,就像動物或者我們自己生存的一個環境裡,它會和環境自己打交道,自己學會在環境裡如何完成一個任務,解決一個問題。我們之前已經能看到的東西,包括在圍棋、遊戲上面,遊戲裡解決如何戰勝人類,其中一半技術是靠強化學習,自己在環境裡學會如何處理這樣的問題。如果我們今天在遊戲環境上要做很多事情時,已經開始用強化學習來解決問題,比如做一些陪玩的角色,或者直接來設計這個場景,都可以用到強化學習。

但我們可能更關注的是,既然它已經能夠自主在遊戲環境下幫我們解決問題,有沒有可能在遊戲外面也能夠自主的解決問題呢。這時候我們就發現在遊戲裡,我們用強化學習解決問題是一個很容易的事情,這個很容易不是說我們打敗人類的AlphaGo技術多麼簡單。而是說我們在遊戲場景下可以做大量的試錯,在遊戲場景下做錯了沒有任何關係,重來就可以了,不會有太大的代價。但是在真實的場景下,比如如果這個時候要做一個醫療的診斷,如果診斷錯了就會帶來很大的成本,一個代價。如果我們要做一個投資,投資錯了也會帶來巨大的損失,所以我們在真實的環境下要用強化學習的方式,讓他自己學會怎麼做到最優的決策,需要大量的進行試錯。

如果我們需要在遊戲上學習有上億次試錯,我們在真實世界裡要做上億次試錯是不可能的,哪怕今天最先進的學習方法都是上萬次的試錯。我們希望一次試錯都不要做,才能在真實環境裡把這樣的技術用起來。

我們認爲這樣的技術如果只能在遊戲上發揮作用的話,那麼它可能就是一個好看,但是不好用的技術。更進一步,像DeepMind,創造AlphaGo的這家公司,它的願景是要做通用智能。但如果只在遊戲上,只能叫做在遊戲上的通用智能,而不是真正的通用智能。我們今天也在考慮怎麼能把這樣的技術,今天就把它用起來,所以如果我們今天從算法層面來說,這些算法一定要做大量的試錯,那我們下面要面臨的問題可能就是能不能有這麼一個環境,這個環境和遊戲一樣是一個虛擬的環境,所以我們可以在裡面做大量的試錯。同時,它和遊戲不一樣,它能和我們的真實場景打通,它能夠和我們在現實環境下做出來的決策效果一樣。這樣的話,我們就能夠把這樣的技術用起來。

有沒有可能做到這樣的事情呢,這是有可能的。第一種最簡單的方式,就是我們靠專家、靠人來把虛擬的場景搭出來,這也是我們今天見到最多的情況。實際說在很多工業場景下已經有大量的這種應用是靠人把模擬器,或者叫仿真環境搭出來之後,做一些工業上的應用。但更多的場景如果需要人來搭的話,我們搭出來的虛擬場景和真實的場景之間多少都會有出入,有的時候可能會有嚴重的出入。所以上面的問題就是我們能不能在有嚴重出入的虛擬場景下,幫助我們得到能用的智能體。一種方法,我們在很多情況下知道哪些維度模擬的不準,不準的時候可以把智能體變成能識別環境的智能體。原來只是看到下棋時棋盤上有什麼,我們就決定這時候要走哪一步。而現在要看一下,我們到底在下圍棋還是下象棋,還是規則不太清楚的棋。不僅能看到目前的輸入是什麼,而且能看到我們的環境是什麼,那麼它就能做到這件事情。我們有了模擬器之後可以做的一件事情,創造大量不同的模擬器出來,然後在新的環境裡識別這個環境是什麼,再根據這個環境來進行適應。

這裡舉一個例子,我們可以看到左邊和右邊是兩個長度不一樣的手臂,但它並不知道有多長。它怎麼適應這個環境呢,可以先試一下,有點像如果我們學駕駛,駕校裡學駕駛用的車是非常破的車,但我們回家之後拿到一輛新車,並不需要從頭來學,只需要簡單摸一下這個車哪個地方對應上的,就可以去開一輛新的車。

剛纔它做的幾個動作,我重複一遍。剛纔它做的幾個動作就是做了5個動作,適應一下自己是什麼樣子的,然後就可以完成任務了。它實際上並不需要做大量的試錯,只需要做5個動作。如果我們真的是從頭用強化學習來學的話,這個環境看上去很簡單,實際上它需要有300萬次試錯。右邊展示的是100萬次試錯的結果,所以大家可以看到這個結果並不好,左邊我們只對環境進行了5次試錯就能得到這個結果。所以即使是在虛擬的環境不是很準確的情況下,我們也能夠利用這樣的環境。但更希望做到的事情,把專家從這中間移除出去,實現完全自主的過程。把專家移除出去以後我們有什麼呢,實際上能有的就是在場景下可能有一些歷史的數據。歷史的數據,我們能不能通過智能體自己去還原它現在是處於什麼樣的虛擬環境裡,這個我們是希望能做到這樣一個事情。

我們的數據是什麼樣子的呢,我們的數據就是去和環境打交道的過程,看到環境是什麼,我們這裡做了什麼事情,環境發生的變化。就像遊戲一樣,我看到當前的遊戲場景是什麼樣子的,往前走了一步之後場景發生了什麼變化。這個變化的過程就是我們想要模擬的虛擬環境,所以我們就想知道看到了當前的狀態,做了一個動作之後,做這個動作和做另外的動作,它未來有什麼不一樣。如果能把這樣的事情從數據上還原出來,我們就能夠去自動實現虛擬的環境。

這個事情能不能做呢,這個事情看起來就跟我們今天做人臉識別預測技術差不多,因爲輸入輸出數據上全有,歷史數據上全有。這樣的事情如果是放在機器人身上的話,這裡有一個很成功的案例,就是ETH做的ANYmal的機器人,傳統做機器人的控制就是靠方程的方式,靠人的方式把機器人描述出來,看怎麼控制。但這個工作裡很有意思的,它的機器人腿的長度是多少不太清楚,關節怎麼動也不太清楚,所以在實驗室環境下收集了大量的機器人怎麼動的數據,然後從這個數據上用深度學習的預測方法做了虛擬的環境,這就是機器人的模擬器。做了虛擬的環境之後,我們就在虛擬的環境裡來訓練怎麼去控制機器人,所以它表現出來的會和人設計的運動,看起來更加自然,更加像動物運動方式。

這種場景可以簡單來使用深度學習,能夠完成虛擬環境的構造。在更多的場景下面是不是也能夠用這樣的技術呢,我們發現會有很大的困難。這個困難在什麼地方呢,這個困難就在於我們在實驗室環境下去收集機器人運動時,收集到的是覆蓋非常全面的數據。用這個數據,用簡單的監督學習,大家通常理解的深度學習就可以完成虛擬環境的構造。哪怕是更復雜的環境,我們也可以用更復雜的模型來完成虛擬環境的構造。但真實的環境下,很多業務場景下,我們面臨的是數據覆蓋不足的情況。數據覆蓋不足的情況對應的是很多地方輸入面臨的響應是什麼,完全不知道,這件事情能不能用今天的深度學習方式直接來解決呢,是做不到的。因爲不管多麼複雜、多麼漂亮的技術,它都有一個背後的理論假定,就是你沒有見過的數據表現的不好,這個在統計上叫做“獨立同分布”的假定。

這種情況下有什麼辦法呢,我這裡會出現一個公式,這個公式不要緊,我們解釋一下它背後表示的含義。如果我們今天用深度學習技術來解決這個問題的話,它會產生一個很大的誤差。這個誤差看起來是什麼樣子呢,就是屏幕上顯示的這樣,哪怕有很小的誤差,在等式的右邊都會被平方級的放大,所以我們沒有辦法用今天的深度學習技術來構造一個模擬好的虛擬環境。

有沒有其他的辦法?其實是有的,我們把我們的目標換一下以後,能夠得到新的結果,這個結果是我們想去學習虛擬環境這件事情做了幾十年以後,今天唯一出現的新結果。所以這個結果告訴我們——和以往不同的是它能把平方級誤差變成線性的誤差,我們今天用這樣的技術解決問題,所以這是我們做的第一個能夠用通用框架,能從數據裡面還原虛擬的場景。

這樣的東西可以在什麼地方有用?第一個場景,我們把它用在推薦上。這是和淘寶合作的項目,我們將這樣的技術用於做推薦。我們做的決策,就是把商品怎麼陳列出來,面臨的環境是很多用戶在買東西。所以要構建一個虛擬環境,就是很多虛擬用戶買東西。我們對着虛擬用戶,可以不計成本來做推薦,看什麼樣的推薦工作更好。這樣的工作做完了以後,在虛擬環境下,對着虛擬用戶,我們提高了4%的銷量。但是對着真實用戶呢?我們做了線上實驗,可以提高2%的銷量。

第二個場景,和滴滴出行合作,對司機要做程序定製。我們的環境就是有司機,所以我們怎麼把司機虛擬出來?我們用數據方法虛擬出來,定製了很多不同程序給它,看什麼樣的規劃對司機來說是最好的。我們在數據下的驗證,我們在虛擬司機上可以提升13%的完單量,在實際城市驗證上提升11%點多的完單量以及8%以上的司機收入。

第三個場景,物流場景。物流場景下,我們通常人工設計物流場景怎麼運轉,但由於這裡面需要有工人撿獲,所以工人行爲很難被專家規則描述得很清楚。所以我們通過數據,來把工人虛擬出來了。同樣的技術,我們用在天貓超市場景下,原有系統發一個訂單、我們的系統發了一個訂單,我們比了6天,能提升10%以上的效率,也就是說節省了10%以上的時間。

這是閒魚平臺做的demo,閒魚就是賣二手。如果我們賣二手沒有時間砍價,就可以把底價託給機器,這個機器人要做的事情就是有買家來了以後和買家砍價,這裡麪包括自然語言的處理,當然這不是我們做的,我們只是做砍價決策。砍價決策,要麼我不賣,要麼就是你降得太低。或者我覺得可以,也可以還一點價,看什麼樣的成交最好。所以我們在數據驗證,能夠比人的成交率提升1倍以上。這幾個案例,就是我們在真實業務場景下,能夠用強化學習顯示出來自主做決策的能力。

還有其他的狀況,其實我們覺得很大程度上,比如說自動駕駛,我們覺得自動駕駛在今天還是比較困難,困難在哪裡?不是因爲車難開,而是因爲它面臨動態不確定的環境。比如這是我們拍攝的人怎麼過馬路,就是街上的動態參與者的環境,所以動態參與者纔是自動駕駛最大的麻煩。有了這些數據以後,我們可以還原出虛擬的人在馬路上怎麼走。有了這樣的場景,我們可以訓練一下,這裡面每個能看到周圍,而且根據周圍情況進行反應。這種情況下,我們可以訓練車怎麼能夠成功通過一個人羣,特別是我們有很多這樣的場景以後,很多很難在真實情況下被發現的corner case,在這種情況下就能被發現出來。比如這是在做加塞,在今天的道路上如果不能加塞,如果我們要通過擁擠的交通,就沒有辦法真正上路。

我做一個總結。我們來看決策這件事情,以往最開始的決策是人想好怎麼做,然後告訴機器該怎麼做,機器只是複製了我們的想法。更高級一點的程度,那就是我們做一個虛擬的環境,我們把問題抽象出來,然後要機器解決問題。但是這裡面需要有人來做真實問題的抽象。另外一邊是做推薦,以往可能是通過預測的方法,比如我們看什麼樣的東西好賣,就把它放在前面。但是不是好賣的東西放在前面就好賣?不一定,所以預測和決策之間脫節,這個脫節需要有專家把它連上。直到最後一種方案,我們可以從數據自動還原虛擬環境,並且可以在虛擬環境裡面自動做決策。

這個過程和前面幾個過程相比最大的不同,就是人可以不在環境裡面,技術路線全部走通以後就可以實現機器自主決策。我們也期待未來能走到真正的通用的人工智能道路上,謝謝大家!

2020本站未來大會由杭州市人民政府和本站公司聯合主辦,杭州市商務局、杭州市經濟和信息化局、杭州市濱江區人民政府、北京本站傳媒有限公司以及本站(杭州)網絡有限公司承辦,中國移動總冠名。大會將進行三天的頭腦風暴、涵蓋了預見未來、新基建、人工智能、區塊鏈、潮商業、UP生活以及和文化等論壇。