WEBVTT

00:00.270 --> 00:03.890
こんにちは､ そしてモジュール2ドゥームへ再びようこそ｡ 

00:03.900 --> 00:07.830
これから､ AIの実装を始める準備をします｡ 

00:07.860 --> 00:13.230
そして､ いつものように､ まず､ 正しいフォルダを作業ディレクトリとして設定する必要があります｡ 

00:13.350 --> 00:17.310
だから､ もっと面白いことに移るために､ 今これをやっておこう｡ 

00:17.310 --> 00:25.380
そこで､ いつものようにデスクトップで起動し､ 人工知能はあれのフォルダ､ モジュール2は今ドゥームと進みます｡

00:25.380 --> 00:29.190
そして､ これが作業ディレクトリとして設定しなければならないフォルダです｡ 

00:29.220 --> 00:30.120
では､ こうしてみましょう｡ 

00:30.120 --> 00:35.880
ここでこの2つのボタンをクリックして､ カーネルを再起動し､ そして「はい」をクリックすると､ このようになります｡ 

00:35.880 --> 00:38.820
これで､ 正しいフォルダを作業ディレクトリにすることができました｡ 

00:39.210 --> 00:42.210
これで､ ご覧の通り､ 4つのファイルが揃いました｡ 

00:42.210 --> 00:45.990
この作業ディレクトリのフォルダの中に､ 実際には3001のフォルダがあります｡ 

00:45.990 --> 00:47.460
では､ まず1つ目から｡ 

00:47.460 --> 00:49.980
まず1つ目はADPです｡ 

00:50.010 --> 00:54.270
それはもちろん､ 私たちの人工知能を格納するファイルです｡ 

00:54.270 --> 00:56.670
そしてそれは､ ここにあるこのファイル以外にはない｡ 

00:56.670 --> 01:08.430
これがADPファイルで､ APIの構築､ 特に深層畳み込み学習モデルによるAIの構築に関連するすべてを実装することになります｡

01:09.060 --> 01:11.730
だから､ 基本的にはそこで大冒険をすることになる｡ 

01:11.970 --> 01:13.330
それから､ 他のファイルもあります｡ 

01:13.330 --> 01:17.130
そこで､ ここに2つ目のファイルとして､ πを体験するリプレイを用意しました｡ 

01:17.130 --> 01:23.460
それで今回は､ すでに実装しているからということで､ エクスペリエンス・リプレイスを別枠にしました｡ 

01:23.460 --> 01:25.740
そして､ 今度は新しいことに注目したいと思います｡ 

01:25.740 --> 01:32.280
そして信じてほしいのは､ この新しい人工知能でやるべきことはたくさんあるということです｡ 私たちはAIを作りたいだけでなく､

01:32.280 --> 01:36.450
『ドゥーム』を倒すAIを作りたいのですから｡

01:36.450 --> 01:40.920
ですから､ かなり高度なコードが必要になることは想像がつくと思います｡ 

01:41.370 --> 01:42.360
だから心配ない｡ 

01:42.360 --> 01:46.620
大きなコードが待っていますし､ 新しい技もたくさん学べます｡ 

01:46.620 --> 01:53.370
だから､ この経験リプレイのトリックは､ あなたがすでに知っていて､ 私は訓練の多くを向上させることを思い出させることです｡ 

01:53.370 --> 01:55.950
まあ､ 今回の体験では別にしておきましょう｡ 

01:55.950 --> 02:02.430
そのPIファイルを再生することで､ これから待っている新しいコンセプト､ テクニック､ トリックに集中することができるのです｡

02:02.880 --> 02:03.300
わかりました｡ 

02:03.300 --> 02:06.750
そして､ piファイルを画像前処理しているところです｡ 

02:06.750 --> 02:12.270
これはもう一つのPythonファイルで､ 画像の前処理を行います｡ なぜなら､

