強化学習

◎ AWSのDeepRacer(今後取り組み予定)

◎ブログに書いた「強化学習」関係の記事一覧

2021年11月20日土曜日
「強化学習」の新刊が届きました
本日(2021-11-20)、Amazonに予約してあった下記の新刊が到着しました!「強化学習」を学びたい人最初に読む本, 日経BP, 2021-11-22初版伊藤真氏による新著です。また、学ぶ楽しみが増えました。

2021年11月5日金曜日
スマホでニューラルネットワーク(ml5JS/TensorflowJS利用)その2
引き続き、「スマホでニューラルネットワーク」にこだわります。以前の記事 [1]では、Q-Learning(強化学習)をニューラルネットワークで行うための基本手法を検討し、実装しました。今回は、さらにそれを深めた手法である「Experience Replay + Target Networks」があることを知り、それをTensorflow.js (JavaScript環境)で構築し、妥当なQ値が得られるまでPCで学習させました。さらに、その学習済みモデルをスマホへ格納し、スマホのアプリとして、Q-Learningを用いた2Dグリッドの経路探索課題を解きました。

2021年9月25日土曜日
Running Q-Learning on your palm (Part3)
本シリーズのPart1とPart2では、スマホ向けのQ-Learningアプリを開発し、それを簡単な例(直線の廊下でロボットが宝石を得る)に適用しました。今回は、このアプリを改訂し、2次元グリッドでロボットが行動できるようにしました。そして、グリッドサイズが大きくなるにしたがい、これまでのQ-tableを保持してQ値を更新する方法は、メモリ量と処理量の急増により破綻することを確認しました。それに変わる有望な方法として、Neural Networkの利用を検討し、それを(スマホではなく)PC上のPythonで実現した結果を示します。

2021年9月12日日曜日
Running Q-Learning on your palm (Part2)
前回の記事では、スマホ向けのQ-Learningアプリを開発し、それを簡単な例(ロボットが宝石を得る)に適用しました。今回は、ロボットの行動にいくつかのバリエーションを与えてみました。その場合でも、新しい行動の記述を追加する以外は、このスマホアプリをほとんど変更していません。今回の例題でも、Q-Learningによる学習の結果、ロボットは宝石を得るための最適な手順を自ら発見できました。

2021年8月26日木曜日
Running Q-Learning on your palm (Part1)
アプリは、人工知能技術の一分野である「強化学習(特にQ-Learning)」の基本的な考え方と仕組みを、簡単な例を動かしながら学ぶものです。強化学習は、AlphaGo(囲碁)や自動運転、自律制御ロボットなどで使われ、注目を集めています。ここでは、そのような実用レベルに立ち向かう前に、身近なスマートフォンを用いて、その技術のエッセンスに触れて親しむことができます。あなたの掌の上のスマホで強化学習を楽しもう!(このアプリは、MIT App Inventorを用いて開発されました。)

2021年8月17日火曜日
スマホアプリで「強化学習」を学ぶ魅力!
最近の日経ソフトウェア誌に、「Pythonで強化学習を学ぶ」の解説記事がありました。丁寧に書かれていて分かりやすく、提供されているPythonプログラムも完全に動かすことができました。しかし、ここで留まらずに、理解をさらに深めるため、別のプラットフォーム(Androidスマホ)とプログラミング環境(MIT App Inventor)で、独自にそれを再構築してみました。

2021年8月7日土曜日
Scratchプログラミングで強化学習の基礎(3)
前回の「Scratchで強化学習(2)」の続編です。伊藤真著[1]にある、レベル3の例題を検討します。前回のレベル2では、開始状態から最終状態までの「エピソード」を扱いましたが、今回の例題は最終状態の無いゲームでの得点(報酬)を競うものです。予測報酬(=行動価値Q)の計算において、「割引率」を導入するのがひとつのポイントです。

2021年8月2日月曜日
Scratchプログラミングで強化学習の基礎(2)
前回の「Scratchで強化学習」の続編です。伊藤真著[1]にある、レベル2の例題を検討します。前回のレベル1では、「行動、報酬」だけでしたが、今回は「状態、行動、報酬」を扱う本格的な強化学習の仕組みが入っています。そこにおいて、各状態での行動に対する予測報酬(=行動価値Q)の計算を観察します。

2021年7月26日月曜日
Scratchプログラミングで強化学習の基礎(1)
子供向けと言われるScratchですが、伊藤真著[1]にはゲームの形で、強化学習(3段階に分けたQ学習)が、実に丁寧に説明されています。大人にも有用と思われます。本記事では、このうちの最初の例題(レベル1)を対象として、(小生独自の改造も加えて)強化学習を詳しく観察します。

