怪我をしても歩ける6足歩行ロボットの学習

KumeAyaka

2015-08-31 17:34:43

こんにちは。コロンビア大学の久米です。7月からの2ヶ月間、ロボットと機械学習をテーマにインターンをしました。この記事は先日、ustreamで発表した内容のダイジェスト版となっています。

インターンでは、6本脚ロボットが脚を失ってもすぐに新しい歩き方を学習する方法の実装を行いました。具体的にいうと、Natureで2015年に発表された、Robots that can adapt like animals(PDF)の再現実験です。ロボットの組み立て、シミュレーション(事前学習)、手法の実装、実験をしました。

下の動画を御覧ください。6本脚ロボットは、6本の脚を使って歩行します。左側の動きが通常時の動き方です。歩行中、脚を一部失ってしまうこともありえます(下の写真)。そうすると右側の動画のように同じように脚を動かすだけでは、前向きに歩くことができなくなってしまいます。

今までの方法では、ロボットが脚を損失した状態で前進する歩き方を見つけるためには、事前に色々な状況に対して歩き方を設定しておくか、学習するとすればたくさんの時間がかかっていました(強化学習など)。
提案手法では、脚がなくなってしまっても数回から数十回程度の試行で前進する方法を発見することができます。下の方に結果を掲載していますが、実際に実験してみると、1本脚の先がなくなったり、2本の脚が動かなくなっても、5種類の歩き方を試しただけで前進の方法を発見しました。

手法のコンセプトは次のような感じです。
まずは、健康な状態の時に色々な歩き方を試しておきます(事前学習)。上手く前進できなくなった時には、事前に覚えていた歩き方の中からいくつか試して、良い方法を発見します(Adaption step)。

propose

事前学習

実際の歩き方は36個のパラメーターを指定して決定するので、歩き方は膨大に存在します。
色々な状況に対処するためには、ただ良い歩き方を記憶するだけではなく、色々な状況に対して良い歩き方を記憶する必要があります。論文では「各脚の着地時間」をその指標にし、パフォーマンスのマップを作成しています。つまり、各脚の着地時間という6次元の値に対して、着地時間も5通りに離散化して、各脚0%,25%,50%,75%,100%に分類し、合計で15625通りの状況を想定します。

下の図が、このマップを2次元に表したもので、脚1と2の着地時間によって、大きい四角形の場所が決まり(左下ほど着地時間が少ない)、3と4の着地時間によって、各大きい四角形の中の小さな四角形の場所を決定、5と6については小さい四角形の中の場所を決定します。
各脚の着地時間に応じて場所が決定し、そこにパフォーマンスとパラメーターを記憶していきます。

map

jizeng

事前学習のやり方
  • 一つの歩き方を試す
  • 歩き方の距離(パフォーマンス)と各脚の着地時間(状況)について計測する
  • その状況の距離が今まで記録されていなければマップに記録する。記録されていても、今回の方がパフォーマンスが良ければ記録を上書き、悪ければこの歩き方は捨てる
  • 今までに記録されている歩き方を少し変化させて歩き方を試す(上に戻る)

何千万回もの試行が必要なため、事前学習は実機ではなくシミュレーション上で行います。

事前学習の結果

シミュレーションは、Open Dynamics Engine(ODE)という物理シミュレーターを使って行いました。

私は実際に 5188万4543回のシミュレーションを行って、マップを作成していきました。
Amazon AWSを使って並列実行し、10日間位で学習しました。

params
この図は、横軸がシミュレーション回数で、縦軸がマップの中で埋まったマスの個数です。
仮に全部埋まったとしたら15625マスですが、新しいパラメーターを既存のパラメーターから作っていくことと、動きようがない部分(0,0,0,0,0,0)なども存在するので全部は埋まりません。
result1

これらが、マップの途中経過です。回数の下の数字は最大値と平均値です。図は、最終マップの最大値を1(赤)とした時のそれぞれのマスのパフォーマンスを示しています。初めの1000万回くらいで、マップのマスの数自体は増えなくなりますが、パフォーマンスは向上しているのがわかります。