02:12.270 --> 02:18.810
今回のAIには目があり､ 入力状態がもはやベクトルによってエンコードされるのではなく､

02:18.810 --> 02:21.360
入力状態が画像だからです｡

02:21.360 --> 02:30.210
ですから､ これから作る大きなニューラルネットワークの最初の層は目になり､ それが畳み込みニューラルネットワークの畳み込み層となります｡

02:30.240 --> 02:36.090
しかし､ これらの画像を畳み込みニューラルネットワークの入力として受け入れられるようにするためには､ まあ､

02:36.090 --> 02:37.650
前処理が必要なわけです｡

02:37.650 --> 02:43.920
このファイルでは､ ニューラルネットワークに入れるための画像の前処理を行います｡ 

02:43.920 --> 02:48.720
それで､ これはAIとは直接関係ないので､ このファイルを分離しました｡ 

02:48.720 --> 02:56.430
そしてまた､ 私たちの脳と記憶と集中力を最大限に生かして､ AIに関連するすべてのことに取り組みたいと考えています｡

02:56.460 --> 03:03.510
そこで､ これを別に置くことで､ フラッシュライトで画像を前処理して､ 残りのエネルギーを節約できるようにしています｡

03:03.660 --> 03:05.340
よかったら見てみてください｡ 

03:05.340 --> 03:10.350
また､ ディープラーニングのコースもあれば､ まあ､ 実践的なチュートリアルを見ることができますね｡ 

03:10.350 --> 03:15.240
画像の前処理の話もありますが､ ここでもやはりAIに注目したいですね｡ 

03:15.240 --> 03:17.130
信じてください､ やることがたくさんあるんです｡ 

03:17.610 --> 03:21.540
そして最終的には最後のフォルダ､ そう､ ビデオフォルダです｡ 

03:21.540 --> 03:24.540
ですから､ 今このフォルダはご覧のように空っぽです｡ 

03:24.540 --> 03:31.050
しかし､ このコードを実行すると､ AIがドゥームをプレイしている動画がいくつかこのフォルダに追加されます｡ 

03:31.050 --> 03:36.660
そのため､ AIがどの程度機能しているのかを映像で見ることができるので､ 非常に楽しみです｡ 

03:36.660 --> 03:41.910
ですから､ 文字通りAIがモンスターを倒し､ ゴールに向かって走り出そうとする姿を見ることができるのです｡ 

03:42.090 --> 03:44.310
だから､ これはかなりエキサイティングなことだと思うぞ｡ 

03:44.310 --> 03:52.170
もちろん､ 最初の動画はとてもひどいものになるでしょう｡ なぜなら､ AIはまだあまり訓練されていないので､ すぐに殺されてしまうからです｡

03:52.170 --> 03:58.470
でも､ そうすると､ トレーニングが順調に進んでいるうちに､ AIがどんどん良くなって､ 最終的には今殺されているモンスターもなんとか殺せるようになって､

03:58.470 --> 04:05.730
うまくいけばゴールまで到達させることができる､ ということが見えてきます｡

04:06.480 --> 04:06.900
わかりました｡ 

04:06.900 --> 04:10.680
では､ 今回のAFLに話を戻しましょう｡ 

04:10.680 --> 04:17.820
そして､ ご覧の通り､ Doomをプレイするのに必要なライブラリやパッケージはすべてインポートしておきました｡

04:17.820 --> 04:19.980
では､ さっそく一つずつ見ていきましょう｡ 

04:19.980 --> 04:23.820
もちろん､ 配列を扱うので､ numpyもあります｡ 

04:23.820 --> 04:25.440
それは仕方がないことです｡ 

04:25.440 --> 04:29.310
それから､ ピトーチでAIを実装しているので､ もちろん拷問もあります｡ 

04:29.340 --> 04:34.980
そして､ ニューラルネットワークを実装するためのすべてのツールを含むtorch and inモジュールがあります｡ 

