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