持続可胜性戊略


前の蚘事で、募配を明瀺的に蚈算するこずなく関数パラメヌタヌを最適化するのに圹立぀いく぀かの進化戊略ESアルゎリズムに぀いお説明したした。 匷化孊習RLの問題を解決するずき、これらのアルゎリズムを䜿甚しお、ニュヌラルネットワヌク゚ヌゞェントのモデルパラメヌタヌの適切なセットを芋぀けるこずができたす。 この蚘事では、䞀郚のRLタスクでのESの䜿甚に぀いお説明し、より安定した安定したポリシヌを芋぀ける方法に぀いおも説明したす。


匷化孊習戊略


RLアルゎリズムは各クロックサむクルで゚ヌゞェントに送信される報酬信号を必芁ずするため、これらのアルゎリズムでは、゚ヌゞェントが環境で実行された埌に゚ヌゞェントが受信する环積匷化のみが重芁です。 倚くの堎合、゚ヌゞェントが正垞に動䜜したかどうか、ロボットマニピュレヌタヌがオブゞェクトを取埗したかどうか、゚ヌゞェントが生き残ったかどうかなど、タスクの最埌の出力のみがわかりたす。これらのすべおのタスクで、ESは埓来のRLよりも効果的です。 以䞋に、゚ヌゞェントの実行がOpenAIゞム環境にカプセル化される擬䌌コヌドを瀺したした。 ここでは、环積匷化にのみ関心がありたす。


def rollout(agent, env): obs = env.reset() done = False total_reward = 0 while not done: a = agent.get_action(obs) obs, reward, done = env.step(a) total_reward += reward return total_reward 

前の蚘事で説明したように、 rolloutを゚ヌゞェントモデルのパラメヌタヌずフィットネスポむントを比范する目的関数ずしお定矩し、ES゜ルバヌを䜿甚しお適切なパラメヌタヌセットを芋぀けるこずができたす。


 env = gym.make('worlddomination-v0') # use our favourite ES solver = EvolutionStrategy() while True: # ask the ES to give set of params solutions = solver.ask() # create array to hold the results fitlist = np.zeros(solver.popsize) # evaluate for each given solution for i in range(solver.popsize): # init the agent with a solution agent = Agent(solutions[i]) # rollout env with this agent fitlist[i] = rollout(agent, env) # give scores results back to ES solver.tell(fitness_list) # get best param & fitness from ES bestsol, bestfit = solver.result() # see if our task is solved if bestfit > MY_REQUIREMENT: break 

決定論的および確率論的ポリシヌ


環境を芳察した結果ぱヌゞェントぞの入力であり、出力は環境内での実行䞭の各サむクルでの効果です。 必芁に応じお゚ヌゞェントをシミュレヌトし、コヌド、ディシゞョンツリヌ、リカレントニュヌラルネットワヌクの線圢関数で芏定されおいるルヌルのメ゜ッドを䜿甚できたす。 この蚘事では、゚ヌゞェントベクトルx の監芖結果をアクションベクトルy に盎接倉換するために、2぀の非衚瀺レベルを持぀単玔なフィヌドフォワヌドネットワヌクを䜿甚したす。


h 1 = f h W 1 x + b 1 
h 2 = f h W 2 h 1 + b 2 
y = f out W out h 2 + b out 


アクティベヌション関数f hおよびf outは、 tanh 、 sigmoid 、 reluたたは他のいずれかです。 すべおの実隓で、 tanhを䜿甚したした。 そのような必芁性がある堎合、非線圢性のないパススルヌ関数ずしお出力レベルでfを取り出すこずができたす。 すべおの重みずバむアスパラメヌタヌを単䞀のベクトルWに連結するず、䞊蚘のニュヌラルネットワヌクが決定関数y = Fx、Wであるこずがわかりたす。 次に、ESを䜿甚しお、前の蚘事で説明した怜玢サむクルを䜿甚しお゜リュヌションWを芋぀けるこずができたす。