04:34.980 --> 04:41.430
例えば､ このモジュールには､ 将来のニューラルネットワークの一部となる畳み込み層が含まれるわけです｡

04:41.520 --> 04:50.790
それから､ Fというショートカットを持つ関数パッケージには､ ニューラルネットワークで使用されるすべての関数が含まれています｡

04:50.790 --> 04:59.970
活性化関数としては､ 整流器の活性化関数と､ 畳み込みの最大プーリング関数を使うことになるでしょう｡

05:00.060 --> 05:03.600
神経ネットワークとこれらの機能はすべて関数に含まれています｡ 

05:04.020 --> 05:07.730
次にOptimですが､ これはもちろんOptimizerのことです｡ 

05:07.740 --> 05:15.480
アトムオプティマイザーを使うことになると思いますが､ このオプティマイザーはOptimに含まれていて､ さらにPyTorchのベストオブベスト､

05:15.480 --> 05:20.220
他のgradモジュールから変数クラスが含まれています｡

05:20.220 --> 05:30.570
PyTorchにはダイナミックグラフがあり､ 勾配や合成関数の勾配を高速に計算することができるのです｡

05:30.570 --> 05:32.710
だから､ ぜひ使っていきたいと思います｡ 

05:32.730 --> 05:37.680
自動運転車については､ しかし､ 運命のために私を信じて､ 我々は非常に悪いことを必要とすることになります｡ 

05:38.460 --> 05:40.890
というわけで､ 必須ライブラリの紹介は以上です｡ 

05:40.890 --> 05:46.530
次に､ Openai､ gym､ doomに関連するいくつかのパッケージをインポートする必要があります｡ 

05:46.530 --> 05:55.260
そこで､ もちろんJimをインポートし､ Jimライブラリのラッパーモジュールをいくつかインポートする｡ そのラッパーの一つがKipラッパーである｡

05:55.290 --> 05:58.770
つまり､ 基本的にはJimのツールや環境をすべて取り込むことですね｡ 

05:59.040 --> 06:04.590
そして最後に､ インポートする必要がある､ doomに直接関連するパッケージがあります｡

06:04.590 --> 06:11.400
これはアクションスペースとdoomラッパーの2つの分離で､ 基本的にdoomの環境､ より具体的には､

06:11.400 --> 06:19.470
これからプレイする特定のDoomゲームに対してプレイできるアクション､ アクション数が含まれています｡

06:19.470 --> 06:21.570
そして､ 6つのアクションがあることを再認識しました｡ 

06:21.570 --> 06:24.210
左へ移動､ 右へ移動､ 左折､ 右折｡ 

06:24.210 --> 06:25.950
前方に移動して撮影する

06:25.950 --> 06:26.640
攻撃する｡ 

06:27.330 --> 06:27.690
わかりました｡ 

06:27.690 --> 06:30.470
つまり､ doomのためにインポートする必要があるのは､ 基本的にそういうことなんです｡ 

06:30.480 --> 06:37.680
そして最後に､ もちろん､ ゲームをプレイしているときの画面のイメージに他ならない画像を事前に処理するために､

06:37.710 --> 06:47.130
エクスペリエンス､ リプレイ､ イメージプリプロセシングのパイである2つの内部ファイルをインポートする必要があるのです｡

06:47.130 --> 06:53.640
そして､ これらの画像は前処理され､ numpyの配列に変換され､ あるフォーマットにリシェイプされた後､ ニューラルネットワーク､

06:53.640 --> 06:57.420
畳み込みニューラルネットワークに送られます｡

06:58.160 --> 06:58.610
わかりました｡ 

06:58.610 --> 07:12.170
さて､ このIの大きな実装を始める準備ができたと思いますが､ それがこのモジュールの非常に重要なポイントにつながるということをお伝えしたいと思います｡

07:12.200 --> 07:17.290
それは､ あれから､ ほら､ 大きな実装が待っていると言ったからです｡ 

