ML-Agents:
https://plastichub.unity.cn/unity-tech-cn/ml-agents
本文介紹的項(xiàng)目由日本公司 Ghelia Inc. 創(chuàng)立,他們使用了 ML-Agents 的 soccer 訓(xùn)練環(huán)境來(lái)訓(xùn)練智能代理踢足球。訓(xùn)練出的 RL 模型隨后被部署到了索尼的 toio 機(jī)器人上,在真實(shí)世界中踢起了足球。這是一個(gè)用 ML-Agent 訓(xùn)練機(jī)器人、從“虛擬到現(xiàn)實(shí)”的絕佳實(shí)例。
我們采訪(fǎng)了 Ghelia 的 CEO 兼總裁清水亮,創(chuàng)新和品牌戰(zhàn)略辦公室的首席程序員布留川英一及創(chuàng)新部經(jīng)理 Masatoshi Uchida,來(lái)了解該項(xiàng)目的靈感。請(qǐng)?jiān)谙挛闹辛私夤驹鯓邮褂?ML-Agents Toolkit 來(lái)訓(xùn)練一個(gè)真實(shí)機(jī)器人踢足球,及高爾夫球在場(chǎng)景中的作用。
請(qǐng)問(wèn)是什么啟發(fā)了你們呢?
Ghelia 是一家專(zhuān)注于強(qiáng)化學(xué)習(xí)應(yīng)用的公司。Ghelia 的創(chuàng)始人北野弘明在索尼任職期間創(chuàng)辦了 Robocup Soccer 足球賽,并開(kāi)發(fā)出了 AIBO 機(jī)器人。我們的團(tuán)隊(duì)曾制作過(guò)一個(gè)空氣曲棍球演示,但過(guò)于繁雜的部件使其變得不夠輕便。接著為了向客戶(hù)們解釋強(qiáng)化學(xué)習(xí)的概念,我們開(kāi)始討論制作另一個(gè)便于展示的演示場(chǎng)景。鑒于 ML-Agents 已經(jīng)有了一個(gè)足球訓(xùn)練環(huán)境,我們完全可以用輕便小巧的索尼 toio 機(jī)器人來(lái)開(kāi)發(fā)一個(gè)足球游戲,游戲甚至有可能被病毒式傳播。
你們是怎樣將 ML-Agent 模型移植到真正的機(jī)器人上的?
為了將強(qiáng)化學(xué)習(xí)應(yīng)用到真正的機(jī)器人上,我們需要將機(jī)器人本身導(dǎo)入到模擬環(huán)境中。幸好,toio 已經(jīng)有一個(gè)稱(chēng)為 toio SDK for Unity 的模擬程序。我們能直接將程序與 ML-Agents 軟件包結(jié)合使用,即刻開(kāi)始培訓(xùn)。toio SDK 僅包含了機(jī)器人模型,而足球需要另外制作。
我們使用了 Unity 的物理引擎在 模擬程序中重現(xiàn)了逼真的足球,還在現(xiàn)實(shí)中搜尋能準(zhǔn)確還原模擬情景的小球。結(jié)果,高爾夫球的運(yùn)動(dòng)可準(zhǔn)確匹配訓(xùn)練的成果。球的位置在 Unity 中以 transform 值表示,在現(xiàn)實(shí)里則使用相機(jī)進(jìn)行拍攝、用 OpenCV 進(jìn)行識(shí)別。
實(shí)機(jī)運(yùn)行的硬件配置是?
我們使用一個(gè)高爾夫球來(lái)代表足球,并將其涂成紅色以提高辨識(shí)度。不可思議的是,我們僅用一部 iPhone 就能完成足球的探測(cè),控制所有八個(gè)機(jī)器人(這是一場(chǎng)四對(duì)四的足球比賽),再使用 ML-Agents 模型進(jìn)行推導(dǎo)。
你們是如何設(shè)置獎(jiǎng)勵(lì)的?
期限,代理們都各自為政,只顧自己進(jìn)球,于是我們?cè)囍o個(gè)人進(jìn)球設(shè)置了負(fù)面獎(jiǎng)勵(lì),但這又導(dǎo)致了守門(mén)員不會(huì)去主動(dòng)防守球門(mén)。而如果為運(yùn)球設(shè)置積極獎(jiǎng)勵(lì),兩隊(duì)又只會(huì)來(lái)回運(yùn)球,不會(huì)積極射門(mén),基本上就是在拖時(shí)間。最后,我們決定把獎(jiǎng)勵(lì)設(shè)置為進(jìn)球得一分,被進(jìn)球則扣一分。
項(xiàng)目中最具挑戰(zhàn)的地方在哪里?
有時(shí)實(shí)機(jī)機(jī)器人并不會(huì)像模擬的那樣行動(dòng),其背后原因有時(shí)讓人捉摸不透。比方說(shuō),如果機(jī)器人在一個(gè)稍微傾斜的地板上運(yùn)動(dòng)時(shí),有時(shí)會(huì)導(dǎo)致推導(dǎo)失??;另外,如果球的反彈與模擬不同,機(jī)器人也無(wú)法做出訓(xùn)練好的反應(yīng)。并且,機(jī)器人對(duì)攝像機(jī)位置的要求十分嚴(yán)苛,需要達(dá)到毫米級(jí)的精度,這使得每次線(xiàn)下活動(dòng)的鏡頭調(diào)整異常困難。在每一次大型修改后,模型還需要三天左右的訓(xùn)練時(shí)間來(lái)適應(yīng),我們總共進(jìn)行了約六次的訓(xùn)練環(huán)節(jié)來(lái)實(shí)現(xiàn)如今的成果。
虛擬機(jī)器人在相互碰撞時(shí)不會(huì)有太大的影響,但真正的機(jī)器人相撞可能會(huì)引發(fā)意外。你們是如何解決這個(gè)問(wèn)題的呢?
在 ML-Agents 的演示里,智能代理在進(jìn)球后會(huì)自行回到原位站好,但這一步對(duì)真正的機(jī)器人來(lái)說(shuō)沒(méi)這么簡(jiǎn)單。問(wèn)題在于,僅靠強(qiáng)化學(xué)習(xí)很難避免 toio 機(jī)器人相撞。最初我們?cè)噲D為避免相撞設(shè)立獎(jiǎng)勵(lì),但最終還是找到了一種機(jī)智的解決方法。
對(duì)于那些想在項(xiàng)目中用上機(jī)器學(xué)習(xí)的 Unity 創(chuàng)作者,你有什么建議?
AI,特別是深度學(xué)習(xí)是讓人癡迷,但人們尚未充分理解它。除非親手嘗試過(guò),否則你將無(wú)法欣賞技術(shù)的美和復(fù)雜度,當(dāng)個(gè)半桶水可不光彩,所以我們鼓勵(lì)全球 Unity 開(kāi)發(fā)者親自上手 AI 技術(shù)。我想特別指出機(jī)器學(xué)習(xí)非常有趣,而 Unity ML-Agents 工具能幫你輕松地上手或整合機(jī)器學(xué)習(xí)到項(xiàng)目中。