゚ヌゞェントのポリシヌを決定論的にしたくない堎合はどうしたすか じゃんけんのような単玔なタスクでも、最適なポリシヌはランダムアクションです。 ぀たり、゚ヌゞェントは確率論的な政治を孊ばなければなりたせん。 y = Fx、Wを確率的ポリシヌに倉える1぀の方法は、Wをランダムにするこずです。 モデルの各パラメヌタヌw i∈Wは、正芏分垃NΌi、σiから取埗したランダムな倀にするこずができたす。


このタむプの確率的ニュヌラルネットワヌクは、 ベむゞアンニュヌラルネットワヌクず呌ばれたす 。 これは、事前に重み付けされた配信ネットワヌクです。 この堎合、解を探しおいるモデルのパラメヌタヌは、重みWではなく、ベクトルΌずσのセットです。ニュヌラルネットワヌクの各パスで、NΌ、σIから新しいWを取埗したす。さたざたなタスク、およびこれらのネットワヌクのトレヌニングの問題 。 ESを䜿甚しお、Wの代わりにΌずσを蚭定するこずにより、確率論的ポリシヌの゜リュヌションを盎接芋぀けるこずができたす。


確率ネットワヌクは、RLに捧げられた䜜品によく芋られたす。 たずえば、 Proximal Policy OptimizationPPOアルゎリズムでは、最埌のレベルはパラメヌタヌのセットΌずσ、およびNΌ、σIから遞択されたアクションです。 パラメヌタにノむズを远加するず、゚ヌゞェントを刺激しお環境を探玢し、局所的な最適化を回避できたす。


゚ヌゞェントが媒䜓を調査する必芁がある堎合、Wベクトルが完党にランダムである必芁はないこずが倚いこずがわかりたした。バむアスだけで十分です。 たずえば、 roboschool環境などの移動に関連する困難なタスクでは、ESを䜿甚しお、正芏分垃から゚ラヌパラメヌタヌのみを抜出する確率的ポリシヌを芋぀ける必芁がありたす。


二足歩行噚の持続可胜性ポリシヌの開発


これは、持続可胜性ポリシヌを芋぀けるためにESが圹立぀分野の1぀です。 ランダムな詊行を䜕床か繰り返しお、デヌタのパフォヌマンスずポリシヌの持続可胜性のバランスを管理したいず考えおいたす。 Oleg Klimovが開発した優れたBipedalWalkerHardcore-v2環境でESをテストしたした。 この環境では、 Angry Birdsでも䜿甚されおいたBox2D物理゚ンゞンを䜿甚しおいたす。



゚ヌゞェントがBipedalWalkerHardcore-v2を決定したした 。


この環境で、゚ヌゞェントは、時間制限のあるランダムに生成された障害物コヌスを転倒せずに歩くポリシヌを研究したした。 24個の入力信号が䜿甚されたした10個のLIDARセンサヌ、角床、および衚面ずの接觊。 ゚ヌゞェントは、ルヌトのどこにいるかを知りたせん。 アクションスペヌスアクションスペヌスは、4぀のモヌタヌのトルクを制埡する4぀の連続動䜜倀連続倀で構成されおいたす。 総匷化総報酬は、゚ヌゞェントが移動した距離党䜓に基づいお蚈算されたす。 ゚ヌゞェントがルヌト党䜓を通過した堎合、300ポむント以䞊を獲埗したす。 確かに、適甚されるトルクの量に応じおいく぀かのポむントが差し匕かれるため、゚ネルギヌ消費も制限になりたす。


BipedalWalkerHardcore-v2では 、゚ヌゞェントが100回の連続ランダム詊行で平均300以䞊のポむントを獲埗した堎合、タスクは解決されたず芋なされたす。 RLアルゎリズムを䜿甚するず、ルヌト党䜓を正垞に完了するように゚ヌゞェントをトレヌニングするのは比范的簡単ですが、゚ヌゞェントを効率的に通過させお安定した結果を埗るのははるかに困難です。 このタスクは非垞に興味深いものです。 私の知る限り、2017幎10月の時点で、私の゚ヌゞェントはトラックを最高の状態にしおいたす。


画像
スタヌト。 歩くこずを孊ぶ。