Adaption step

mboa4
実際にロボットが壊れてしまった時には、マップの中から新しい歩き方を試します。
その時には、今歩いている方法はあまり良くないので、それに似た歩き方を避けて、かつパフォーマンスが高そうな歩き方を探していきます。

mboa3
(論文より引用)

初めは壊れたロボットでの歩き方については、実際には試していないため確信度は全て最低レベルで、パフォーマンスは事前学習の時の値です。
一度実際に歩くと、マップ上で既に観測された歩き方に近い歩き方は、確信度が高くなっていき、それと同時にパフォーマンスも観測された値に応じて更新されていきます。マップの更新にはBaysian optimizationを使います。

実験結果

最後に、実験結果の動画です。

動画の見方

脚(6個の数字): 動画の歩き方において各脚がマップの中のどこにいるかを示しています。
各脚0-4までの数字。(着地時間 0%:0 25%:1 50%:2 75%:3 100%:4)

パフォーマンス:計測した値

期待MAX:更新されたパフォーマンスマップでの最高値

パフォーマンスマップの1.0は事前学習での最高値(0.17)。
色々な歩き方を試すうちにマップがどんどん下方修正されていきます。

確信度は青ほど低く、実測されると赤色になっていきます。

最後の方にでてくる相対的パフォーマンスマップというのが、ロボットがその時に持っているパフォーマンスマップの最大値を1としたときのパフォーマンスマップです。

このように、わずか数回の試行で、前進方法を学習することができました!2つ目の実験のように、実際には1回目で良い歩き方を発見した場合でもまずは、もっと良い歩き方がないか探します。調べているうちに全体のパフォーマンスが更新されていって、期待されるパフォーマンスが下がってきて、一回目の歩き方が良い歩き方だということが発覚します。

事前学習のシミュレーションの精度はどうしても完璧というわけにもいかないのですが、それでもこのように成果がでました。
この手法を用いれば、状況が変わった時に、改めて学習をするのではなく、理想的な状況(シミュレーション)にたいして学習を行えば、すぐに色々な状況に対処できるため、常に人間の監視下にいるわけではないロボットに対して応用できれば、突然の事故などに対応できると思います。

Deep Learningと音声認識

preferred

2015-07-16 13:00:10

西鳥羽です。こんにちは。

本日セミナーで「Deep Learningと音声認識」という内容で(ustreamで公開されているけども)社内セミナーで紹介させて頂きました。タイトルは前回の「Deep Learningと自然言語処理」に被せてます。

Broadcast live streaming video on Ustream

こちらがその資料になります。尚、セミナーでは「話し言葉コーパス」とすべきところを「書き言葉コーパス」としてしまっていました。資料では訂正してあります。

また、個々の参照は以下の通りです。

CTC関数に関しては以下が詳しいです。Chainerで実装してますがちゃんと動くようになったら公開したいですね。

Deep Learningと自然言語処理

preferred

2014-12-26 11:22:09

クリスマスイブの夜は男三人しかいないオフィスで関数型言語の素晴らしさについて語っていた西鳥羽です。こんにちは。

昨日のPFIセミナーで「Deep Learningと自然言語処理」というタイトルで発表させていただきました。以下がその時の資料です。


この辺りに興味を持たれた方は今度の1月20日に「NIPS 2014 読み会」http://connpass.com/event/10568/ もどうぞ。残り枠数少ないので申し込みはお早めに。

続きを読む »

バイオロジー分野での取り組みの紹介

大野 健太
エンジニア

2013-11-12 13:04:44

大野です。寒くなりましたね。

現在バイオプロジェクトのリーダーを務めています。最近外部のライフサイエンス機関と協業に関するプレスリリースがいくつかあり、反響を多く頂きました。折角の機会ですのでPFIでのバイオ・ヘルスケア・医療分野でのこれまでの取り組みや今後の方向性について紹介をさせていただきたいと思います。

続きを読む »

