準備はいいですか？
こうしよう｡
まずは､ wisdomのシステム依存部分をすべてインストールしましょう｡
この再生ボタンをクリックすると､ ご覧のように､ pillowやpsi､ piなどの依存関係をすべてインストールし､
さらに､ これを正常に実行するために必要ないくつかの依存関係をインストールします｡
しかし､ pytorchのような残りのすべては､ ジムのモジュールはすでにインストールされています｡
だから､ 本当にすごいことなんです｡
これがGoogle CoLabの良さであり､ コードを実行し､ 最終結果を視覚化することに何の問題も生じないということです｡
わかりました｡
だから､ 実際には1〜2分で終わります｡
では､ ここで早送りして､ 残りのコードの実行については､ またすぐにお会いしましょう｡
わかりました｡
システムのインストールも終盤に差し掛かっているようです｡
依存関係は､ ご覧の通り､ それらをダウンロードし､ インストールしながら､ すべての適切な要件を集めています｡
そして､ 一瞬で､ 正しく仕上げること｡
そして､ 見てみましょう｡
3､ 2
これでよしとしよう｡
すべてのインストールに成功しました｡
ここでは､ これらのエラーは気にしないでください｡
これらはコードの実行に影響を与えませんが､ 私たちが望むようにすべてが正常にインストールされています｡
さて､ それでは次のステップです｡
とても重要なことです｡
この重要なノードをご覧ください｡
依存関係をすべてインストールした後､ 基本的にはこの最初のセルを実行した後に､ ランタイムを再起動する必要があると書かれています｡
そうでない場合は､ ここで実行エラーが発生します｡
では､ 早速やってみましょう｡
それはとてもシンプルなことです｡
ここでランタイムをクリックし､ ランタイムを再起動すれば､ はい､ OKです｡
これにより､ ランタイムが復元されます｡
そして今､ 再生ボタンをクリックするだけで､ これらのセルをすべて実行することができます｡
では､ この最初のファイルの画像の前処理からやってみましょう｡
では､ まずライブラリをインポートして､ プリプロセス画像クラスで画像をプリプロセスして､
もうこの体験リプレイの実装に移っていますね｡
よし､ じゃあやってみようか｡
まずライブラリをインポートし､ 次に環境の1ステップを定義します｡
そして､ Step Progressクラスで数ステップ､ ステップの進捗をフォルダーにあるものと全く同じにします｡
そして､ このリプレイメモリクラスを構築することで､ 体験リプレイを実装しています｡
よし､ いいぞ｡
そして､ 3番目のファイルであるI for do me either pyに移り､ まずライブラリをインポートします｡
それから｡
わかりました｡
torchのモジュールを全部インポートして､ openaiとdoomのパッケージをインポートしているので､ ここで少し時間がかかっていますね｡
だから､ ジムとウィズダムとラッパーと｡
だから､ すべて順調です｡
そして､ このパート1に進み､ AIを作り､ 脳を作り､ 体を作り､ そしてすべてを組み立てるのです｡
そこで､ まずCNNクラスで脳を万全にしよう｡
そして､ ソフトマックスボディクラスでボディを作り､ クラスでAIを作りましょう｡
わかりました｡
だから､ すべて順調です｡
そして､ もう第2部へと進みます｡ もちろん､ 深層学習､ 畳み込み学習でAIを訓練します｡
わかりました｡
つまり､ ここにあるものとまったく同じなのです｡
まずはtombで新しいモジュールの入ったdoom環境を手に入れます｡
この点はご安心ください｡
これはエラーではありません｡
そして､ 脳､ CNN､ マックスボディのボディ､ 脳とボディを含むAI全体という異なるオブジェクトを作り､
AIを構築していくことになります｡
わかりました｡
これ､ 実行したっけ？
はい｡
そして､ 経験値､ ステップとリプレイ､ 記憶を客観的なリプレイ記憶として設定し､
適格性追跡を実施します｡
わかりました｡
パフォーマンスを向上させるために
そして､ MAクラスで100ステップの移動平均を作成します｡
そして最後に､ 私の友人たちよ､ 準備はいいか？
さて､ ここからはいよいよ､ 20エポックにわたってAIを学習させるという､ 非常にエキサイティングなパートに入ります｡
さて､ それでは少し長くなりますが､ ご覧ください｡
寸法を大きくしていくので､ 1時間か2時間くらいはかかると思います｡
長すぎると感じる場合は､ 80×80のサイズに縮小してください｡
でも､ この寸法ならもっといい動画が撮れると信じています｡
では､ 準備はいいですか？
3､ 2､ 1､ ゴーでやってみよう｡
よし､ これでトレーニングのコードが実行されるぞ｡
そして､ 数秒後には､ 最初のエポックを見ることができるはずです｡ もちろん､ 負の報酬を持つことになります｡
しかし､ エポックを重ねるうちに､ 少しずつ報酬が増え､ 正の報酬に到達し､ さらに数百の報酬に到達することがわかります｡
まあ､ 実際､ 目指してみましょうよ｡
20回のエポックでは､ 100回､ 200回､ 300回といった具合に､ 最終的な報酬が得られることを期待しましょう｡
はい｡
最初のエポック､ 負の報酬､ -98｡
だから､ 100､ 2,300くらいの報酬で､ すでに素晴らしい結果が得られるだろうと申し上げたのです｡
AIがモンスターを倒したり､ 避けたり､ ベストの方に移動したりするのを見ることができますね｡
これが最初のエポック､ エポック1 -98というわけだ｡
そして､ エポック・ナンバー2には､ もっと良い報酬が待っているかもしれませんね｡
でもね､ 最初はもちろん､ AIは訓練されていないんですよ｡
環境を探っているのです｡
そうですね｡
強化学習における「探索」と「開拓」のトレードオフを覚えていますか？
まあ､ 最初のうちはAIは純粋に探索するだけですが､ それが訓練され､
どんどん賢くなって､ ある程度高い報酬に到達するようになるんです｡
だから､ 最初のうちは報酬がマイナスでも全然いいんです｡
3回/1回のエポックではそうなるかもしれませんが､ 4回目､ 5回目､ 6回目のエポックでは､
ポジティブな報酬が得られるようになり､ さらに102回目､ 300回目あたりで報酬が得られるようになることが期待できます｡
だから､ やっぱりちょっと時間がかかるんですよ｡
だから､ 2時間もここにいたら､ 話すことがなくなってしまう｡
そこで､ どうするかというと､ 今､ 楽しい音楽､ カッコいい音楽をかけるんです｡
そして､ エポック2､ -62です｡
ですから､ すでにある程度の改善はされています｡
それはいいことだ｡
しかし､ エポックが進めば進むほど､ さらに優れた改良があることがおわかりいただけると思います｡
それで､ 私は何を言ったのでしょうか？
はい､ 今からかっこいい音楽をかけて､ アクセラレーションモードでトレーニングを再生します｡
もちろん､ トレーニングの最後には､ 最終的な成果を確認するためにお会いしますよ｡
わかりました｡
そうそう､ そうなんです｡
3, 2, 1, 行け
わかりました｡
そして､ 研修も終盤に差し掛かったところです｡
おめでとうございます｡
運命のゲームという非常に難しいアプリケーションで､ 深い畳み込み学習モデルを学習させるのです｡
では､ まず何を話すか｡
さて､ 期待通り､ 平均報酬は100を超え､ ある程度達成できました｡
では､ 何が重要かというと､ 当然ながら､ エポック数が多ければ多いほど､ より高い報酬が得られるということです｡
例えば､ このモデルをさらに100エポック､ あるいはそれ以上訓練して､ 30400､
500､ あるいは1000の報酬に到達する準備ができたとします｡
まあ､ 遠慮なくやってください｡
例えば､ 夜寝ている間にこれを作動させておけば､ 朝起きたときに､ より良い結果が得られます｡
なお､ ランタイムではGPUを使うこともできますよね？
ランタイムタイプを変更すると､ そうでなければノートブックが再起動するので､ 私はすべきではない｡
しかし､ ハードウェアアクセラレータでは､ GPUやCPUも選択できますが､ それはパフォーマンスを最適化したい場合や､
超ハードなトレーニングを行いたい場合に限ります｡
しかし､ ここでは古典的なものを使っています｡ なぜなら､ これをすべて実行する方法を示したいだけだからです｡
そして､ そこに行く｡
さて､ このカーネルブックにだけ特別なコードを追加して､ 残りのワークブックを実行します｡
もちろん､ AIを実際に可視化します｡
よし､ じゃあやってみようか｡
まず､ ライブラリをインポートしましょう｡
そうですね｡
すべて良好です｡
そして､ 入力された図形と､ 考えられるいくつかのアクションを表示します｡
わかりました｡
ここで､ 「Doom Corridor」の環境では7つのアクションが可能であることを実感することになります｡
つまり､ 前進､ 後退､ 左回り､ 右回り､ 射撃です｡
そして､ 自分を守るとか｡
最後のアクションが何かは分かりませんが､ そんな感じです｡
そして､ これが入力枠の寸法です｡
これは､ フレームの高さに相当します｡
高さは240ピクセルです｡
これは､ フレームの幅に相当しますよね？
320の大きさです｡
これは､ 私たちがカラー画像を使って仕事をしていることと､ この3つが私たちのチャンネルの3つの要素に対応していることを表していますね｡
では､ 次のセルを実行し､ 環境を1フレーム表示させて､ どんな感じか見てみましょう｡
そして実際に､ 作業している環境を見るのに便利なことを思い出してください｡
ここでは､ 「破滅の回廊」にいることがわかりますが､ もっといろいろな環境で実験したい場合は､
実は､ このメインページにもあることを思い出してください｡
ここです｡
はい｡
環境はすべてリストアップされているので､ ぜひ試してみてください｡
だから､ もしよかったら､ もう一回見てみてください｡
まあ､ 実際にお見せすることもできますけどね｡
これを取ってから､ この運命の回廊に戻ろうか｡
そうですね｡
だから､ それをこれに置き換えたら｡
右と私はこれをよく実行します｡
今回は3つのアクションを用意します｡
もちろん､ もっとシンプルなもので､ このセルをうまく実行すれば､ この環境が見えてきますよね？
これは､ AIがどのような環境でどのような働きをするのか､ 手早く確認できる方法なのです｡
わかりました｡
では､ 知恵の輪の話に戻りましょう｡
次のセルに必要な場合に備えて､ 今すぐ再実行しましょう｡
よし､ 完璧なドゥームコリドーだ｡
では､ 最後のセルに移りましょう｡
つまり､ これは可視化のために使われるヘルパー関数なのです｡
では､ このセルを実行して､ 今度は1つのエピソードでAIを動かしてみましょう｡
なぜなら､ 基本的には､ 各ステップで特定の状態になり､ その状態の中でアクションを行い､
報酬を得て､ 次の状態に到達するという､ 1話分の放送を実行するためのプロセスだからです｡
これが古典的なMDPのプロセスなんですね｡
マルコフ決定過程｡
そして､ こうなりました｡
それは1話分で終わりです｡
そして最後に､ 20ドルで訓練したAIが100以上の報酬に到達できたゲームプレイのビデオをご覧いただきます｡
これはかなり良い結果を得ることができますが､ ベストには到達しないかもしれません｡
でも､ いいんです｡
それは自分で実験してください｡
そして､ このフルボタンをクリックしていただきたいと思います｡
これらのフォルダには､ 結果のフレームや､ JS､ ファイルなどの要素が含まれています｡
しかし､ 本当に気になるのは､ 最終的な映像です｡
そして､ この再生ボタンをクリックすると､ このメインフォルダに入力されるのがわかります｡
見逃さずに､ 大丈夫です｡
セルがすでに実行されたように見える､ ということですね｡
しかし､ それは数秒後にわかることです｡
ここでは､ AVIファイルという動画ファイルが入力されているのが確認できます｡
10秒くらいで表示されます｡
なんならカウントダウンもしますよ｡
では､ こうしてみましょう｡
そして､ 10､ 9､ 8､ 7､ 6､ 5､ 4､ 3､ 2､ 1､ GO｡
そして今､ 本当に数秒後に表示されるはずです｡
そうだ､ そうだ｡
わかりました｡
で､ エージェントゲーム｡
再生してくれ､ アヴィ｡
それがあなたのビデオです｡
では､ ダウンロードしてみましょう｡ あなたのコンピューターにダウンロードされますので､ ここにあります｡
そうですね｡
それがビデオエージェントゲームなんですね｡
FBIを演じる｡
必ずVLCなどのコーデックを搭載したビデオプレーヤーで開いてください｡
そうですね｡
Macの場合､ quicktime playerでは動作しませんが､ VLCでは間違いなく動作します｡
それでは､ 早速､ 動画をご覧ください｡
わかりました｡
そこで､ ここで一旦停止をさせてください｡
わかりました｡
では､ その映像をご覧ください｡
そして､ ご覧のように､ これが256×256の枠の寸法です｡
ですから､ ご覧の通り､ あまり大きくはありません｡
そうですね｡
だから､ 80×80ではなく､ どうしてもこのサイズでやりたかったんです｡
では､ 次に映像をご覧ください｡
これはAIが1つのエピソードでドゥームを演じていて､ モンスターを殺さずに避けなければいけないということですね｡
ベストに到達するためには､ 前に進まなければならないのです｡
では､ その成果をご覧ください｡
3対1ゴー
わかりました｡
だから､ まず撃たれて､ 前に進むんだ､ いいね？
そして､ モンスターに殺されてしまった｡
でも､ それでもかなりいい｡
ベストに到達することで最高の報酬が得られるのだから､ ベストに向かって前進しなければならないことを理解していたんですね｡
もちろん､ このゲームでベストに到達して勝利する映像を本当に見たいのであれば､
基本的にはもっと多くのエポック数で目を訓練する必要がありますし､ 目の脳のチューニングや学習率のチューニングなど､
他の種類の改善も行うかもしれません｡
例えば､ AIが1000以上の報酬を達成したときの映像とか､ すごい映像を手に入れた人がいたら､
いろんな選択肢がありますよね｡
では､ Q&Aで遠慮なく教えてください｡
他の学生も手に入れたら超喜ぶと思います｡
わかりました｡
というわけで､ ディープな畳み込み学習モデルの実装はいかがだったでしょうか｡
さて､ 次のパートに進みますが､ それは､ ブレイクアウトのゲームをプレイするために実装する､
A3キーモデル､ さらに優れた､ より強力なモデルについてのものです｡
では､ 次のパートでお会いしましょう｡
そしてそれまで､ お楽しみに｡
I.