画像
゚ラヌを修正するこずを孊びたすが、それでもただゆっくりず刀明したす...


詊行ごずに新しいランダムルヌトが生成されるため、ルヌトは簡単な堎合もあれば非垞に難しい堎合もありたす。 自然遞択䞭に次䞖代に匕き継ぐための簡単な道を歩むのに十分な幞運な政治家がいる゚ヌゞェントは必芁ありたせん。 さらに、優秀な政治家を持぀代理人は、圌らが他の人よりも悪くないこずを蚌明できるはずです。 そこで、16回のランダムランの平均結果を゚ヌゞェント゚ピ゜ヌドずし、16回のランにわたる环積匷化の平均倀をフィットネススコアずしお䜿甚したした。


䞀方、100回の詊行で゚ヌゞェントをテストしたが、詊行は片手で行われたため、テストタスクはシステムを最適化したトレヌニングタスクに察応しおいないこずがわかりたす。 確率的環境で、母集団内で耇数の゚ヌゞェントが䜕床も平均化される堎合、トレヌニングセットずテストセットのギャップを枛らすこずができたす。 トレヌニングセットを再トレヌニングできる堎合は、特にRLでテストセットを再トレヌニングできたす。これには問題はありたせん :)


もちろん、アルゎリズムのデヌタ効率は16倍悪化しおいたす。 しかし、最終的な政策はずっず持続可胜になりたした。 100回連続しおランダムに詊行しお最終ポリシヌをテストしたずき、この環境を完了するには平均300ポむント以䞊かかりたした。 この平均化方法がなければ、100回の詊行で最高の゚ヌゞェントが玄220〜230ポむントを獲埗できたした。 私の知る限り、私たちの決定は今週氎曜日に通過する最初のものでした2017幎10月珟圚。


画像



勝利の決定は、゚ピ゜ヌドごずに平均16回実行するPEPGを䜿甚しお調査されたした 。


たた、RL甚の優れたポリシヌグラデヌションアルゎリズムであるPPOも䜿甚したした。 私の胜力の及ぶ限り、私はそれを私のタスクでうたく機胜するように蚭定しようずしたした。 100回のランダム詊行で玄240〜250ポむントしか達成できたせんでした。 しかし、だれかがPPOたたは別のRLアルゎリズムを䜿甚しおこの環境を通過できるず確信しおいたす。


安党なポリシヌが必芁な珟実の状況では、有甚で非垞に効果的な機胜は、デヌタの効率性ずポリシヌの回埩力のバランスを管理するこずです。 理論的には、十分な蚈算胜力があれば、100回の必芁な実行にわたっおデヌタを平均し、芁件のレベルでBiped walkerを最適化するこずさえ可胜です。 デバむスを蚭蚈するずき、プロの゚ンゞニアはしばしば品質管理サヌビスず安党係数の芁件を考慮する必芁がありたす。 それらを取り巻く珟実の䞖界に圱響を䞎える可胜性のある゚ヌゞェントのポリシヌを教えるずき、それらは考慮されなければなりたせん。


ESが芋぀けたいく぀かの゜リュヌション


画像
CMA-ES゜リュヌション。


画像
OpenAI-ES゜リュヌション。


たた、確率論的ポリシヌを䜿甚し、初期ノむズパラメヌタが高いネットワヌクを䜿甚しお゚ヌゞェントをトレヌニングしたため、゚ヌゞェントは動きがノむズの倚い堎所でもノむズを芋たした。 その結果、゚ヌゞェントは、入力信号ず出力信号の粟床に自信がない堎合でも、問題を解決するようにトレヌニングされたしたただし、300ポむントを超えるスコアは埗られたせんでした。


画像
確率論的政治を甚いた二足歩行噚。


クヌカグラブロボットアヌム


私は、ESず平均化技術の組み合わせを適甚しお、Kukaロボットアヌムを䜿甚した簡単なタスクを解決しようずしたした。 この環境は、 pybullet環境で䜿甚できたす。 シミュレヌタで䜿甚されるKukaモデルは、実際のKukaマニピュレヌタヌに察応しおいたす。 このタスクでは、゚ヌゞェントはオブゞェクトの座暙を取埗したす。


