こんにちは､ 私の友人たち｡ そして､ 深い畳み込み学習モデルの結果の視覚化に関するこの新しいセクションへようこそ｡
まず､ 深層畳み込みニューラルネットワークの実装をすべてやり遂げたことに､
心からおめでとうと言いたい｡
そしていよいよ､ 作ったAIの結果を可視化する楽しいパートに突入です｡
そして､ 前回のチュートリアル､ つまり実装の最後のチュートリアルの最後に言ったように､
サプライズがあると言ったんです｡
で､ まあ､ その驚きはまさにこれ｡
その結果をGoogle CoLabで可視化するのです｡
それがなぜ､ 良いサプライズになるのか？
それは､ 基本的にコードを実行し､ コードを実行し､ 結果を可視化することに全く問題がないため､
良い驚きです｡
確かに､ これはコースの新しい機能です｡
これ以前は､ 実際にPythonでSpider上のコードを動かしていたのですが､ パッケージやpytorch､
gymの依存関係､ いろいろな依存関係をすべてインストールするのは非常に大変でした｡
実際に多くの学生が､ すべてをインストールするのに膨大な問題があり､ 最後にはほとんどの学生が､ コード全体をうまく動かすことができず､
ほとんどの場合､ 最終的な結果を見ることができなかったのです｡
だから､ 絶対にこれを直したかったんです｡
そして､ 私が考え出した最良の解決策は､ コード全体を含めることでした｡
つまり､ このパートで実装したものと全く同じコードが出来上がるわけです｡
しかし､ 私はGoogle CoLabノートブックにコード全体を含めました｡ このコードを実行し､ 結果を視覚化するために必要なことは､
ここにある再生ボタンをクリックすることだけです｡
Google CoLabの良さは､ ほとんどのライブラリやパッケージがすでにインストールされていることなので､
やることはそれだけです｡
例えば､ TensorFlowは既にインストールされていますし､ PyTorchはtorchモジュール､ 関数､
クラスが全てインストールされていますので､ インストールする必要はありません｡
しかし､ すべてがうまく接続されていることを確認するために､ まだいくつかの小さな依存関係をインストールする必要があります｡
しかし､ 自動運転車のようにターミナルやAnacondaプロンプトからインストールする必要はないでしょう｡
この最初のセルで､ この再生ボタンをクリックして､ 知恵のためのシステム依存をインストールする必要があります｡
さて､ 皆さんの中には､ こんなことを思っている人もいるかもしれませんね｡
なぜ､ 自動運転車にも同じことをしなかったのでしょうか？
しかし､ 残念ながら､ 自動運転車のモジュールでは､ ユーザーとのインタラクションがあったため､ 同じことはできませんでした｡
地図上に感覚をプロットして､ 道路を設計したり､ 障害物を置いたりするわけですが､
残念ながら､ Google CoLabには､ 地図とユーザーとのインタラクションを可能にする機能がまだありません｡
だから､ 自動運転車にはできなかったんです｡
それは申し訳ないのですが､ そのために､ 私の本の「クラッシュコース」の全章に､ 自動運転車に関するすべての説明が書かれているものをお渡ししたのです｡
とにかく全部ちゃんとインストールしてほしい｡
Doomに比べるとインストールするものが少なかったので､ 自動運転車はすべてうまくいったと思います｡
しかし､ ここでドゥームのために｡
これでカバーできる｡
コードを実行し､ 結果を可視化するのに苦労することはないでしょう｡
だから､ それが驚きなんです｡
気に入っていただけたら幸いです｡
では､ この実装の全体像をお見せしましょう｡ このパート2で実装したものとまったく同じコードであることがおわかりいただけると思います｡
ただ､ 3つのコードを合体させただけです｡
これは､ フォルダ内にあったコードで､ 画像の前処理（pファイル）､ 体験の再生（pファイル）､
そしてAI（pファイル）の2つのパートから構成されています（パート1はAIを構築し､
パート2はAIを訓練する）｡
さて､ 私が単純にやったことは､ まず画像の前処理をpファイルにして､ 3つを統合したことです｡
それはワークブックでお見せします｡
次に2つ目は､ 体験です｡
Pファイルを再生し､ 3つ目はAIを再生する｡
そこには､ Pがちょうど1つ下に順番に落ちていた｡
そこで､ これをあなたにお見せします｡
そして､ このコード全体の中で2つか3つだけ変更する必要がありました｡ その変更点を正確にお見せしますので､
その違いを確実にキャッチしてください｡
基本的に､ そのファイルでは､ すべてが同じであり､ そのファイルでも､ すべてが同じである｡
しかし､ そのファイルには全く変化がありません｡
さて､ ここではOpenaiとZoomのパッケージをインポートする際に､ まあPパッケージのdoomのラッパーアクションスペースを使って離散にインポートしているわけではありません｡
もう使っていないんです｡
他のものを使うから､ 見ていてね｡
また､ ここのフレームの寸法を80×80から256×256に変更しました｡
そうすれば､ より大きな動画を見ることができるので､ 確かに良い映像化結果を得ることができます｡
それを変えただけです｡
見せてあげるよ｡
さて､ 画像処理からですが､ 確かに､ 先ほどお話したように､ 3つのファイルを合成しただけですからね｡
そこで､ まずはp yを押して､ indeedの画像を表示します｡
そして､ ご覧の通り､ これは全く同じです｡
まず､ ここにあるのと全く同じライブラリをインポートすることから始めます｡
そして､ initメソッドとobservationメソッドからなるプリプロセス画像クラスで画像をプリプロセスします｡
そして､ ご覧の通り､ これは全く同じ処理前の画像です｡
その中で､ 方法と観察方法｡
では､ 次に体験リプレイに移りますが､ ここでもまったく同じことが言えます｡
実際､ 私たちはここで初めて2つのライブラリを採用しましたが､ いずれも名前ではありません｡
右をタップしてください｡
そして､ ここと全く同じように1つのステップを定義します｡
そして､ ワークブックと全く同じようにStep Progressクラスで数歩､
数十歩の進捗を行います｡
そうですね｡
ここにコピーペーストをしただけです｡
initの方法は全く同じです｡
方法であり､ 報酬ステップの方法です｡
もちろん､ リプレイメモリクラスで経験値リプレイを実装しています｡
そして､ ご覧の通り､ Googleのコラボでも全く同じものを用意しています｡
さらに､ テキストセルを追加したことで､ 構造をよりよく理解できるかもしれません｡
だから､ このワークブックで視覚化すると､ もっと素敵になりますよ｡
わかりました｡
そこで､ メモリクラスのinitメソッドのサンプルバッチ実行ステップを再生すると､ 基本的に全く同じコードになります｡
わかりました｡
そして､ 3つ目のファイルAPI､ freedom APIに移ります｡ このAPIは､ 2つのパート､ パート1､ AIの構築､ パート2､
APIのトレーニングが含まれています｡
では､ このワークブックに全く同じものがあることをお見せしましょう｡
そこで､ Freedom APIでは､ まず､ まったく同じライブラリをインポートします｡
そうですね､ ご覧の通りです｡
では､ ここで､ OpenaiとDhoomのパッケージをインポートする際に､ すでに強調した違いです｡
gemのラッパーをインポートして､ ラッパーを飛ばしてパックしてスクリプトにインポートするのではなく､
同じgemをインポートして､ 新しいdoomの環境であるdoomed gemをインポートすればいいんです｡
そして最後に､ ジェムライブラリーによるラッピングです｡
わかりました｡
この差分だけで､ Google CoLabでもPythonでも動くようになります｡
そして､ ここでは､ もちろん､ Google崩壊の中にそのコードを含める必要はありません｡ なぜなら､ ここでは､
他のファイルが分離されているので､ ここでインポートするからです｡
そして､ Google CoLab上で3つのファイルをマージしたので､ まあ､ このインポートは必要ないですね｡
ここで､ ポート1に直接移動して､ APIを構築します｡ ここでは､ 先ほどお話したように､ 寸法以外はまったく同じコードになっています｡
そうですね｡
このポートワン､ ポートワンビルIIを見ると､ まずCとクラスで脳を作るところから始まります｡
そして､ ご覧の通り､ 入力フレームの寸法以外は全く同じコードになっています｡ このコードは､
80×80のコードを実装したときのものです｡
しかし､ Google CoLabではそれを256×256に変更し､ より良いフレームを表示できるようにしたため､ より良い動画を見ることができるようになりましたが､
それ以外は全く同じです｡
ここでは､ CNNクラスで脳を作り､ ソフトマックスバディクラスでバディを作ることにします｡
つまり､ ここにあるものとまったく同じなのです｡
そして最後に､ 脳と体を含むクラスと､ 動作を実行するための何らかのメソッドで全体をまとめます｡
そうですね､ まったく同じです｡
体の中にある脳から構成されるクラスで､ その後､ 同じ方法でアクションを実行します｡
わかりました｡
だから､ まったく同じです｡
入力枠の寸法が変わっただけです｡
そして､ 第2部も全く同じ内容で進めていきましょう｡
まず､ ドゥーム環境を整える｡
ここで､ その2もお見せしましょう｡
我々は､ 最初にdoom環境を取得し､ ここでは､ もはや環境をインポートするためにパケットを使用しないので､ 代わりにこのdoomを覚えています｡
まあ､ そのコードで変わったのは､ 確かにここの部分だけなんですけどね｡
確かに知恵の廊下はありますが､ これとまったく同じ環境です｡
わかりました｡
そして､ もちろん､ この新しい次元を変えて､ ここに大きな動画ができるようにします｡
つまり､ もはや80×80ではなく､ 今度は256×256なのです｡
そして､ 同じように「運命」を手に入れ､ アクションの数は7つになります｡
そして､ 脳のオブジェクト､ つまりCNNを作り､ 次に体のオブジェクト､ ソフトマックスボディを作り､
脳と体からなるAI全体を､ 一緒に実装したものと全く同じように作り上げます｡
わかりました｡
そして､ 経験値リプレイを設定しました｡
ここも全く同じなんですね｡
そして､ まだ全く同じように適格性追跡を実施します｡
そして､ どうするのか？
まあ､ 100歩譲って移動平均は作るんだけどね｡
こちらも同じです｡
つまり､ まったく同じコードなんですね｡
基本的にはフレームの寸法と環境の取り込み方だけが変わりました｡
そして最後に､ まったく同じコードでAIを学習させます｡
ここまでは､ ダウンロードしたときにフォルダにあったコード全体､ つまりコード内のデータセットです｡
そして､ 基本的には一緒に実装したコード全体も持っています｡
しかし､ Google Labで可視化するために､ このコードを追加しましたが､ このCoLabノートブックにのみ､
また､ 可視化にのみ特化したコードです｡
そのA． I. を､ ドゥーム環境でのアクションでお楽しみください｡
ここにあるすべてのコードを理解することに悩む必要はありません｡ なぜなら､ ドゥーム環境でプレイするAIを構築し､
訓練したいときに､ 人生で一度だけ見ることになるからです｡
どういうことかというと､ AIを構築して学習させる際に､ 他のアプリケーションでこのコードを使う必要がなくなるということです｡
だから､ このコードについてはあまり気にしないでください｡
Google CoLabで動作させるために追加しただけなのですが､ どうでしょう｡
まず､ 当然のことながら､ ライブラリをインポートします｡
そして､ アクションの数がすぐにわかるように､ 実用的なコードを追加し､
環境のフレームを表示するようにしました｡
そして､ なぜそれを付け加えたかというと､ 実はドゥーム環境はたくさんあるので､ 他のドゥーム環境での遊び方も紹介しようと思っているからです｡
そこで､ 知恵の廊下を､ ここにある他の環境の名前に置き換えるだけでいいのです｡
このチュートリアルの直前まで､ そのページのリンクを貼っておきますね｡
しかし､ ここではご覧のように､ たくさんのドゥーム環境を用意して､ 遊んでもらうことができるのです｡
知恵の基礎､ 知恵の回廊､ これは今遊ぼうとしているものですが､ 知恵の防衛センター､
その他､ 室内迷路もありますし､ ここの指示に従うだけでいいんです｡
このフォルダの中に､ このinitメソッドですべて見つかります｡
ここで名前を探すだけでいいんです｡
ウィズダム・ベーシック､ ウィズダム・コリドー､ ウィズダム・ディフェンス・センター｡
しかも､ たくさん､ たくさん持っているじゃないですか｡
ですから､ 他のドゥーム環境でも遊びたい方は､ ご自由にどうぞ｡
環境名を変更するだけです｡
このワークブックでドゥームコリドーを見るたびに､ それを名前に置き換えるだけでいいのです｡
そして､ このコードとこのコードのおかげで､ まあ､ アクションの数が何であるか､ 入力されたシェイプの寸法､
また､ 環境がどのように見えるかを確認するためのフレームの表示もすぐに分かるようになります｡
だから､ これはかなり実用的でしょう｡
そして､ この可視化用のヘルパー関数を作っただけです｡
そして､ AIを学習させた後に､ もちろん1エピソードで走らせています｡
そこで､ まずはここでトレーニングします｡
ご覧のように､ エポック数を100から20に変更したことをお伝えするのを忘れていましたが､
これは単にフレームの寸法を大きくしたためです｡
そして､ フレームにディメンションを増やすので､ まあ､ 当然トレーニングは難しくなるので､ もっと時間がかかるでしょう｡
そのため､ 100エポックの数を20OCまで減らしました｡
そして､ それで心配しないでください､ 私たちはすでによく､ 肯定的な報酬を得るでしょう｡
しかし､ もちろん最終的にパフォーマンスを向上させ､ 結果を改善したいのであれば､ そのエポック数を自由に増やすことができます｡
さらに良い結果が得られますが､ すでに20エポックと､ 学習にかなりの時間がかかっていることがわかります｡
さてと､ どこまで話したかな？
そう､ それは視覚化のための機能を助けることです｡
そして､ AIを学習させた後に､ もちろん1つのエピソードで動かしています｡
そして最後に､ このコードのセルは､ この1つのエピソードにおけるゲームプレイのビデオを出力します｡
わかりました｡
さて､ 次は実行です｡
本当にゆったりと椅子に座れる時間｡
おいしいコーヒーや紅茶を飲んでほしい｡
あとは､ 各セルにある異なる再生ボタンを押して､ 最終的な結果を実行するだけです｡
では､ こうしてみましょう｡
しかし､ その前に､ これはとても重要なことなのです｡
そして､ Google CoLab｡
つまり､ これは全員がアクセスできるGoogle CoLabのワークブックのリンクなので､ 当然ですが､ 誰かがうまく修正すると､
他の人にも修正内容が見えてしまうので､ 何も修正することができません｡
このワークブックは読み込み専用なので､ 環境名を変更したい､ エポック数を増やしたい､
AIをチューニングしたいなど､ 何らかの変更を加えるには､
このワークブックのコピーを自分のGoogle Driveに作成する必要があります｡
そのためには､ Googleドライブを持つために､ Gmailアドレスが必要になるわけです｡
だから､ 必ず持っていてください｡
そして､ そうなったら､ まあ､ ここのファイルをクリックして､ コピーを保存してドライブすればいいわけです｡
そして､ このワークブックのコピーが自分のGoogle Driveに作成され､ その上でいくつかの修正を行うことができるようになります｡
わかりました｡
そして今､ この実行の始まりです｡
あとは､ すべてのセルを再生して､ どんどん最終的な結果に近づけていくわけです｡