WEBVTT

00:00.270 --> 00:03.890
大家好, 欢迎再次来到第二单元末日｡ 

00:03.900 --> 00:07.830
现在我们将准备开始实现我们的人工智能｡ 

00:07.860 --> 00:13.230
和往常一样, 我们需要做的第一件事是设置正确的文件夹作为工作目录｡ 

00:13.350 --> 00:17.310
所以我们现在就开始这样做, 这样我们就可以继续做更有趣的事情了｡ 

00:17.310 --> 00:25.380
所以像往常一样, 我从我的桌面开始, 然后我去我的人工智能是那个文件夹, 然后模块二现在杜姆｡

00:25.380 --> 00:29.190
这就是我们要设置为工作目录的文件夹｡ 

00:29.220 --> 00:30.120
所以我们开始吧｡ 

00:30.120 --> 00:35.880
现在, 我们单击这里的两个按钮, 然后重新启动内核, 然后是, 我们开始｡ 

00:35.880 --> 00:38.820
现在, 我们有了正确的文件夹作为工作目录｡ 

00:39.210 --> 00:42.210
现在您可以看到, 我们有四个文件｡ 

00:42.210 --> 00:45.990
井实际上在这个工作目录下的3001文件夹下｡ 

00:45.990 --> 00:47.460
让我们从第一个开始｡ 

00:47.460 --> 00:49.980
第一个是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
我们这里有第二个文件, 它是经验重放pi｡ 

01:17.130 --> 01:23.460
所以这次我把经验替换单独放出来, 因为我们已经实现了它｡ 

01:23.460 --> 01:25.740
现在我们要关注的是新功能｡ 

01:25.740 --> 01:32.280
相信我, 我们有很多新的东西要做这个新的人工智能, 因为我们不仅想建立一个人工智能,

01:32.280 --> 01:36.450
但我们想建立一个人工智能击败毁灭战士｡

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:21.360
因为, 你知道, 这一次我们的AI将有眼睛, 这是因为输入状态不再由向量编码, 但这一次输入状态是图像｡

02:21.360 --> 02:30.210
所以我们要做的大型神经网络的第一层是眼睛, 这是卷积神经网络的卷积层｡

02:30.240 --> 02:37.650
但是为了确保这些图像可以被接受作为卷积神经网络的输入, 我们需要对它们进行预处理｡

02:37.650 --> 02:43.920
所以这个文件将负责预处理这些图像, 这样它们就可以进入神经网络｡ 

02:43.920 --> 02:48.720
所以我把这个文件分离出来, 因为这和人工智能没有直接关系｡ 

02:48.720 --> 02:56.430
同样, 我们希望最大限度地利用我们的大脑和记忆, 并将注意力集中在与人工智能相关的一切事情上｡

02:56.460 --> 03:03.510
所以我们把这个分开, 这样我们就可以在手电筒中预处理图像, 为剩下的部分保存一些能量｡

03:03.660 --> 03:05.340
如果你想的话可以看看｡ 

03:05.340 --> 03:10.350
如果你也有深度学习课程, 那么, 你可以看看实用教程｡ 

03:10.350 --> 03:15.240
我们讨论了图像预处理, 但在这里, 我们真的想把重点放在人工智能上｡ 

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
这将是非常令人兴奋的, 因为我们将在一些视频中看到人工智能的表现｡ 

03:36.660 --> 03:41.910
所以我们将从字面上看到人工智能杀死怪物, 并试图向目标跑去｡ 

03:42.090 --> 03:44.310
所以你会看到这将是非常令人兴奋的｡ 

03:44.310 --> 03:52.170
所以第一个视频当然会非常糟糕, 因为AI还没有经过太多的训练, 所以它会很快被杀死｡

03:52.170 --> 03:58.470
但你会看到, 随着训练进展顺利,

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
正如你所看到的, 我已经导入了我们玩末日游戏所需要的所有基本库和包｡

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
当然还有酷刑, 因为我们用pytorch实现了人工智能｡ 

04:29.340 --> 04:34.980
然后我们有火炬和模块, 其中包含了所有的工具来实现一个神经网络｡ 

04:34.980 --> 04:41.430
例如, 该模块将包含卷积层, 这些卷积层将成为我们未来神经网络的一部分｡