より高床なRL環境では、゚ヌゞェントはピクセル入力信号に基づいおアクションを実行する必芁がある堎合がありたすが、原則ずしお、この単玔化されたモデルを事前トレヌニングされた畳み蟌みニュヌラルネットワヌクず組み合わせお、座暙を蚈算するこずもできたす。


画像
確率的ポリシヌを䜿甚したマニピュレヌタヌによるグラブのタスク。


゚ヌゞェントがオブゞェクトの取埗に成功した堎合、10,000ポむントを受け取り、そうでない堎合は0を受け取りたす。ポむントの䞀郚ぱネルギヌ消費のために取り陀かれたす。 16のランダム詊行で匷化を平均するず、安定性の芳点からESを最適化できたす。 しかし、最終的には、確定的で確率的なポリシヌを持぀ケヌスの玄70〜75でオブゞェクトを取埗するポリシヌを取埗できたした。 ただ努力が必芁です。


Minitaurにいく぀かのタスクを教えたす


いく぀かの耇雑なタスクを同時に実行するこずを孊ぶず、単䞀のタスクをより適切に実行し始めたす。 たずえば、柱の䞊に立っおいるりェむトレスを持ち䞊げる少林寺の修道士は、りェむトレスの方がはるかにバランスが取れおいたす。 山道で時速140 kmで車を運転しおいるずきにカップから氎をこがさないようにするず、違法なストリヌトレヌスで玠晎らしいドラむバヌになりたす。 たた、耇数のタスクを䞀床に実行するように゚ヌゞェントをトレヌニングするこずもできたす。そうするず、゚ヌゞェントはより安定したポリシヌを習埗したす。


画像
少林寺の゚ヌゞェント。


画像
ドリフトトレヌニング。


自己再生゚ヌゞェントに関する最近の研究は、盞撲などの難しいタスクを習埗した゚ヌゞェントおよびこのスポヌツには倚くのスキルが必芁が、远加のトレヌニングなしで歩くずきに颚の抵抗などの単玔なタスクを実行できるこずを蚌明しおいたす。 Erwin Kumansは最近、歩くこずを孊んでいるMinitaurのふたにアヒルを远加する実隓を詊みたした。 アヒルが倒れた堎合、タスクはカりントされたせん。 したがっお、タスクぞのこのような远加が、シミュレヌタヌからの研究されたポリシヌを実際のMinitaurに倉換するのに圹立぀こずを期埅できたす。 䟋の 1぀を取り䞊げ、ESをトレヌニングに䜿甚しお、ミニタりアずアヒルを詊したした。


画像
pybulletの CMA-ESりォヌキングポリシヌ。


画像
ゎヌストロボティクスの Real Minitaur。


pybulletのMinitaurモデルは、実際のMinitaurをモデルにしおいたす。 ただし、理想的な仮想環境で孊習したポリシヌは通垞、珟実の䞖界では機胜したせん。 圌女は、シミュレヌタヌ内のタスクぞの小さな远加を芁玄するこずさえできないかもしれたせん。 たずえば、前のビデオでは、MinitaurはCMA-ESを䜿甚しお前進するように蚓緎されたしたが、同じポリシヌでは、ロボットの䞊にシミュレヌタヌを眮いた堎合、郚屋を通しおアヒルを移動できるずは限りたせん。


画像
歩行ポリシヌはアヒルず連携したす。


画像
アヒルの助けを借りお孊んだ政策。


アヒルを䜿わない単玔な歩行に関する研究は、ロボットにアヒルを乗せた堎合でも䜕らかの圢で機胜したす。぀たり、タスクをあたり耇雑にしたせん。 アヒルは安定しおいるので、Minitaurがそれを萜ずさないこずはそれほど難しくありたせんでした。 タスクを非垞に耇雑にするために、アヒルをボヌルに眮き換えようずしたした。


画像


画像
チヌトを孊ぶ。


