近年來AI是最令人印象深刻的發展,阿姆斯特丹的一組研究人員試圖采用一個非常簡單的移動機器人,并創建一個可以通過邊做邊學的過程來學習如何優化其運動的系統。研究人員開發的系統雖然靈活且有效,但由于現實世界中的一些基本特征(例如摩擦)而遇到了麻煩。
這項研究中的機器人非常簡單,由不同數量的相同單元組成。每個都有一個內置的控制器、電池和運動傳感器。泵控制一塊充氣管,該充氣管將一個單元連接到一個相鄰的單元。充氣時,管道會產生將兩個單元分開的力。放氣后,管道會將單元拉回原處。
將這些單元鏈接在一起便創建了一部自行式火車。給定一系列適當的充氣和放氣,各個單元可以以協調的方式相互拖動和推動,從而提供一種定向運動,使該系統像蠕蟲一樣被推動。找出發送給控制充氣的泵的最佳命令系列相對簡單,但很有趣。因此,這項新工作背后的研究人員決定查看該系統是否可以優化其自身的運動。
每個部門都可以獨立行動,并獲得一套簡單的規則。充放氣設置為每兩秒鐘循環一次,唯一可調整的參數是在該2秒窗口內泵將打開(其開啟時間少于一秒鐘)的時間。鏈中的每個單元都會隨機選擇一個開始時間,使用幾個周期,然后使用系統的板載傳感器確定機器人移動了多遠。在學習期間隨機選擇開始時間,然后在優化期間進行采樣,在此期間對最佳執行時間周圍的區域進行采樣。
至關重要的是,鏈條中的每個單元都完全獨立運行,而不知道其他單元在做什么。向前運動所需的協調性是自發出現的。
研究人員首先將兩個機器人和一個惰性塊連接到火車上,然后將系統放置在圓形軌道上。一些火車只用了大約80秒就達到了可能的最大速度,這是每秒僅超過2毫米的莊嚴步伐。正如模型系統中的仿真所證實的那樣,該硬件無法更快地運行。
但是問題立即顯現出來。一些系統陷入了局部最小值,其優化速度僅為最大值的四分之一。當團隊向火車添加第三個機器人時,事情以不同的方式進行得很差。
同樣,系統僅用了幾分鐘就達到了仿真中看到的最大速度。但是,一旦達到這種速度,大多數系統似乎就會開始變慢。那應該是不可能的,因為這些裝置始終會節省與其達到的最大速度相關的循環開始時間。因為他們永遠不要故意選擇較低的速度,所以沒有理由他們應該放慢速度。
幸運的是,團隊中的某人注意到系統沒有出現統一的速度下降。相反,他們在賽道上的特定位置幾乎停下來,這表明他們在這些位置遇到摩擦問題。即使機器人繼續在軌道上的其他位置執行與最大速度相關的動作,但它們仍在這樣的位置進行操作,在該位置上,一系列不同的動作可能會更有效地通過摩擦產生動力。
為了解決此問題,研究人員進行了一些重新編程。最初,系統只是尋找最大速度并存儲該速度和與此相關的充氣周期開始時間。切換后,系統始終保存最新的速度,但僅在存儲的速度慢于最近的速度時才更新開始時間。如果系統遇到問題并顯著降低速度,則可以找到一種最佳的供電方式,然后針對其最佳速度進行重新優化。
期望與現實之間的錯誤冒險并沒有就此結束。為了測試系統是否可以學習從故障中恢復,研究人員將釋放閥鎖定在其中一個單元中,迫使其始終處于充氣狀態。該算法進行了重新優化,但研究人員發現,即使泵沒有推動任何空氣,當泵仍然打開和關閉時,它的效果甚至更好。顯然,振動有助于限制摩擦,否則摩擦可能會使整個系統癱瘓。
嘗試將啟動時間逼近最大的精煉系統,一旦火車長到足夠長的時間,也發現它是有問題的。以一個有七個車廂的例子為例,該系統通常會達到最大速度,但很快就會減速下來。顯然,當火車很小時,可以接受在精煉期間測試的微小變化,但是一旦火車足夠長,它們就會使太多的汽車不同步。
即使在簡單的系統上使用,整個系統仍然非常有效。它采用了兩個簡單的屬性,并將它們轉變為可以對環境變化(例如摩擦)做出響應的自學習系統。該系統具有可擴展性,因為它可以很好地適應各種列車長度的系統。而且它對損壞的抵抗力很強,例如當研究人員堵住閥門時。在另一個實驗中,研究人員將火車切成兩半,兩個半部分重新優化了速度。