07:17.300 --> 07:21.560
さて､ このように迷子にならないためには､ 良い仕組みが必要です｡ 

07:21.650 --> 07:24.860
それで､ すでに構造を強調したのです｡ 

07:24.890 --> 07:27.750
2回に分けて実施する予定です｡ 

07:27.770 --> 07:30.830
前編では､ AIの構築について説明します｡ 

07:30.860 --> 07:34.460
そこで､ AIの頭脳を作ることになるわけです｡ 

07:34.460 --> 07:38.130
そして､ 脳は､ あなたが理解したように､ 神経ネットワークに他なりません｡ 

07:38.150 --> 07:48.140
この大きなCNNは､ いくつかの畳み込み層と､ やはり手がかりとなる出力を予測するための完全接続層から構成されています｡

07:48.140 --> 07:50.300
そして､ AIの本体を作っていきます｡ 

07:50.300 --> 07:53.180
そして､ それは私がお届けする新しい表現です｡ 

07:53.180 --> 07:55.370
そしてそれは､ やはり迷わないことです｡ 

07:55.370 --> 08:02.600
コードを進めれば進めるほど､ 構造が見えてきて､ 最後にはすべてが意味を成すことがおわかりいただけると思います｡

08:02.600 --> 08:06.380
そして､ その意味を確認するために､ AIの表現が必要なのです｡ 

08:06.410 --> 08:12.570
そして､ 基本的にこの最初のAIを構築する部分は､ 3つのセクションで構成される予定です｡ 

08:12.590 --> 08:17.030
最初のセクションでは､ ニューラルネットワークである頭脳を作ることについて説明します｡ 

08:17.180 --> 08:22.580
第2章では､ ボディを作ることになりますが､ ここはAIにアクションを伝える部分なので､

08:22.580 --> 08:24.980
ボディと呼んでいます｡

08:24.980 --> 08:30.860
つまり､ まず映像を検知してキュー値を予測する脳があるわけですが､ その後にAIがどのようにアクションを演じるべきか､

08:30.860 --> 08:37.640
人間の体がやるように体でやるという指定が必要なんです｡

08:37.820 --> 08:43.790
つまり､ ボディはアクションの再生方法を指定する部分になります｡ 

08:43.790 --> 08:51.380
ですから､ 例えば私たちの自動運転車では､ 脳は私たちが作ったニューラルネットワークで､ 身体はアクションをどう演じるかでした｡

08:51.380 --> 08:53.300
つまり､ ソフトマックス方式だったのです｡ 

08:53.420 --> 08:54.650
そして､ ここでもそれは同じです｡ 

08:54.650 --> 08:59.000
これから脳を作り､ アクションを演じるボディを作ります｡ 

08:59.000 --> 09:00.290
探させます｡ 

09:00.290 --> 09:06.140
しかし､ この中で重要なのは､ 一歩下がって何が起こっているかを本当に理解できるだけでなく､

09:06.140 --> 09:14.870
他の目的のためにAIを作りたいときにいつでもフレームワークとして使えるように､ 非常に構造化されたコードを用意することです｡

09:15.170 --> 09:15.830
わかりました｡ 

09:15.830 --> 09:24.320
そして､ 第1部でAIを構築した後､ 第2部では､ 深層学習､ 畳み込み学習モデルの実装に移ります｡

09:24.320 --> 09:29.660
そして､ そこにもさまざまなセクションがあり､ そのうちの1つは､ もちろん､ AIのトレーニングです｡

09:29.960 --> 09:32.030
だから､ 早く飛び込みたいんです｡ 

09:32.030 --> 09:38.840
さて､ まずはパート1からですが､ 当然のことながら､ AIの頭脳を作るところから始めます｡

09:39.050 --> 09:42.170
だから待ち遠しいし､ それまではAIを楽しんでください｡ 