しかし、これは安定したバランスのずれたポリシヌの瞬時の出珟には至りたせんでした。 代わりに、CMA-ESは、ボヌルを脚の間のくがみに転がしおそこに保持するこずにより、ボヌルを技術的に転送できるポリシヌを開発したした。 目的に埓っお解決策を探すアルゎリズム目的駆動型怜玢アルゎリズムは、タスクのために環境の蚭蚈䞊の欠陥を䜿甚するこずを孊ぶず結論付けるこずができたす。


画像
確率論的政治はボヌルで研究したした。


画像
同じポリシヌですが、アヒルがいたす。


ボヌルを小さくした埌、CMA-ESは、ボヌルを同時に歩き、バランスを取るこずができる確率的ポリシヌを芋぀けるこずができたした。 このポリシヌは、アヒルのあるより単玔なタスクに移行されたした。 将来、そのようなタスクを完了する方法が実際のロボットに経隓を移すのに圹立぀こずを願っおいたす。


゚ストヌル


ESの重芁な機胜の1぀は、䞭倮凊理装眮の異なるコアたたは異なるマシン䞊で異なる実行スレッドで䜜業する耇数のワヌカヌ間で蚈算を䞊列化できるこずです。


Pythonのマルチプロセッシングラむブラリを䜿甚するず、プロセスを䞊行しお実行できたす。 Message Passing InterfaceMPIずmpi4pyを䜿甚しお、タスクごずに個別のPythonプロセスを実行するこずを奜みたす。 これにより、むンタヌプリタヌのグロヌバルロックをバむパスし、各プロセスが独自のむンスタンスサンドボックスnumpyおよびgymを確実に受信できるようにしたす。これは、乱数ゞェネレヌタヌの初期化に関しお重芁です。


画像
ロボスクヌルホッパヌ、りォヌカヌ、アント。


画像
ロボスクヌルリヌチャヌ。


さたざたなロボスクヌルのタスクに぀いお蚓緎されたestoolを䜿甚する゚ヌゞェント。


シンプルなツヌルestoolを実装したした。これは、前の蚘事で説明したes.pyラむブラリを䜿甚しお、フィヌドフォワヌドポリシヌネットワヌクを備えたシンプルなネットワヌクを教えお、連続制埡連続制埡RLタスクでes.py RLタスクを実行したす。 estoolを䜿甚しお、䞊蚘のすべおの実隓での孊習を簡玠化するずずもに、ゞムやロボスクヌル内で垞に制埡するさたざたなタスクで孊習を簡玠化したした。 estoolは分散凊理にMPIを䜿甚するため、異なるマシンにワヌカヌを分散させるのに倚くのゞェスチャヌは必芁ありたせん。


pybulletを䜿甚したESTool


Github


ゞムずロボスクヌルで提䟛される環境に加えお、 estoolはほずんどのpybulletゞム環境でうたく機胜したす。 既存のPybullet環境を倉曎しお、タスクにより適したものにするこずができたす。 たずえば、Minitaurがボヌルを運ぶ環境をリポゞトリのcustom_envsディレクトリに簡単に䜜成したした。 環境の簡単なセットアップにより、新しいアむデアを簡単にテストできたす。 ROSやBlenderなどの他の゜フトりェアパッケヌゞから3Dモデルを実装する堎合は、新しい興味深いpybullet環境を䜜成し、他の人にそれらを詊しおもらうこずができたす。


KukaやMinitaurなど、pybulletの倚くのモデルず環境は、実際のロボットのむメヌゞず類䌌性に基づいおモデル化されおおり、蚓緎されたアルゎリズムの珟圚の知識をそこに転送したす。 実際、最近の倚くの研究 1、2、3、4 では、知識䌝達実隓を制埡するためにピブレットが䜿甚されおいたす。


しかし、シミュレヌタから実際のデバむスぞの知識の転送を詊すために、高䟡なロボットを入手する必芁はありたせん。 Pybulletには、ハヌドりェアオヌプン゜ヌススむヌトMIT racecarに基づいたracecarモデルがありたす。 ゚ヌゞェントが入力監芖ツヌルずしお仮想画面を䜿甚できるように、仮想レヌスカヌに仮想カメラをマりントするpybullet環境もありたす。


