画像はイメージです original image: © science photo - Fotolia.com
「学ばせる」プログラミングが、最も「学べる」可能性
2017.09.25
Updated by WirelessWire News編集部 on September 25, 2017, 07:00 am JST
画像はイメージです original image: © science photo - Fotolia.com
2017.09.25
Updated by WirelessWire News編集部 on September 25, 2017, 07:00 am JST
イスラエル工科大学(テクニオン)のロボティクス&ディジタル技術教育センターに集められた、高校生と大学初年度の学生たちに、ロボットを学ばせるに当たって、ある試みが行われた。
ロボットが行うべき単純なタスクを設定し、それを実行できるように学生たちにプログラムを組ませるのではなく、ロボット自身が、試行錯誤を通じて、より良い方法を学ぶようにプログラムを作らせたのだ。いわゆる「強化学習(reinforcement learning)」だ。何かを試みて、それがその1つ前のトライアルよりも成功に近づいていれば報酬を与え、成功から遠ざかっていたら報酬を与えない。これによって、1つ前のトライアルと今のトライアルの違いを、強めるか弱めるかを判断して、徐々に成功に近づいていく。
最終的な課題は、重さの分からない重りを、バランスを崩さずにロボットに持ち上げさせるというもので、前傾姿勢や肩関節の角速度を微調整しながら、失敗を繰り返しつつ、いつかは上手に持ち上げられるようにする。うまく学習できるようにプログラムすれば、重さの違う重りに対しても、試行錯誤の末に持ち上げられるようになる。実際のロボットに何度もバランスを崩させるのではなく、コンピュータ上でシミュレーションを行って、うまく行ったプログラムを実物のロボットに実装してウェイトリフティングを実行させたそうだ。
このように、ロボットに学ばせるプログラミング実習をやってもらったところ、学生たちは、このプロジェクトに大いに関心を示し、機械学習やパラメータ設計、ディジタル・プロトタイピングから、クラウドやネットワークに関する知識を得ることができたし、こうした概念が高校生や大学初年度でも十分に理解可能であることを示したという。
ロボットと重りを与えて、プログラムによるロボットの操作方法を教えれば、学生の側が試行錯誤を繰り返して、複数の関節をうまく使ってバランスを保ちながら、持ち上げるようにできるだろう。しかし、それではリモコンの操作に習熟したのと大差ない。「ロボットが学ぶように」プログラムすると、学ぶことが多いということらしい。
STEAM(科学・技術・工学・芸術・数学)ブームの昨今、小学生にもプログラミングを習わせる学校や教育キットがあって、子供達の関心を惹くために、ロボットが援用されることも多い。ただ、小学生の段階では、あくまでもプログラミング的な考え方に触れて、ロボットに単純な動きをさせるところまで。高校生くらいになると、強化学習という課題が効果的ということは、教育プログラムの開発のヒントになるかも知れない。
【参考情報】
Robot Online Learning to Lift Weights: A Way to Expose Students to Robotics and Intelligent Technologies
http://online-journals.org/index.php/i-joe/article/view/7270
Teaching Robots to Learn Teaches the Students Too
https://campustechnology.com/articles/2017/08/22/teaching-robots-to-learn-teaches-the-students-too.aspx
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら