日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

通過(guò)進(jìn)化算法教生物力學(xué)模型學(xué)會(huì)走路


通過(guò)進(jìn)化算法教生物力學(xué)模型學(xué)會(huì)走路



讓人形模型采用真實(shí)肌肉方式行走
【通過(guò)進(jìn)化算法教生物力學(xué)模型學(xué)會(huì)走路】本文中的源代碼可在 這個(gè)GitHub 庫(kù) 中找到
(https://github.com/normandipalo/learn-to-walk-with-genetic-algs)
2017 NIPS 中有一項(xiàng)挑戰(zhàn)是 《學(xué)習(xí)跑步》:如題所示, 該任務(wù)需設(shè)計(jì)并開發(fā)一個(gè)可以控制人體生物力學(xué)模型行走的學(xué)習(xí)算法 。 算法中的執(zhí)行器(與大多數(shù)機(jī)器人問題不同)是一組腿部肌肉 , 每條腿由9塊肌肉組成 。 發(fā)布挑戰(zhàn)的作者修改了OpenSIM環(huán)境 , 使其適應(yīng)增強(qiáng)學(xué)習(xí)的設(shè)定 , 從而增加一個(gè)獎(jiǎng)勵(lì)信號(hào) 。
有些事情變得非常糟糕(或非常正確).
許多參賽者設(shè)計(jì)了端到端的深度強(qiáng)化學(xué)習(xí)算法 , 這些算法在近年來(lái)在連續(xù)控制任務(wù)中表現(xiàn)相當(dāng)優(yōu)異 。 但這些模型也通常需要大量算力和計(jì)算時(shí)間以學(xué)習(xí)成功的策略 , 一般在多臺(tái)機(jī)器上并行效果更好 。
我決定用我的方法嘗試一下這個(gè)挑戰(zhàn) 。 我實(shí)現(xiàn)并擴(kuò)展一個(gè)相當(dāng)輕量級(jí)的方法 , 該方法是我最近為機(jī)器人操控開發(fā)的 , 具體來(lái)說(shuō)是進(jìn)化算法結(jié)合神經(jīng)網(wǎng)絡(luò)控制器 。 采用這些算法的好處是不需要求導(dǎo)、可高度并行同時(shí)可獲得與深度RL算法相似的結(jié)果 , 參見OpenAI上相關(guān)的文章 。 問題在于 , 運(yùn)動(dòng)是完全隨機(jī) , 因而較難估計(jì)學(xué)習(xí)的內(nèi)容及方式 , 但我仍希望嘗試一下這種方法 。
開始幾步 , 像嬰兒學(xué)步 。
…重要的是不要僅保留表現(xiàn)最佳的模型 , 因?yàn)槟P蜁?huì)卡在一些局部最小的地方(很難離開這些點(diǎn)) 。
進(jìn)化算法被用于數(shù)值優(yōu)化問題 , 算法通過(guò)相關(guān)的目標(biāo)函數(shù)優(yōu)化其參數(shù) 。 那在本題中 , 這些參數(shù)和目標(biāo)函數(shù)又應(yīng)該是什么?從經(jīng)驗(yàn)出發(fā):腿部以周期方式運(yùn)動(dòng) 。 肌肉運(yùn)動(dòng)服從周期性、正弦時(shí)間規(guī)律 , 但很難手工實(shí)現(xiàn)這個(gè)規(guī)律 。 如何構(gòu)造一個(gè)周期性函數(shù)?這里引入傅里葉級(jí)數(shù) 。 我們知道傅里葉級(jí)數(shù)(采用正弦余弦的累加)可估算出任意周期函數(shù) 。 不過(guò)理論上 , 他們可以有無(wú)限項(xiàng) 。 我設(shè)計(jì)了一個(gè)(截取)部分項(xiàng)的傅里葉級(jí)數(shù) , 用以構(gòu)造肌肉運(yùn)動(dòng) 。 這里只用了前4項(xiàng)余弦序列 , 于是就產(chǎn)生了8個(gè)參數(shù):4個(gè)權(quán)重值乘以4個(gè)不同頻率相位的余弦值 。 這樣就位每塊肌肉構(gòu)造了周期性函數(shù) 。 每條腿有9塊肌肉 , 我采用了9組周期性函數(shù) , 這里假定另一條腿也采用同樣的運(yùn)動(dòng)方式 , 可用同樣的函數(shù)構(gòu)造 , 不過(guò)相位差了180o 。 遺傳算法 , 通過(guò)修改調(diào)整這些參數(shù)(相較神經(jīng)網(wǎng)絡(luò)參數(shù) , 數(shù)量已經(jīng)非常少了) , 從而優(yōu)化目標(biāo)函數(shù)的結(jié)果 , 顯而易見這就是最終激烈函數(shù) , 比如機(jī)器人行走多少距離后摔倒 。
經(jīng)過(guò)一天訓(xùn)練后的行走模式
參數(shù)從白噪音中采樣得到 , 進(jìn)行隨機(jī)修改 。 但如果某個(gè)采樣方向手有了性能提升 , 參數(shù)會(huì)沿這個(gè)方向進(jìn)一步移動(dòng) , 知道不再有性能上的提升 。 我并行跑了3個(gè)模型 , 因?yàn)閷?duì)于一臺(tái)筆記本來(lái)說(shuō)計(jì)算量已經(jīng)很大了 。 性能最好的權(quán)重被保存到一個(gè)參數(shù)文件中 。 當(dāng)執(zhí)行了幾個(gè)批次后 , 訓(xùn)練又從性能最好的前3個(gè)參數(shù)組重新開始演算 。 這樣就允許算法去更好的探索不同的行為:重要的是不要僅探索當(dāng)前最優(yōu)的模型 , 因?yàn)檫@個(gè)模型可能被卡在一個(gè)局部最優(yōu)很難逃離 , 而性能較差的模型經(jīng)過(guò)一段時(shí)間的訓(xùn)練卻可以通過(guò)微調(diào)其他行為超過(guò)當(dāng)前最優(yōu)的模型 。 確實(shí) , 經(jīng)過(guò)一系列模擬行走后 , 從最優(yōu)的3個(gè)模型中重新啟動(dòng)是成功學(xué)到行走模式的關(guān)鍵 。 在沒有先驗(yàn)知識(shí)的情況下 , 模型可以學(xué)到像人一樣的運(yùn)動(dòng)行為 , 已經(jīng)相當(dāng)不簡(jiǎn)單 。
在相對(duì)短的訓(xùn)練時(shí)間和較差的硬件條件下(Intel Core 2 Duo CPU) , 模型可以成功的走出若干步 。 其他深度增強(qiáng)學(xué)習(xí)模型顯然獲得了更好的效果 , 但需要很長(zhǎng)的訓(xùn)練時(shí)間和強(qiáng)大的硬件 。 我的目標(biāo)不是真正與這些模型競(jìng)爭(zhēng) , 而是表明如何用遺傳算法及少于100個(gè)參數(shù)的模型 , 快速在低配筆記本上獲得行走模式 。

推薦閱讀