2021年7月10日土曜日
今いちど強化学習のCartPole(倒立振子)問題
強化学習の定番例題のひとつに、CartPole(倒立振子)があります。多くの場合、ポールの初期状態をほぼ真上(北向き)にしていますが、完全に倒れた真下(南向き)にした場合でも、うまく学習できて、長時間ポールを立て続けることができます。

2021年6月9日水曜日
「強化学習理論入門」の最終章は深層学習だった
強化学習理論入門を書籍[1]で学んできましたが、その最終章(第5章)は深層学習でQ-Learningを行うものでした。ここでその技術を述べることはできませんが、最後の例題「あるけあるけゲーム」でその魅力に浸りたいと思います。

2021年6月4日金曜日
強化学習:モンテカルロ法とQ-Learning
強化学習に関するさらなる続編です。前回のレンタカーショップ問題とは異なり、環境モデルが分からない場合の例としての迷路問題をとりあげます。そして、その解法としての、モンテカルロ法とQ-Learningの性能を観察します。

2021年5月28日金曜日
レンタカーショップ問題(強化学習での行動ポリシー最適化)
強化学習における「状態価値関数」をとりあげてきましたが、今回もその続編です。理論と手法の詳細は参考文献[1]を熟読戴くことにして、ここでは、「レンタカーショップ問題」と呼ばれる複雑な問題がこれに基づいて解けることを楽しみたいと思います。

2021年5月14日金曜日
状態価値関数(ベルマン方程式に基づく)に親しむ(その2)
前回の記事では、ベルマン方程式に基づく「状態価値関数」とは何かをビジュアルに表示して理解しました。そこでは、動き(行動)を決めるための特定の「行動ポリシー」についての状態価値関数を扱ったのですが、今回は、この状態価値関数の値をどの状態においても最大にする(最も優れた)行動ポリシーの自動探索です。

2021年5月10日月曜日
状態価値関数(ベルマン方程式に基づく)に親しむ(その1)
現代AI技術において、強化学習(Reinforcement Learning)は重要です。これをご存じ無い方、または、(実は私もこれに該当しますが)少しは知っているがもっと明確にしたい方のために、ベルマン方程式に基づく「状態価値関数」とは何かをビジュアルに観察して、親しみを持ちましょう。さらに先をめざす手掛かりとして。

2021年5月3日月曜日
小学校で習う「平均」されど「平均」(揺れる平均値)
前回の記事の簡略化バンディット問題では、各ボタンBnが発する乱数(符号付き実数)は、平均Mnで標準偏差1の正規分布としました。このMnは、1ゲーム(1エピソード)中は変わりませんが、操作者には知らせていません。今回は、このMnが(雑音が入るように)ある程度変動する場合を扱います。この条件下で、ある与えられた回数だけ、いずれかのボタンを押して、得られる合計点をできるだけ高くしたい、という問題です。

2021年5月1日土曜日
小学校で習う「平均」されど「平均」(基本編)
日常生活にも多く出現する「平均」は、小学校高学年の算数で習います。それは、AIの重要分野である強化学習(Reinforcement Learning)においても不可欠です。実際、強化学習の書籍[1][2]でもそのように扱われています。そこで、本記事では書籍[1]を参考にさせていただき、改めて「平均」をプログラミングしながら再考したいと思います。

2019年5月29日水曜日
MATLAB EXPO 2019 に参加
MATLAB EXPO 2019 (2019-5-28、グランドニッコー東京台場)に参加しました。断片的になりますが、以下に報告しますので、ご参考になれば幸いです。「強化学習」にも注目。

2019年10月11日金曜日
MATLABの強化学習Toolboxと自作Javaで簡単なGrid World探索
MATLAB(R2019a以降)には、強化学習用のToolboxがある。それを使った簡単なGrid Worldの強化学習例題を試行した。同時に、自作Javaプログラムでも同じ例題を実行して理解を深めた。

2019年10月8日火曜日
「強化学習」の基礎知識を素早く得るには...
強化学習の基本概念や手法を具体的に(お話としてではなく)学びたいという人は多いと思います。それが、20ページの説明を読めば実現できる!という体験を書きました。

2019年5月17日金曜日
強化学習で、強力な「3目並べ」プレイヤーを作る
この記事は、「強化学習」によって、「3目並べ」の強力なコンピュータプレイヤー(スマホアプリ)の作成をめざした報告です。簡単な問題でも良いので、自ら考え、手法を設計し、実装することは普遍の価値があると思います。