04:41.520 --> 04:48.360
然后我们有, 然后这个函数包, 它有一个快捷键F,

04:48.360 --> 04:50.790
它包含了神经网络中使用的所有函数｡

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
来自其他格拉德模块的变量类｡

05:20.220 --> 05:26.010
这就是PyTorch的全部功能, 因为它包含了动态图形, 可以快速计算梯度,

05:26.010 --> 05:30.570
甚至是复合函数的梯度｡

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
最后,

06:04.590 --> 06:11.400
我们需要导入这个包, 它与末日直接相关, 它是动作空间和两个离散的末日包装器,

06:11.400 --> 06:19.470
基本上包含了末日的环境, 更具体地说, 可以玩的动作, 我们要玩的特定末日游戏的动作数量｡

06:19.470 --> 06:21.570
我提醒大家有六个行动｡ 

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
所以这基本上就是你需要导入的东西｡ 

06:30.480 --> 06:37.680
最后, 我们当然需要导入两个内部文件体验重放,

06:37.710 --> 06:47.130
即体验､ 重放和图像预处理, 以预处理图像, 这些图像就是玩游戏时屏幕的图像｡

06:47.130 --> 06:53.640
这些图像会被预处理, 转换成numpy数组, 再整形成某种格式, 然后它们会进入神经网络,

06:53.640 --> 06:57.420
卷积神经网络｡

06:58.160 --> 06:58.610
好吧, 我会的

06:58.610 --> 07:07.610
我想, 现在我们已经准备好开始大规模的实施了, 现在我必须告诉大家,

07:07.610 --> 07:12.170
这将引导我进入本模块的重要一点｡

07:12.200 --> 07:17.290
因为, 你知道, 我告诉过你, 我们有一个大的实施等待着我们｡ 

07:17.300 --> 07:21.560
为了不迷失在这一切中, 我们需要一个好的结构｡ 

07:21.650 --> 07:24.860
所以我已经突出了这个结构｡ 

07:24.890 --> 07:27.750
我们将分两个部分来实现这一点｡ 

07:27.770 --> 07:30.830
第一部分将是关于构建人工智能｡ 

07:30.860 --> 07:34.460
这就是我们要制造人工智能大脑的地方｡ 

07:34.460 --> 07:38.130
而大脑, 正如你所理解的, 就是神经网络｡ 

07:38.150 --> 07:48.140
你知道, 这个大CNN由一些卷积层和一些完全连接的层组成, 以预测仍然是线索值的输出｡

07:48.140 --> 07:50.300
然后我们就可以做人工智能的身体了｡ 

07:50.300 --> 07:53.180
这是我给你们带来的一种新的表现形式｡ 

07:53.180 --> 07:55.370
那就是不要迷路｡ 

07:55.370 --> 08:02.600
您将看到, 我们在代码方面的进展越深入, 您将看到的结构就越多, 最终一切都将变得有意义｡

08:02.600 --> 08:06.380
为了确保这是有意义的, 我们需要一个人工智能的表示｡ 

08:06.410 --> 08:12.570
基本上, 构建人工智能的第一部分将由三个部分组成｡ 

08:12.590 --> 08:17.030
第一节将介绍如何制造大脑, 即神经网络｡ 

08:17.180 --> 08:24.980
第二部分是关于制作身体, 我之所以称之为身体, 是因为这部分会告诉人工智能如何进行动作｡

08:24.980 --> 08:30.860
所以, 你知道,

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:11.660
真正了解正在发生的事情, 而且你将能够使用它作为一个框架,

09:11.660 --> 09:14.870
每当你想建立一个人工智能的其他目的｡

09:15.170 --> 09:15.830
好吧, 我会的

09:15.830 --> 09:24.320
在第一部分构建了人工智能之后, 我们将进入第二部分, 这将是关于实现深度卷积学习模型的｡

09:24.320 --> 09:29.660
同样, 我们将有不同的部分, 其中之一, 当然, 将训练人工智能｡

09:29.960 --> 09:32.030
所以我迫不及待地想一头扎进去｡ 

09:32.030 --> 09:38.840
现在我们要从第一部分开始, 很明显, 我们要从制造人工智能的大脑开始｡

09:39.050 --> 09:42.170
所以我等不及了, 在那之前, 好好享受人工智能吧｡ 
