ラジコン「働く車」の自動運転ーPart3 強化学習 「ダンプカー」

 こんにちは。  前回は、模倣学習を用いたショベルカーの自動運転を紹介しました。ショベルカーの操作になれたエキスパートが10回ほど操作を繰り返し、その操作内容を記録します。  次に、その記録データ(エキスパートデータ)をコンピュータが学習し、コンピュータがショベルカーを自動操作するという内容でした。  今回は強化学習を使用して、ダンプカーの自動運転に挑戦します。  強化学習は、何十万回と動作を試しながら、最善の行動をコンピュータが学習する方法です。多数回の試行を行うためには、動きにみあったシミュレータ(ソフトウェア)が必要となります。  シミュレータを相手に「何十万回も繰り返す」となると、学習に時間がかかって大変ですが、多数回繰り返すことで、今まで(人が)知らなかった行動も発見できるというメリットもあります。AlphaGoが世界TOP棋士に勝てたのも、この「何十万回と動作を試す」ことが大きな要因だと思います。  車を駐車場に停めるとき、「ハンドルの切り返し」を行うことがありますが、多数回の試行を行う強化学習では、この「切り返す」という技を自然に学習していきます。今回ご紹介するダンプカーも切り返しを行いながら目的地へ進んでいきます。   1 ダンプカーを動かす環境  図1は、コンピュータとダンプカーの連携図です...
More

ラジコン「働く車」の自動運転ーPart2 模倣学習 「ショベルカー」

 こんにちは。  前回のブログでは、ラジコン「働く車」の自動運転の概要を紹介しました。今回はラジコンのショベルカーの自動操作について紹介したいと思います。  強化学習を行うためには、ショベルカーのシミュレータが必要になります。しかし、ショベルカーの動きは三次元的で、土砂の移動も考慮する必要があるため、シミュレータの作成自体に時間がかかりそうです。そこで今回は、シミュレータを使用せずに、エキスパートデータ(熟練者の操作記録、エキスパートの行動軌跡)のみで学習を行う「模倣学習」(Imitation Learning)を用いて、ショベルカーの自動操作を行いたいと思います。  センサーとして使用するのは「1台のカメラ」のみです。カメラ画像のみを使用しているので、模倣学習の中でも、「見まね学習」(learning by watching)と言われるジャンルの学習方法になります。   1 ショベルカーを動かす環境  図1は、コンピュータとショベルカーの連携図です。はじめに、キーボードを使って、人(熟練者)がショベルカーを操作し、その時のカメラ画像と人の操作(行動)を、「操作記録データ」(エキスパートデータ)として保管します。次に、このエキスパートデータをコンピュータが学習し、最終的にコンピュータがショベルカーを自動操作するという流...
More

ラジコン「働く車」の自動運転ーPart1 概要説明編

 こんにちは。  昨年、ボールコントロールについてのブログを書きました。今回はAIを使用して、ラジコンの「働く車」の自動運転や自動操作に挑戦したいと思います。  ここ数年、「車の自動運転」が注目されていますが、自動運転の実験に本物の車を使用するのは、コストや安全面からみて非常に敷居が高いため、ラジコン玩具の「働く車」を使用して自動運転に挑戦したいと思います。  ラジコンの「働く車」は、子供が楽しく遊べる玩具として数千円程度で販売されていますが、その機能は驚くほど充実しています。「ショベルカー」にいたっては、ロボットアームの簡易版といった代物で、台座(上部旋回体)の回転や、アーム、バケットの上げ下げなど、「数千円でよくぞここまで!」という驚きの機能をもっています。  Part1では、ラジコンの「働く車」の自動運転の概要を説明したいと思います。   1 全体像  図1は、今回挑戦するラジコンの「働く車」を使った自動運転の全体像です。  (1)初めにショベルカーを使って、土砂をダンプカーに積み込みます。  (2)次に、ダンプカーが目的の位置まで土砂を運搬します。  (3)最後に、ホイールローダが、ダンプが降ろした土砂をならします。  この(1)~(3)までの流れを連携して動かすことにより、土砂を...
More

強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 3

