方栗子 發自 凹非寺
先提一個可能直擊靈魂的問題:
你家水池裡的碗,放了幾天了?
顯然,你和TA都不想先去洗,那樣就是低了頭。
讓服務機器人出面化解這場僵持,可能還只是想想而已。
不過,訓練AI在虛擬世界裡做家務,已經有人在做了。
他們還說,教AI做虛擬家務,是為了今後能讓機器人全權代理人類的家務工作。
以麻省理工 (MIT) 和多倫多大學的研究人員為主的一支AI團隊,建立起了名為VirturalHome的家庭環境模擬器,化為人形的智能體可以在裡面學習大量的生活技能。
事無鉅細模擬器
VirtualHome由三個部分組成。
一是家務知識庫,裡面包含了人類在家庭生活裡會經歷的各種活動。
教AI做事情不容易,比如讓它看電視,如果不告訴它坐到沙發上、拿起遙控器,它自己並不會去做這些準備動作。
所以,不論一項技能多麼日常,都需要把它儘可能拆解成細小的步驟,比如走進廚房,拿起杯子之類。
於是,知識庫裡的每一個任務,都要包含分解動作的文字描述,以及用來執行的腳本。
二是3D模擬器,裡面有6個公寓,以及4個人物可以選擇。虛擬環境中,示例、語義標籤註解、深度、姿勢以及光流,應有盡有。
在這裡面,角色可以執行程序給定的任務,可以生成各種家務活動的視頻。
三是腳本生成模型,根據自然語言描述或者視頻內容,生成相應任務的執行程序。
在模擬器並不十分廣闊的天地裡,研究人員要訓練神經網絡的各項家務技能。
論文裡說,這項研究的目標,就是讓AI在自然語言和視頻的指引之下,自己寫出程序來做好家務。
一步很難登天,那麼,三步怎麼樣?
1 數據怎麼搞
要訓練出一隻可靠的家務AI,首先就是蒐集各種家務活動的數據,這要分為兩個部分——
第一部分,讓一群臨時工 (AMT worker) 來提供任務的口頭描述。每個人要想出一項日常家庭活動,給出高級名稱,比如“做咖啡”,然後描述它的分解步驟。
活動按起始場景分類,於是就有8種,客廳、廚房、餐廳、臥室、兒童房、浴室、玄關、書房。每個場景都包含了350個物體。
第二部分,臨時工們會用圖形編程語言,把這些描述翻譯成程序,當然也需要詳細的步驟 (每一步都是一個block) ,而且要比描述的還要全面——要讓 (目前還不存在的) 機器人能夠貫徹落實。
數據集就這樣建好了,裡面充滿了大大小小的任務所對應的程序。
2 動畫化
把數據集裡的程序變成動畫,首先要看房間裡的哪個物體才是要操作的對象,同時生成合理的動作。這裡,系統需要把一個任務的所有步驟都看過一遍,然後規劃一條合理的路徑。
比如,執行一項“打開電腦然後敲鍵盤”的任務,比較理想的流程是,開機之後就在離目標電腦最近的鍵盤上操作就可以了,不用再確定哪一個才是目標鍵盤。
原子動作動畫化
每個任務都是由大量原子動作 (Atomic Actions) 組成的,把它們全部動畫化是個不小的工程。
這裡用到了12種最常見的動作:走/跑、抓取、按鍵開/關、(物理) 打開/關閉、放置、望向、坐下/站起,以及觸摸。每種動作的執行方式不唯一,比如開冰箱和開抽屜,姿勢就不一樣了。
團隊用Unity引擎裡的NavMesh來導航;用RootMotion FinalIK反向動力學包,把每個動作動畫化。
另外,跟人物發生交互的物體,也要發生相應的動作。
程序動畫化
要讓程序裡的任務顯現成動畫,就要先在程序中的物體、和模擬器場景中的物體之間建立映射。
然後,是為程序裡的每一步,計算人物和目標物體的相對位置,以及計算其他與動畫化相關的數字。
記錄動畫
模擬器的每個房間裡,有6-9枚攝像頭,每個公寓平均下來26枚。
並非每時每刻,都需要所有攝像頭,系統根據人物所在的位置來決定啟用哪些攝像頭。
記錄下來的視頻,下一步可以餵給神經網絡,訓練它生成自己的程序。
3 用視頻和自然語言生成程序
給AI一段視頻,或者一段自然語言,讓它自動生成相應的家務執行程序,做一隻有覺悟的AI。
團隊調整了seq2seq模型,來適應這個任務,然後用強化學習來訓練它。
這裡的模型,是由兩隻RNN組成的,一隻給輸入序列編碼,另一隻負責解碼。神經網絡每次可以生成一項家務中的一個步驟。
給文本編碼,用的是word2vec。
處理視頻的話,就把每條視頻拆成許多個2秒長的片段,然後用模型來預測中間幀的樣子。這裡用到了DilatedNet,還用到了Temporal Relation Netork。
學習和推斷
這個過程分為兩步。
第一步,用交叉熵損失 (Cross Entropy Loss) 對解碼器做預訓練。
第二步,強化學習 登場,智能體要學習一下策略 (Policy) ,用來生成程序裡面的步驟。
模擬器裡很幸福
數據集的質量如何?動畫化的效果怎樣?系統生成的程序又能不能指向希望的任務呢?
測試過程請見論文。不過在那之前,先看看這個人。
看電視的任務做得很流暢,他還會找個舒服的姿勢坐下來,很悠然。
團隊也覺得,從生成的視頻來看,各種任務的完成度還是不錯的。
下一步,就要給AI喂真實拍攝的視頻了,畢竟模擬器裡發生的一切,和物理世界還是不一樣的。
是太幸福了吧?
畢竟,模擬器裡的家庭環境一成不變,東西都擺在它該在的地方,也沒有小朋友跑來跑去。
在機器人接手任務之前,AI可能還需要在更加難以預測的模擬環境裡,訓練很長時間。
另外,就算環境變化不是問題,真實的家務操作也並不像撿個裝備那麼簡單,且容錯率非常低。
比如,端一杯咖啡不可以只有90%的準確度,95%也不太行。因為,百分之一的差錯,會造成百分之百的災難。
不過,作為一個日常手抖的操作渣,我端咖啡也沒那麼安全,從某種程度上說,還是很有潛力成為機器人女僕的重度用戶。
CVPR歡迎您
不久以後,研究團隊就要懷著激動的心情,登陸CVPR,在世人面前宣告,他們為了這個宏遠的理想,踏出了多麼堅實的一小步。
代碼還沒放出來,不過可以先看看論文啊。
傳送門:
VirtualHome: Simulating Household Activities via Programs
http://virtual-home.org/paper/virtualhome.pdf
— 完 —
誠摯招聘
վ'ᴗ' ի 追蹤AI技術和產品新動態
閱讀更多 量子位 的文章