こんにちは､ 深層畳み込み学習でAIをトレーニングするパート2へようこそ｡
そうなんです｡
ニューラルネットワークのアーキテクチャ､ 身体､ アクションの演じ方､ すべてにおいてAIを構築したところで､
いよいよこのAIを深層学習､ 畳み込み学習で鍛えていくことになります｡
今後は､ 経験値再生､ キュー値との連動､ 報酬との連動､ さらにトレーニングプロセスを改善するためのボーナスとして､
適格性追跡というものを導入する予定です｡
Eligibility traceは､ 報酬を数段階に分けて蓄積していく強力な手法であり､ 以前は遷移ごとに手がかり値を学習していたのに対し､
この報酬の蓄積に対して手がかり値を学習するため､ 今回は1つの報酬だけでなく､
複数の報酬を得てから手がかり値を学習していくことになります｡
つまり､ 次々に遷移してその都度キュー値を更新するのではなく､ キュー値はステップごとに更新されることになります｡
なぜなら､ 適格性トレースはむしろステップ適格性トレースと呼ばれ､ MNはキュー値が更新されるこの番号になるからです｡
そして､ このモデルでは､ イコール10を使用することにします｡
ということは､ 10ステップの適格トレースになるので､ この10ステップで報酬を蓄積した後､
10ステップごとにキュー値を更新して学習していくことになりますね｡
つまり､ 我々のモデルをより強力にするためのボーナスなのです｡
そして､ 最終的には卓越した結果を得ることができるのがおわかりいただけると思います｡
最終的な仕上がりを見たときは､ 本当に驚きました｡
以前は､ 実行に時間がかかるモデルを手掛けていました｡
AIの訓練に時間がかかったが､ これを見ればわかるだろう｡
さらに､ 私たちが作った神経ネットワークは､ 私たちの脳であり､ 私たちの体であり､
マックス､ 私たちは非常に強力な道徳を得ることになります｡
私の言っていることが理解できるでしょうか？
そこで､ このパート2では､ まずdoom環境を手に入れることから始め､ 実際に私がコードの行を用意します｡
作業ディレクトリのフォルダにある画像前処理の外部ファイルを使用しているだけです｡
ですから､ 基本的には､ むしろ最初にこのコード行を取り､ ゼロのパチスロコードを作るジムです｡
ドゥームコードオブゼロは､ 今やっているゲームの環境名ということですね｡
そこでまず､ これで環境をインポートします｡
オープンジムのチュートリアルにあるように､ このプリプロセス画像クラスを使って､
ニューラルネットワークに入る画像を事前に処理し､ 寸法が80×80の正方形になるようにプリプロセスしています｡
ニューラルネットワークでは､ 入力画像の寸法を1×80×80に設定しているので､ 1がチャンネル数だと覚えておいてください｡
それで､ 1つはモノクロの画像を扱うということです｡
ここがグレースケールなんですね｡
そして､ 80×80というのは､ 入力画像の寸法が80×80になるということで､ それをニューラルネットワークに設定するのです｡
しかし､ もちろん､ 画像を入力するときにこれを指定する必要があり､ このプリプロセス画像クラスでは､ まさにそれを行っているのです｡
そして､ 入力画像の正しいフォーマットで環境をインポートした後､ まあ､ この行のコードでビデオと一緒にゲーム全体をインポートしています｡
そして､ これのクールなところは､ 最終的に私たちのAIがドゥームをプレイしているビデオを見ることができることです｡
そのため､ モンスターをどのように倒すのか､ ベストに到達しようとするのか､ すべてを見ることができます｡
だから､ とても楽しみなんです｡
そして､ これらの動画はこのvideosフォルダに入ることを忘れないでください｡
わかりました｡
そして最後の行ですが､ ここが重要なのでお見せします｡
それはもう､ 私たちが作っているAIとの関連性の方が強いですね｡
さて､ このニューラルネットワークは､ 数字のアクションを入力として受け取ることを思い出してください｡
それは､ いくつかの環境で､ いくつかの運命の環境で､ 簡単にテストできるAIを作りたいからです｡
そして､ 運命の環境が異なれば､ 行動数も異なるので､ この行動数の変数をCNN（脳）の入力として指定します｡
したがって､ これから行うのは､ 先ほどインポートして作成したdoom環境を使って､ この変数にこのnumber
actionsを取得することです｡
そして､ 後にこのこれから作るナンバーアクションの変数が､ 脳のインプットとなるのです｡
では､ こうしてみましょう｡
このリアルナウな可変アクション数をご紹介しています｡
だから､ アクションの数は等しい｡
今度はドゥーム環境です｡
それが､ 今回作った変数です｡
ドゥーム環境､ そしてここにドットを追加して､ さて､ どうでしょう｡
私たちは､ ここで初めてアクションスペースをとります｡
それは､ 自分の行動とセットになっているのです｡
ぜひ､ オープニングからご覧になってください｡
ホイルは､ オープンエアーのジム環境の仕組みを理解するために､ その仕組みを見ているんです｡
しかし､ 基本的にはこれがアクションのセットです｡
そして､ このアクションの集合から､ 環境にあるアクションの数にアクセスすることができます｡
そして､ これを行うには､ ここでそれを追加し､ DNはアクションの数であるため､ ドゥームとそのアクション空間ドットnは7を返します｡
アクションが7つあるので､ 7が返されます｡
冒頭のドゥーム環境では6つのアクションが見られますが､ 走ることもできるので､
前進､ 左移動､ 右移動､ 左折､ 右折､ 撮影ができるのだと思います｡
それに､ 私たちは走れるんです｡
ということは､ 7つのアクションになりますね｡
わかりました｡
そして､ 私たちが持っているドゥーム環境､ アクションの数を取得するのはこれで終わりです｡
つまり､ 私たちの脳に必要なものは､ 今のところすべて揃っているのです｡
そして､ CNNと呼ぶことにするオブジェクト､ 脳のオブジェクトと最小限の文字を作るだけです｡
そして､ init関数は引数としてアクションの数を受け取るので､ まあ､ これから作るCNNオブジェクトにアクションの数を入力することになる｡
そしてもちろん､ 肉体を作り､ やがて死んでいく｡
そのため､ 次のセクションでは､ AIを構築する､ と呼ぶことにします｡ 今､ 私たちは好きなだけ目を作ることができるからです｡
それがオブジェクト指向プログラミングのすごいところです｡
私たちは好きなように目を作ることができるので､ 洗練された脳を持つAIを作ろうと思っているのですが､
それはまさに次のチュートリアルで行うことです｡
それまではお楽しみに｡
I.