実際の機材を使用した強化学習(事例・応用例)  こんにちは。  Part 1では「強化学習の概要」を紹介し、Part 2では「ボールの自動転がし」について、シミュレーション上で行った様子を紹介しました。  いよいよ今回のPart 3では、実際の機材を使用して、強化学習を用いたボールコントロールを行ってみたいと思います。  前回のおさらいとなりますが、図1は「ボールの自動転がし」に使用する実際の機材構成です。カメラでボールの位置を捕捉し、ステージの下にある高さセンサーで、ステージの状態をとらえています。  2個のサーボモータを回転させてステージを上下させることにより、ボールを「円」や「8の字」に転がそうとしています。仮想の(見えない)ネズミをボールが追いかけるように(強化学習で)学習を行っています。 図1 ボール転がし機の全体像   1 実機を使用した再学習(Fine-tuning)  コンピュータで使用する強化学習のモデルは、前回 Part 2 の「シミュレータを使用して学習したモデル」を使用します。このモデルは仮想の(見えない)ネズミをボールが追いかけるように学習していますが、実際の機材とシミュレータではボールの動きが若干異なることや、実機ではリアルタ...
More

強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 2

疑似シミュレータで強化学習(事例・応用例) こんにちは。 前回のPart 1では強化学習の概要についてお話をしました。今回は強化学習の事例を紹介したいと思います。 ~関連ブログ~  「強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 3 実際の機材を使用した強化学習(事例・応用例)」   1 ボールの自動転がし  ここで紹介する事例は、 「ボールの自動転がし」です(図1)。 図1 工事用一輪車(手押し車)  図1のように、工事用の一輪車に平らな板を載せ、その板の上にボールを置きます。この一輪車を左右の手で上下させることにより、板の上のボールを自由自在に転がそうというものです。ボールを板の上でピタッと静止させたり、「8の字」の形にボールを転がしたいと考えています。  ここでは本物の一輪車は使いません。図2のような機材を用います。人の眼をカメラに、人の手をサーボモータに置き換えて、ステージの上のボールを自動的に、自在にコントロールすることを目標にしています。 図2 ボール転がし機  このような技術はシステム制御工学の「フィードバック制御」と呼ばれる中の一つのようですが、ここでは強化学習を用いてボールの...
More

強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 1

