調參的過程比較麻煩。
據我瞭解在雙足機器人控制領域,如果用傳統控制演算法,一般在也是在模擬中驗證了演算法可行性,然後再放到機器人上跑,這一過程也會需要調參(例如pd引數什麼的)。這些引數能夠靠直覺或者工程師的經驗快速調好。
如果用深度學習在模擬學到了一個模型,放到機器人上跑失敗了,首先要找到失敗的原因,是我建模沒建好,比如某個零件的質量沒測好?是因為驅動器有延遲?透過調什麼引數能解決這個問題呢?現在流行的解決方案是dynamic randomization,既然建模無法完美,那我就在訓練的時候把模擬中質量,延時什麼的引數全都在一定範圍內隨機取值,這樣學到的模型能應付一定範圍內的誤差。個人不太喜歡這個方法,主要是現有論文中這個隨機取值的範圍太大了,比如Google的這篇在四足機器人上做sim to real的。
有些時候訓練出來的模型能在機器人上跑,但是會有些你不希望存在的現象比如機器人某個關節在抖,用傳統控制方法調下pd引數就好了,但用深度學習得出來的模型你可能就需要調節一下你的reward之類的東西然後重新訓練,而且訓練出來的還不一定會和原來有差別。
一般來說透過計算機模擬或者模擬學習到的人工網路控制器很難直接應用到實際機器人上. 因為存在reality gap,也就是機器人在理想模擬環境中和真實環境中面臨的條件不一樣,導致機器人的行為與預期有所不同,這種不同在大多數情況下難以忽視.
雖然有很多方法可以減少這種不同,比如給網路引數或者輸入輸出加噪聲等可以增加魯棒性,或者人為對神經網路輸出與實際動作空間之間的對映做點什麼等等,但還是缺少一種系統性的指導理論解決. 實際應用前需要大量大量的測試.
(以上只是我們在實驗室環境下遇到的問題……不清楚大公司們在實際專案中是怎麼做的,猜想還是透過大量測試慢慢調整吧)
另外如果你是指直接在實際機器人上訓練的話,通常來說最大的問題就是訓練時間過長,同時也有成本上的風險。
調參的過程比較麻煩。
據我瞭解在雙足機器人控制領域,如果用傳統控制演算法,一般在也是在模擬中驗證了演算法可行性,然後再放到機器人上跑,這一過程也會需要調參(例如pd引數什麼的)。這些引數能夠靠直覺或者工程師的經驗快速調好。
如果用深度學習在模擬學到了一個模型,放到機器人上跑失敗了,首先要找到失敗的原因,是我建模沒建好,比如某個零件的質量沒測好?是因為驅動器有延遲?透過調什麼引數能解決這個問題呢?現在流行的解決方案是dynamic randomization,既然建模無法完美,那我就在訓練的時候把模擬中質量,延時什麼的引數全都在一定範圍內隨機取值,這樣學到的模型能應付一定範圍內的誤差。個人不太喜歡這個方法,主要是現有論文中這個隨機取值的範圍太大了,比如Google的這篇在四足機器人上做sim to real的。
有些時候訓練出來的模型能在機器人上跑,但是會有些你不希望存在的現象比如機器人某個關節在抖,用傳統控制方法調下pd引數就好了,但用深度學習得出來的模型你可能就需要調節一下你的reward之類的東西然後重新訓練,而且訓練出來的還不一定會和原來有差別。
一般來說透過計算機模擬或者模擬學習到的人工網路控制器很難直接應用到實際機器人上. 因為存在reality gap,也就是機器人在理想模擬環境中和真實環境中面臨的條件不一樣,導致機器人的行為與預期有所不同,這種不同在大多數情況下難以忽視.
雖然有很多方法可以減少這種不同,比如給網路引數或者輸入輸出加噪聲等可以增加魯棒性,或者人為對神經網路輸出與實際動作空間之間的對映做點什麼等等,但還是缺少一種系統性的指導理論解決. 實際應用前需要大量大量的測試.
(以上只是我們在實驗室環境下遇到的問題……不清楚大公司們在實際專案中是怎麼做的,猜想還是透過大量測試慢慢調整吧)
另外如果你是指直接在實際機器人上訓練的話,通常來說最大的問題就是訓練時間過長,同時也有成本上的風險。