このチュートリアルは､ このモジュールのほぼ最後のチュートリアルです｡
ワクワクするような結果を得て､ 動画を見る前に､ 全体を実行するメインのコードを説明します｡
これがメインコードで､ ご覧の通り､ かなり短いものです｡
まず､ ライブラリやモジュールをインポートし､ モデルファイルからactive critic､
trainファイルからtrain関数､ testファイルからtest関数など､ 作成した様々なクラスや関数をインポートします｡
もちろん､ オプティマイザーもインポートしています｡
そして､ 最初のセクションでは､ クラス､ すべてのパラメータ､ そしてこのparamsに入るところから始めます｡
このparamsオブジェクトは､ 学習率､ ガンマ､ タウなどのパラメータを取得するたびに､ このparamsクラスから生成されたものであることを思い出してください｡
では､ さっそく見ていきましょう｡
こちらの1つ目のRが学習率です｡
ですから､ ご覧のように小さな学習率を選んでいます｡
2つ目は､ ガンマパラメーターです｡
今回も8とします｡ 99.
1種類のパラメータ､ 116のプロセス､ 20ステップ､ 最大長10,000のセットを取る｡
そのことを話したのを覚えていますか？
これは､ エージェントが環境の状態に無制限にはまり込まないようにするために設定するパラメータです｡
つまり､ エピソードの長さがこの最大長を超えると､ ゲームが停止してしまうのです｡
そして､ 最終的にはもちろん､ 環境の名前､ ゼロを割り出す｡
ちなみに､ この環境名を変えるだけで､ 他の環境でも遊べるようになります｡
だから､ もしあなたが他のブレイクアウトバージョンや他のアタリゲームをプレイしたいのなら､
このブレイクアウトビジュアルを他のゲームに置き換えればいいのですが､ このブレイクアウトビデオはすでに非常にチャレンジングだと言えます｡
わかりました｡
つまり､ ここにすべてのパラメータがあり､ そこにメイン実行のコードがあります｡
で､ ここで､ この最初の行で何をするのかを見てみましょう｡
1コアに1スレッドを設定しました｡
次に2行目では､ paramsクラスのオブジェクトを作成してすべてのパラメータを取得し､ 初期化を行っています｡
これらのパラメータはすべて､ このパラメータ・オブジェクトに付属する変数があるため､ ここにあります｡
次にシードを設定し､ create entryと関数を使って環境を取得します｡ この環境はbreak out of
zeroという名前です｡
env nameとそのparamsがゼロでブレークアウトしているのがわかります｡
それでブレイクアウトの環境が整うわけです｡
ところで､ これは通常の環境構築の方法とは異なりますが､ 全体のプロセスを改善し､
パフォーマンスを向上させるために､ 実際に最適化された環境を構築するために､ universeのおかげでこのようなことができるようになりました｡
Universeは､ オープンエアーにインストールしたすべてのパッケージが付属しています｡
まあ､ ユニバースのおかげで最適化された環境を手に入れることができましたが｡
ここがポイントです｡
そして､ アクティブクリティストクラスのオブジェクトを作成することで､ 共有モデルを取得します｡
そして､ ここで重要なのは､ この共有モデルが異なるエージェントが共有するモデルであることを理解することです｡
つまり､ 異なるコアに異なるスレッドがあるわけです｡
次の行でスレッドといえば､ メモリを共有する共有モデルですが､ これはコンピュータの共有メモリにモデルを格納して､
すべてのスレッドがたとえ異なるコアにいてもアクセスできるようにしたものです｡
だから､ ここではそうしているのです｡
これを可能にするためです｡
そして､ 共有モデルのパラメータにリンクされたオプティマイザを､ 学習率0として取得します｡
01.
そして､ 繰り返しになりますが､ オプティマイザも共有モデルで動作し､ 次の行で同じように共有メモリを最適化することになるため､
共有であることを理解することが重要です｡
オプティマイザを共有メモリに格納し､ すべてのエージェントがオプティマイザにアクセスしてモデルを最適化できるようにします｡
そして､ プロセスを初期化することで､ テストプロセスは共有モデルを更新せず､ ただそれを使って1つのパートで試し､
スコアをプリントし､ ビデオを録画します｡
つまり､ ここで行われているのはまさに「Target Equals Test」なのです｡
これがテスト工程で､ この工程はそのマルチプリプロセスのほうで得られたものです｡
ここで､ 何をするかというと､ 基本的に独立したスレッドで関数を実行するのです｡
そこで､ P startを実行すると､ この行で初期化された新しいプロセスが開始されます｡
そして､ このappend Pというプロセスで､ プロセスのリストにプロセスを追加しています｡
そして最後にこのループの中で､ 共有モデルを更新して学習させる他のすべての処理を実行するループを行うだけです｡
そして､ このコードの最後の行では､ 基本的にそのようなことが起こっているのです｡
ですから､ もしあなたがその詳細に触れたくないのであれば､ 理解すべき重要なことは､ これが最適な方法でプロセスを実行するということです｡
したがって､ 私たちは皆､ このコードを実行し､ 学習済みのモデルを持ち､ 最終的に結果を見れば良いということです｡
だから､ 早くやりたいんです｡
これはかなりエキサイティングなことになりそうです｡
これからキーロールを探して､ みんなで観られるようにしたいと思います｡
というわけで､ 次回まで､ iをお楽しみください｡