強化学習の概要 こんにちは。 前回は「倒立振り子」を例に、強化学習を用いた自動操作について紹介しました。 今回は強化学習と自動操作について、もう少し深くお話しをしたいと思います。 しかしその前に、このPart 1では強化学習の概要を紹介します。 ~関連ブログ~  「強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 2 疑似シミュレータで強化学習(事例・応用例)」  「強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 3 実際の機材を使用した強化学習(事例・応用例)」 Deep Learning(深層学習)を用いた強化学習としてはDQN が有名ですが、最近では次のように様々なアルゴリズムが提案されています。 DQN (Deep Q Learning) DDQN (Double DQN) DDPG (Deep Deterministic Policy Gradient) NAF  (Continuous DQN (CDQN )) CEM  (Cross-Entropy Method) Dueling DQN (Dueling network DQN) Deep SARSA A3C  (Asynchronous Advantage Actor-Criti...
More

ネズミを追いかける振り子と機械の自動操作(深層強化学習  Deep Reinforcement Learning)

こんにちは。 今回は、「機械の自動操作」について、少しお話をしたいと思います。 機械学習の一つの領域に「強化学習」がありますが、強化学習とディープラーニングを統合させた深層強化学習を用いた、「機械の自動操作」についてご紹介したいと思います。 自動操作で最近のホットな話題は、「車の自動運転」です。 Googleをはじめ、車の製造メーカー各社は、大量の機械学習技術者を採用し、「車の自動運転」を目指して競争しているようです。 複数のモータをスムーズに制御しなければならいない人間型ロボットについても同様で、機械学習を用いた制御方法が盛んに研究されているようです。 「強化学習」の基本につきましては、「強い三目並べをつくる」をテーマに、書籍「実装 ディープラーニング」(2016 オーム社)の第6章で紹介させていただきました。詳しくはこちらをご覧下さい。 初めに、強化学習と自動操作の基本ともいえる「倒立振り子」のご紹介です。 ここでは、この「倒立振り子」も簡単な制御機械の一つとして考えています。 ~関連ブログ~  「強化学習でボールを自由に動かす ~ネズミを追いかけるボール~ Part 1 強化学習の概要」   1 倒立振り子   上の図のような振り子を考えます。 こ...
More

書籍「実装 ディープラーニング」のご紹介

●書籍「実装ディープラーニング」のFAQ を作成しました。 こんにちは。今回は、書籍「実装 ディープラーニング」について、内容を少しご紹介したいと思います。 ※「実装 ディープラーニング」の韓国語版です。「딥러닝 부트캠프 with 케라스」 以下は、「はじめに」から抜粋した内容です。 車の自動運転。この夢のような話も、数年後には普通のことになっているかもしれません。 車の自動運転には、いくつかの高いレベルの技術が必要といわれています。その一つが、正確なセンサーとしての役割を担う画像認識です。もう一つは、人に近い、より高度な推測を可能とする強化学習です。本書はこの二つに焦点をあてて、ディープラーニングを使用したサンプルプログラムを示しながら、より実践的な手法を紹介します。 ~ 途中略 ~  画像のクラス分類では、1,000層からなるディープラーニングのネットワークも発表されています。最近の主流は、公開されている VGG-16(16層)、ResNet-152(152層)といった学習済みモデル(pre-trained model)を利用し、最後にFine-tuningする方法です。学習済みモデルを利用すると、高い性能を容易に発揮できることが示されています。  本書では、「画像のクラス分類」で、VGG-16、ResNet-152を具体...
More

数式をまったく使わないMCMC(マルコフ連鎖モンテカルロ法)の説明

こんにちは。 今回は、確率分布の平均値やモード(最頻値)を探す方法のアルゴリズムである「MCMC(マルコフ連鎖モンテカルロ法、Markov chain Monte Carlo methods)」について、お話ししたいと思います。 ここでは山田君が登場します。このストーリーは社内でも意外に好評で、週刊ダイヤモンドでも採用していただきました。 1 洞穴に落ちてしまった! 山田君は、山に遊びにいって、誤って大きな洞穴に落ちて気を失ってしまいました。 気が付いたら、もう夜。そこは大きな洞穴で、なんとか上の落ちた穴の位置を探したいと思いました。 さて、真っ暗闇の中で、どうやって穴の位置を探したらよいでしょうか? 2 落ちた穴を探す 山田君は、洞穴の一番高いところに落ちた穴があるだろうと考えました。 そこで、近くの小石を拾って、それを真上に投げ上げて、小石が天井にぶつかって落ちてくるまでの時間を測ることにしました。 山田君はランダムに歩いて、一歩進むたびに石を投げ上げながら天井の高いところを探します。 「ここら辺が高いな」と思ったら、その周辺に集中的に石を投げ上げて、落ちた穴を探すようにしました。 3 平均値・モードを求める 山田君は、20回小石を投げ上げたとしましょう。 ここで、山田君が小石を投げた時の足の位...
More

強化学習で〇×ゲームに強いコンピュータを育てる(深層学習 Deep Learning)

こんにちは。 今回は「強化学習」についてお話をしたいと思います。 ~関連ブログ~  「強化学習でボールを自由に動かす ~ネズミを追いかけるボール Part 1~ (深層学習  Deep Reinforcement Learning )」 人間は学習することによって、行動をより良いものに変えていくことができますよね。 コンピュータも自己学習をすることにより、より良い行動を取るようにすることができます。 それが強化学習です。 ●「強化学習で○×ゲーム(三目並べ)」の詳しい内容が書籍として出版されました。 詳しくはこちらをご覧下さい。 最近有名なのが、GoogleのDQN(Deep Q Network) でしょう。 シンプルなテレビゲームであるピンポンゲームを学習し、次第に強くなっていきます。 最初はほぼ負けているプレイヤー(コンピュータ)ですが、数千回のゲームを繰り返していくと だんだんと勝てるようになっていく様子は見ていて飽きません。 youtubeに強化学習の様子がありますので、興味のある方はどうぞ。 https://www.youtube.com/watch?v=N813o-Xb6S8 今回は、ピンポンよりももっとシンプルなゲームで強化学習を試してみたいと思います。 ...
More