MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

方栗子 發自 凹非寺

先提一個可能直擊靈魂的問題:

你家水池裡的碗,放了幾天了?

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

顯然,你和TA都不想先去洗,那樣就是低了頭。

讓服務機器人出面化解這場僵持,可能還只是想想而已。

不過,訓練AI在虛擬世界裡做家務,已經有人在做了。

他們還說,教AI做虛擬家務,是為了今後能讓機器人全權代理人類的家務工作。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

△ 女僕機器人嘿嘿嘿

以麻省理工 (MIT) 和多倫多大學的研究人員為主的一支AI團隊,建立起了名為VirturalHome的家庭環境模擬器,化為人形的智能體可以在裡面學習大量的生活技能。

事無鉅細模擬器

VirtualHome由三個部分組成。

一是家務知識庫,裡面包含了人類在家庭生活裡會經歷的各種活動。

教AI做事情不容易,比如讓它看電視,如果不告訴它坐到沙發上、拿起遙控器,它自己並不會去做這些準備動作。

所以,不論一項技能多麼日常,都需要把它儘可能拆解成細小的步驟,比如走進廚房,拿起杯子之類。

於是,知識庫裡的每一個任務,都要包含分解動作的文字描述,以及用來執行的腳本。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

二是3D模擬器,裡面有6個公寓,以及4個人物可以選擇。虛擬環境中,示例、語義標籤註解、深度、姿勢以及光流,應有盡有。

在這裡面,角色可以執行程序給定的任務,可以生成各種家務活動的視頻。

三是腳本生成模型,根據自然語言描述或者視頻內容,生成相應任務的執行程序。

在模擬器並不十分廣闊的天地裡,研究人員要訓練神經網絡的各項家務技能。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

論文裡說,這項研究的目標,就是讓AI在自然語言和視頻的指引之下,自己寫出程序來做好家務。

一步很難登天,那麼,三步怎麼樣?

1 數據怎麼搞

要訓練出一隻可靠的家務AI,首先就是蒐集各種家務活動的數據,這要分為兩個部分——

第一部分,讓一群臨時工 (AMT worker) 來提供任務的口頭描述。每個人要想出一項日常家庭活動,給出高級名稱,比如“做咖啡”,然後描述它的分解步驟。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

活動按起始場景分類,於是就有8種,客廳、廚房、餐廳、臥室、兒童房、浴室、玄關、書房。每個場景都包含了350個物體。

第二部分,臨時工們會用圖形編程語言,把這些描述翻譯成程序,當然也需要詳細的步驟 (每一步都是一個block) ,而且要比描述的還要全面——要讓 (目前還不存在的) 機器人能夠貫徹落實。

數據集就這樣建好了,裡面充滿了大大小小的任務所對應的程序。

2 動畫化

把數據集裡的程序變成動畫,首先要看房間裡的哪個物體才是要操作的對象,同時生成合理的動作。這裡,系統需要把一個任務的所有步驟都看過一遍,然後規劃一條合理的路徑。

比如,執行一項“打開電腦然後敲鍵盤”的任務,比較理想的流程是,開機之後就在離目標電腦最近的鍵盤上操作就可以了,不用再確定哪一個才是目標鍵盤。

原子動作動畫化

每個任務都是由大量原子動作 (Atomic Actions) 組成的,把它們全部動畫化是個不小的工程。

這裡用到了12種最常見的動作:走/跑、抓取、按鍵開/關、(物理) 打開/關閉、放置、望向、坐下/站起,以及觸摸。每種動作的執行方式不唯一,比如開冰箱開抽屜,姿勢就不一樣了。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

團隊用Unity引擎裡的NavMesh來導航;用RootMotion FinalIK反向動力學包,把每個動作動畫化。

另外,跟人物發生交互的物體,也要發生相應的動作。

程序動畫化

要讓程序裡的任務顯現成動畫,就要先在程序中的物體、和模擬器場景中的物體之間建立映射

然後,是為程序裡的每一步,計算人物和目標物體的相對位置,以及計算其他與動畫化相關的數字。

記錄動畫

模擬器的每個房間裡,有6-9枚攝像頭,每個公寓平均下來26枚。

並非每時每刻,都需要所有攝像頭,系統根據人物所在的位置來決定啟用哪些攝像頭。

記錄下來的視頻,下一步可以餵給神經網絡,訓練它生成自己的程序

3 用視頻和自然語言生成程序

給AI一段視頻,或者一段自然語言,讓它自動生成相應的家務執行程序,做一隻有覺悟的AI。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

△ LSTM

團隊調整了seq2seq模型,來適應這個任務,然後用強化學習來訓練它。

這裡的模型,是由兩隻RNN組成的,一隻給輸入序列編碼,另一隻負責解碼。神經網絡每次可以生成一項家務中的一個步驟。

給文本編碼,用的是word2vec

處理視頻的話,就把每條視頻拆成許多個2秒長的片段,然後用模型來預測中間幀的樣子。這裡用到了DilatedNet,還用到了Temporal Relation Netork

學習和推斷

這個過程分為兩步。

第一步,用交叉熵損失 (Cross Entropy Loss) 對解碼器做預訓練。

第二步,強化學習

登場,智能體要學習一下策略 (Policy) ,用來生成程序裡面的步驟。

模擬器裡很幸福

數據集的質量如何?動畫化的效果怎樣?系統生成的程序又能不能指向希望的任務呢?

測試過程請見論文。不過在那之前,先看看這個人。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

看電視的任務做得很流暢,他還會找個舒服的姿勢坐下來,很悠然。

團隊也覺得,從生成的視頻來看,各種任務的完成度還是不錯的。

下一步,就要給AI喂真實拍攝的視頻了,畢竟模擬器裡發生的一切,和物理世界還是不一樣的。

是太幸福了吧?

畢竟,模擬器裡的家庭環境一成不變,東西都擺在它該在的地方,也沒有小朋友跑來跑去。

在機器人接手任務之前,AI可能還需要在更加難以預測的模擬環境裡,訓練很長時間。

另外,就算環境變化不是問題,真實的家務操作也並不像撿個裝備那麼簡單,且容錯率非常低。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

比如,端一杯咖啡不可以只有90%的準確度,95%也不太行。因為,百分之一的差錯,會造成百分之百的災難。

不過,作為一個日常手抖的操作渣,我端咖啡也沒那麼安全,從某種程度上說,還是很有潛力成為機器人女僕的重度用戶。

CVPR歡迎您

不久以後,研究團隊就要懷著激動的心情,登陸CVPR,在世人面前宣告,他們為了這個宏遠的理想,踏出了多麼堅實的一小步。

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

代碼還沒放出來,不過可以先看看論文啊。

傳送門:

VirtualHome: Simulating Household Activities via Programs

http://virtual-home.org/paper/virtualhome.pdf

MIT怎樣教AI做虛擬家務?讓它寫個程序指揮自己啊|CVPR 2018

誠摯招聘

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: