こんにちは､ 人工知能のコースにようこそ｡
今日のチュートリアルは､ AIの世界への第一歩であり､ 今日は強化学習についてお話ししますので､
ワクワクしていただけたらと思います｡
このチュートリアルは､ このコースで行われる他のすべてのことの基礎となる､ 非常に重要なチュートリアルです｡
では､ ここからが本題です｡
小さな迷路がありますが､ この迷路は環境を表現しており､ このコースで扱うのはこの迷路です｡
私たちの人工知能が活躍する環境は決まっています｡
行動を起こすことになるのです｡
このような環境に打ち勝つこと､ このような環境で勝つことを目指すのです｡
そして､ ここにはエージェントがいる｡
エージェントは､ 私たちの人工知能です｡
このような環境をナビゲートするのが人間であり､ 特定のアクションを実行するために心が与えるフィードバックから学習するのが心です｡
そして､ この環境下でエージェントがある行動を起こすと､ その結果､ エージェントが置かれている状態が変化するという仕組みになっています｡
だから､ もっと遠いかもしれないし､ 近いかもしれない､ もっと左かもしれない､ もっと右かもしれない｡
その状態を表す他のある種のパラメータを持ち､ それらのパラメータは変化していくかもしれません｡
つまり､ アクションを起こすことで状態が変化し､ そのアクションに応じた報酬も得られるということです｡
だから､ 行動を起こすたびに状態が変化し､ 報酬を得ることができるのです｡
さて､ 時には､ その行動が状態を変えない､ あるいは､ ある状態でその行動をとったとしても報酬が得られないということが起こるかもしれないことを心に留めておいてください｡
そうではありませんでした｡
しかし､ それでもエージェントはそれを続け､ 行動を起こし､ 状態を変え､
報酬を得､ 行動を変え､ 行動を起こし､ 状態を変え､ 報酬を得るのです｡
そして､ そのプロセスを行うことで､ 環境を探索し､ どのような行動が良い報酬や好ましい状態につながり､
どのような行動が悪い報酬や好ましくない状態につながるかを理解し､ 環境について学ぶことになるのです｡
そしてこれは､ 非常にグローバルな問題を非常に単純化して表現したものです｡
そう考えると､ 実は環境は迷路だけである必要はないんです｡
迷路から抜け出したり､ 迷路の中で宝物を見つけたりすることだけが目的ではありません｡
環境というのは､ 人生においてほとんど何でもありなんです｡
では､ 朝起きてオムレツを作っているところを想像してみてください｡
そのオムライスを作るためには､ ある手順を踏まなければならないわけです｡
塩を用意し､ 卵を用意し､ フライパンを用意し､ 火をつけて......と｡
そして､ それは日常的で平凡なことのように聞こえますが､ 何度もやっているうちに日常的になっているのです｡
しかし､ 実際には､ 自分がとっているある行動を実行し､ 火にかけ､
フライパンを火にかけるという環境です｡
フライパンに卵を全部入れて､ 卵に塩を振って､ ひっくり返したりしていませんか？
このように､ ある行動､ ある状態で取っている行動があり､ その行動が他のある状態や､ 時には報酬につながることもあるわけです｡
例えば､ 火をつけて､ 待て待てというのは､ 待つ､ 待つ､ 待ちすぎるという行動をとっているわけです｡
そして､ フライパンに卵を入れるのです｡
報酬は非常にマイナスになりそうです｡
燃えてしまいそうです｡
逆に､ すべての正しい行動を正しいタイミングで行えば､ その効果は絶大です｡
ですから､ 適切なタイミングでアクションを起こすことも非常に重要なことなのです｡
だから､ たとえば卵を入れる前にフライパンに塩を入れるのは､ ベストな方法ではないかもしれません｡
フライパンに卵を入れた後に塩を入れるというアクションを起こすといいかもしれませんね｡
だから､ in the different stateで｡
だから､ それを忘れないようにすることが大切なんです｡
そして同時に､ 正しい順番で､ 正しい状態で､ すべての正しい行動をとれば､
最終的な報酬として､ オムライスを食べることができるかもしれないのです｡
そして､ それは人生の中でとても基本的な活動なんですね｡
しかし､ よく考えてみると､ 実際には環境であり､ あなたはこの環境の中を進み､ タスクを実行するエージェントなのです｡
すでにかなり分かっていることなので､ 特に学ぶ必要はありません｡
でも同時に､ もっとおいしいオムレツを作る方法も学べるかもしれないし､ 特に初めて作るオムレツなら､
きっと失敗するはずです｡
しかし､ そこから学ぶのは､ どのような行動が状態や報酬など､ 人生におけるあらゆることにつながるのかを理解することでしょう｡
例えば､ 株式市場で取引をして､ 売買して､ プラスやマイナスのリターンを返すという意味で､
市場から一定のフィードバックを受けることだってありますよね｡
それも環境であり､ その環境に自分がエージェントとして参加することです｡
車の運転も､ ハンドルを切って､ 加速して､ ブレーキをかけて...と､ 環境からのフィードバックがありますよね｡
そして､ そのフィードバックのひとつが､ 高速道路で許容される制限速度を超えて走っていると､ 警察官からスピード違反の罰金を取られることです｡
そのため､ そこから「それはマイナスの報酬につながるから､ やってはいけないことだ」と学ぶのです｡
だから､ 報酬はプロセスの一番最後にだけある必要はないのです｡
彼らは､ 旅の間中､ プロセスの間中､ ずっといることができます｡
そのため､ これらはいくつかの例です｡
強化学習というのは､ 簡単に言うと､ 犬のしつけのようなものです｡
犬にしつけをするときは､ ある命令を出します｡
そして､ その命令に従った場合､ それを与えるのです｡
ビスケットみたいなのをあげるんですね｡
その命令に従わない場合は､ 「お前は悪い犬だ」と言い聞かせるか､ おやつを与えないだけです｡
そして､ そのプロセスを通じて､ ある状態において､ あるコマンドや何をすべきか､ どんな行動をとるべきかを学習していくのです｡
そして､ その状態とは､ あなたが与えているコマンドのことです｡
そして､ それに基づいて､ 一定の報酬を得ることができるのです｡
もちろん､ AIの世界では､ そこまで複雑ではありません｡
AIにおやつを与えなくてもいいんです｡
ビスケットの袋のようなものを毎回持っている必要はないのです｡
プラス1かマイナス1をつけるだけです｡
だから､ AIの世界では､ このAISを自分たちで作ってきたことが大きなアドバンテージになっているんです｡
だから､ 私たちが彼らに与えている報酬は､ 考えてみれば､ これは本当にクールなことなのです｡
あなたが彼らに与えている報酬は､ 実際には存在しないのです｡
プラスマイナス1とか､ 1とか0とか､ そんなのばかりです｡
つまり､ すべて非実在､ すべて空想のものでありながら､ 同時に素晴らしい結果につながるということです｡
実際には存在しないプラスとマイナスの報酬を与えるだけで､ この素晴らしい人工知能によって､ このような素晴らしいもの､
人工知能を作ることができるのです｡
コストはかかりません｡
しかし､ 同時に､ この結果は「Real World」やあの犬の例と非常によく似ています｡
しかし､ ここでは報酬はデジタルで､ ただの数字です｡
それを踏まえて､ ロボット犬について少しお話します｡
私はこの例が大好きです｡
だから､ これはただのランダムな写真なんだ｡
必ずしもその通りのロボット犬が強化学習によって訓練されているわけではなく､ 一部のロボット犬､ 特に古いロボット犬はそうです｡
そこにアルゴリズムがあるんだろう｡
これは､ プリプログラム型エージェントと強化学習型エージェントの違いを示す良い例だと思います｡
つまり､ 歩き方があらかじめプログラムされたロボット犬ができるわけです｡
それは､ 例えばソフトウェアの中の犬の背後にあるアルゴリズムにそう書いてあるでしょう｡
なるほど｡
つまり､ 歩くためには､ 左足を前に出し､ 左前足を前に出し､ 後ろの右足を前に出し､ 前の右足を前に出し､
後ろの左足を前に出し､ その動作を繰り返す必要があるのです｡
そしてそれは､ 歩くということがこの犬の中の機能であるという定義なんです｡
そして､ 座り方､ 立ち方などが書かれているかもしれません｡
一方､ 強化学習によって訓練されるロボット犬では､ 事前にプログラミングをすることはありません｡
これは､ ドッグにハードコードされたアルゴリズムを内部に持たないという､ ここでのすべてのキーコンセプトです｡
その代わり､ これからお話しすることがありますよね｡
強化学習アルゴリズムに､ 「今いる場所から､ 何も知らない状態で､ 例えば部屋の端まで行くことが目標だ」と言われたとします｡
そして､ あなたができる確かなアクションをご紹介します｡
右足､ 左足､ 右後ろ足､ 右後ろ足､ 左後ろ足のどれを動かしてもいいんです｡
そこで､ できる自由度をすべてご紹介します｡
このように動かすことができます｡
本当に好きになっていいんです｡
つまり､ 自分ができる行動をリストアップし､ 一歩前進するたびにプラス1が報酬となるような仕組みです｡
転倒するたびにマイナス1点､ それだけです｡
そして､ そのまま犬を放置して､ 自分で解決させるのです｡
そこで､ 犬は立ち上がろうとして転び､ 「転ぶたびにマイナス1がつくから､ 転ぶきっかけになったあの行動はしてはいけない」と悟り､
それなら立ち上がるのに役立った他の行動も同様だ､ と｡
そして､ 実験､ 実験､ 実験､ ランダムにいろいろ試しているうちに､ 右前足を動かせば一歩前進できることがわかり､
プラス1点を得て､ 「ああ､ もっとこうすればいいんだ」と気づくのです｡
なるほど､ クールだ｡
だから､ もっとこうすればいい､ もっとこうすればいい､ と学習するようになった｡
そして､ この学習プロセスを通じて､ どうすれば歩けるようになるのかを､ 素早く､ とても素早く理解することができるのです｡
そして､ 自分で考えた犬たちは､ 実はあらかじめプログラムされた犬よりも上手に歩けることがあるのです｡
というのも､ プリプログラムは､ 実際の犬を見ながら､ あるいは自分たちの想像力を駆使して､ どうすればいいかということを考えるからです｡
一方､ 強化学習ドッグは自分で最適化することができ､ AIなのでさらに良い結果が得られることもあります｡
そうすることで､ 同じロボットである犬にサッカーをさせることができるのです｡
普通の犬にサッカーをさせることはできません｡ なぜなら､ アプローチの仕方が違うからです｡
そしてそれは､ おそらく普通の犬がその進化の過程で訓練されたり､ したことのあることではありません｡
一方､ 強化学習ロボットの犬は､ 報酬は何か､ ゴールは何か､ 取りうる行動は何かを教えてあげれば､
サッカーのやり方を簡単に理解することができます｡
一般的な強化学習の仕組みはそうなっているんですね｡
以上が強化学習の簡単な概要です｡
なぜなら､ プリプログラムされたソリューションやハードプログラム､ ハードコーディングされたソリューションとはまったく異なる世界であり､
「もし､ そうでなければ」という条件があるからです｡
これは全く違うので､ これから詳しくお話しします｡
その間に､ 追加の読み物を用意しました｡
だから
裏付けとなる資料が欲しいという方は､ こちらの記事をご覧になってみてください｡
TensorFlowによるシンプルな強化学習ということです｡
10個のパーツがあるんです｡
リンクはこちらで､ コースの中で完全なクリッカブルリンクを見つけることができます｡
リソースはArthur Giulianiによるものです｡
2016年の記事ですが､ このコースに沿って､ その記事から追加情報を得ることもできます｡
しかし､ その記事はTensorFlowを使ったものであるのに対し､ この講座ではPyTorchを使っているので､
実装は違えどインプリメンテーションがあることに留意してください｡
しかし同時に､ このコースで行う学習を補うようなものを､ あちこちで手に入れることができるかもしれません｡
だから､ 確実にフォローしようと考えていなくても､ 素晴らしい記事がフォローされるのです｡
ただ､ 念のため､ その最初の部分をチェックして､ 気に入ったかどうか､ もう少し読んでみたいかどうかを見てください｡
そして､ このチュートリアルでは､ 強化学習について具体的に説明しています｡
Richard Suttonの論文で､ Reinforcement Learning One Introductionというのがあります｡
1998年の論文ですから､ かなり古いものです｡
しかし､ 同時に強化学習についても少し学ぶことができます｡
あのオムライスの例など､ 強化学習が適用できる例もあります｡
また､ 強化学習の一般的な概要もご紹介していますので､ ぜひご一読ください｡
ということで､ このチュートリアルを終わります｡
次回が待ち遠しいです｡
そしてそれまで､ お楽しみに｡
I.