エラー処理を書いてはいけない

preferred

2011-12-09 14:55:55

昨日セミナーとして USTREAM させていただいた資料を公開いたします。

エラー処理を書いてはいけない

USTREAMのビデオ

タイトルは釣り気味ですが、内容はいたって真面目なのでご安心ください。

続きを読む »

Simon Peyton Jones先生招待講演について

nushio
エンジニア

2011-09-28 14:54:00

村主です。

2011年9月21日に、ICFP2011で来日していたSimon Peyton-Jones先生を弊社にお招きして、Glasgow Haskell Compilerの最新事情について講演をしていただきました。当日は体が浮きそうなほどの風が吹く大嵐でしたが、多くの人の協力のおかげで無事に終えることができ、感謝しています。

サイモン先生からスライドを分けてもらったので、講演会の動画とあわせて読む形で、記事にまとめてみました。Haskell/GHCのさまざまなトピックをカバーするこの講演、みなさんのHaskell勉強の一助となれば幸いです。

続きを読む »

PFIセミナーのUSTREAM配信を行いました(2011/9/8)

祢次金 佑
エンジニア

2011-09-13 17:22:42

こんにちは。

9/8、PFIセミナーのUSTREAM配信を行い、『FC東京に学ぶ組織論』と題して渡辺が発表致しました。セミナーの内容はこちらからご覧いただけます。

次回、および次々回の配信予定日と発表予定者は以下のようになっております。

2011年9月15日 19:10-20:00(予定) 発表者: 秋田慶
2011年9月22日 19:10-20:00(予定) 発表者: 石井大海

セミナーに関する情報は、弊社公式Twitterアカウントにてハッシュタグ#pfiseminarでもお知らせしていきます。

PFIセミナーのUSTREAM配信を行いました(2011/9/1)

祢次金 佑
エンジニア

2011-09-05 13:00:29

こんにちは。

9/1、PFIセミナーのUSTREAM配信を行い、『僕がMBAで理解した机上の「マーケティング」and Lean Start-Upの「顧客開発モデル」』と題して渡部が発表致しました。セミナーの内容はこちらからご覧いただけます。

次回、および次々回の配信予定日と発表予定者は以下のようになっております。

2011年9月8日 19:10-20:00(予定) 発表者: 渡辺順
2011年9月15日 19:10-20:00(予定) 発表者: 秋田慶

セミナーに関する情報は、弊社公式Twitterアカウントにてハッシュタグ#pfiseminarでもお知らせしていきます。

PFIセミナーのUSTREAM配信を行いました(2011/8/25)

祢次金 佑
エンジニア

2011-08-26 14:05:36

こんにちは。

昨日8/25、PFIセミナーのUSTREAM配信を行い、「SONYからPFIへ」と題して長谷川が発表致しました。セミナーの内容はこちらからご覧いただけます。

次回、および次々回の配信予定日と発表予定者は以下のようになっております。

2011年9月1日 19:10-20:00(予定) 発表者: 渡部創史
2011年9月8日 19:10-20:00(予定) 発表者: 渡辺順

セミナーに関する情報は、弊社公式Twitterアカウントにてハッシュタグ#pfiseminarでもお知らせしていきます。

開発プロジェクトの進め方

preferred

2011-08-12 12:06:57

Research Blog上では初めまして。Professional and Support Serviceチームの西鳥羽です。

8/11のPFIセミナーでプロジェクトマネジメントの話をさせて頂きました。その時の様子はこちら前編後編です

何度か開発プロジェクトを経験してきて、初期のプロジェクトと比べるとPMとしても開発者としても上手く回せるようになったし、勘所も見えてくるようになってきたので一度まとめてみることにしました。PFIは製品開発や研究開発が中心で直接お客がいる開発を行っている人間が少ないことや、今サマーインターンをやっていてたくさん学生が来てくれていることもあってシステム開発の様子が珍しいのではないかと思いプロジェクトマネジメントの話にしました。

その時のスライドを公開します。

続きを読む »

12