最初に、より単玔なバヌゞョンを詊しおみたしょう。この堎合、マシンは巚倧なボヌルに移動するポリシヌを研究するだけです。 RacecarBulletEnv-v0環境では、゚ヌゞェントは入力でボヌルの盞察座暙を受け取り、出力でモヌタヌ速床ず舵方向を制埡するための連続アクションを受け取りたす。 タスクは簡単で、2014 Macbook Pro8コアプロセッサのトレヌニングには5分50䞖代かかりたす。 estool䜿甚するず、このコマンドは8぀のプロセスでトレヌニングを開始し、各プロセスに4぀のタスクを割り圓おお、32人のワヌカヌを䜜成したす。 ポリシヌ開発には、CMA-ESが䜿甚されたす。


 python train.py bullet_racecar -o cma -n 8 -t 4 

珟圚のトレヌニング結果ず怜出されたモデルパラメヌタヌは、 logサブディレクトリに保存されlog 。 このコマンドを実行しお、芋぀かった最適なポリシヌを䜿甚しお環境内の゚ヌゞェントをレンダリングしたす。


 python model.py bullet_racecar log/bullet_racecar.cma.1.32.best.json 

画像
MIT Racecarに基づく氎曜日のピブレットレヌスカヌ。


シミュレヌタヌでは、マりスカヌ゜ルでボヌルを動かしたり、車を動かすこずさえできたす。


IPython notepad plot_training_progress.ipynbを䜿甚するず、すべおの䞖代の゚ヌゞェントの孊習履歎を衚瀺できたす。 䞖代ごずに、最高スコアず最䜎スコア、および母集団党䜓の平均結果を確認できたす。


画像


画像


暙準的な移動タスクは、倒立振子のようなロボスクヌルで䜿甚されるタスクに䌌おいたす。 たた、pybulletには、Hopper、Walker、HalfCheetah、Ant、およびHumanoidがありたす。 Antのポリシヌを開発したした。PEPGの助けを借りお、1時間で256の゚ヌゞェントが存圚するマルチコアマシンで3000ポむントに到達したす。


 python train.py bullet_ant -o pepg -n 64 -t 4 

画像


画像


AntBulletEnvの実行䟋 。 gym.wrappers.Monitorを䜿甚するず、ランニングをMP4ビデオで蚘録できたす。


画像


画像


おわりに


この蚘事では、ESを䜿甚しお゚ンドツヌ゚ンドのニュヌラルネットワヌク゚ヌゞェントのポリシヌを開発し、ゞムむンタヌフェむスで定矩された䞀定の制埡でさたざたなRLタスクを実行する方法に぀いお説明したした。 estoolツヌルに぀いお説明しestool ;分散コンピュヌティング環境でMPIフレヌムワヌクを䜿甚しお、さたざたな蚭定でESアルゎリズムをすばやくテストできたす。


これたで、詊行錯誀を通じお゚ヌゞェントをトレヌニングする方法のみを説明しおきたした。 このれロからの孊習圢匏は、モデルを䜿甚しない匷化孊習ず呌ばれたす model-free 。 次の蚘事たったく曞いた堎合では、゚ヌゞェントが以前にトレヌニングしたモデルを䜿甚しお珟圚のタスクを完了する方法を孊習するずきに、モデルベヌスのトレヌニングに぀いお詳しく説明したす。 そしお、はい、私は再び進化アルゎリズムを適甚したす。


興味深いリンク


゚ストヌル
安定たたは安定 違いは䜕ですか
OpenAIゞムのドキュメント
匷化孊習のスケヌラブルな代替手段ずしおの進化戊略
゚ドワヌド-確率的モデリング、結論、批刀のためのラむブラリ
ベむゞアンニュヌラルネットワヌクの歎史
BipedalWalkerHardcore-v2
roboschool
pybullet
Emergent Complexity
GraspGAN



Source: https://habr.com/ru/post/J343008/


All Articles