大家好, 欢迎再次来到第二单元末日｡
现在我们将准备开始实现我们的人工智能｡
和往常一样, 我们需要做的第一件事是设置正确的文件夹作为工作目录｡
所以我们现在就开始这样做, 这样我们就可以继续做更有趣的事情了｡
所以像往常一样, 我从我的桌面开始, 然后我去我的人工智能是那个文件夹, 然后模块二现在杜姆｡
这就是我们要设置为工作目录的文件夹｡
所以我们开始吧｡
现在, 我们单击这里的两个按钮, 然后重新启动内核, 然后是, 我们开始｡
现在, 我们有了正确的文件夹作为工作目录｡
现在您可以看到, 我们有四个文件｡
井实际上在这个工作目录下的3001文件夹下｡
让我们从第一个开始｡
第一个是ADP｡
当然, 这是包含我们的人工智能的文件｡
就是这个文件｡
这是ADP文件, 我们将在其中实现与构建API相关的所有内容, 尤其是构建具有深度卷积学习模型的AI｡
所以基本上这就是我们要进行大冒险的地方｡
然后我们还有一些其他的文件｡
我们这里有第二个文件, 它是经验重放pi｡
所以这次我把经验替换单独放出来, 因为我们已经实现了它｡
现在我们要关注的是新功能｡
相信我, 我们有很多新的东西要做这个新的人工智能, 因为我们不仅想建立一个人工智能,
但我们想建立一个人工智能击败毁灭战士｡
所以你可以想象这将需要一些相当先进的代码｡
所以不用担心｡
我们有一个大的代码等着我们, 你会学到很多新的技巧｡
这就是为什么你已经知道并且我提醒你的这个经验回放技巧可以提高很多训练｡
好吧, 让我们把它单独放在这次经历中｡
我们播放了PI文件, 这样我们现在就可以专注于等待我们的所有新概念､ 技术和技巧｡
好吧, 我会的
然后我们对pi文件进行图像预处理｡
这是另一个Python文件, 它将负责预处理我们的图像,
因为, 你知道, 这一次我们的AI将有眼睛, 这是因为输入状态不再由向量编码, 但这一次输入状态是图像｡
所以我们要做的大型神经网络的第一层是眼睛, 这是卷积神经网络的卷积层｡
但是为了确保这些图像可以被接受作为卷积神经网络的输入, 我们需要对它们进行预处理｡
所以这个文件将负责预处理这些图像, 这样它们就可以进入神经网络｡
所以我把这个文件分离出来, 因为这和人工智能没有直接关系｡
同样, 我们希望最大限度地利用我们的大脑和记忆, 并将注意力集中在与人工智能相关的一切事情上｡
所以我们把这个分开, 这样我们就可以在手电筒中预处理图像, 为剩下的部分保存一些能量｡
如果你想的话可以看看｡
如果你也有深度学习课程, 那么, 你可以看看实用教程｡
我们讨论了图像预处理, 但在这里, 我们真的想把重点放在人工智能上｡
相信我, 我们还有很多事要做｡
最后是最后一个文件夹, 嗯, 那就是视频文件夹｡
如您所见, 现在这个文件夹是空的｡
但是当我们执行代码时, 一些AI玩厄运的视频会被添加到这个文件夹中｡
这将是非常令人兴奋的, 因为我们将在一些视频中看到人工智能的表现｡
所以我们将从字面上看到人工智能杀死怪物, 并试图向目标跑去｡
所以你会看到这将是非常令人兴奋的｡
所以第一个视频当然会非常糟糕, 因为AI还没有经过太多的训练, 所以它会很快被杀死｡
但你会看到, 随着训练进展顺利,
人工智能会越来越好, 最终它会设法杀死一些怪物现在正在被杀死, 希望我们将能够使它达到目标｡
好吧, 我会的
让我们回到AFL, 也就是这个｡
正如你所看到的, 我已经导入了我们玩末日游戏所需要的所有基本库和包｡
那么让我们逐一快速地看一下｡
当然, 我们有numpy, 因为我们将使用数组｡
这是不可避免的｡
当然还有酷刑, 因为我们用pytorch实现了人工智能｡
然后我们有火炬和模块, 其中包含了所有的工具来实现一个神经网络｡
例如, 该模块将包含卷积层, 这些卷积层将成为我们未来神经网络的一部分｡
然后我们有, 然后这个函数包, 它有一个快捷键F,
它包含了神经网络中使用的所有函数｡
所以通常的激活函数, 我们会使用一些整流器激活函数, 但也会使用一些卷积的最大池函数｡
神经网络和所有这些功能都包含在泛函中｡
然后我们有Optim, 当然是针对Optimizer的｡
我认为我们将使用一个原子优化器, 这个优化器包含在Optim中, 然后是PyTorch中最好的,
来自其他格拉德模块的变量类｡
这就是PyTorch的全部功能, 因为它包含了动态图形, 可以快速计算梯度,
甚至是复合函数的梯度｡
所以我们肯定会用它｡
至于自动驾驶汽车, 但相信我的厄运, 我们将非常需要它｡
以上就是基本库的全部内容｡
然后我们需要导入一些与Openai, gym和doom相关的包｡
当然, 我们导入了Jim, 然后我们导入了Jim库的一些包装器模块, 其中一个包装器是Kip包装器｡
这基本上就是导入Jim的所有工具和环境｡
最后,
我们需要导入这个包, 它与末日直接相关, 它是动作空间和两个离散的末日包装器,
基本上包含了末日的环境, 更具体地说, 可以玩的动作, 我们要玩的特定末日游戏的动作数量｡
我提醒大家有六个行动｡
左移, 右移, 左转, 右转｡
往前走开枪｡
进攻｡
好吧, 我会的
所以这基本上就是你需要导入的东西｡
最后, 我们当然需要导入两个内部文件体验重放,
即体验､ 重放和图像预处理, 以预处理图像, 这些图像就是玩游戏时屏幕的图像｡
这些图像会被预处理, 转换成numpy数组, 再整形成某种格式, 然后它们会进入神经网络,
卷积神经网络｡
好吧, 我会的
我想, 现在我们已经准备好开始大规模的实施了, 现在我必须告诉大家,
这将引导我进入本模块的重要一点｡
因为, 你知道, 我告诉过你, 我们有一个大的实施等待着我们｡
为了不迷失在这一切中, 我们需要一个好的结构｡
所以我已经突出了这个结构｡
我们将分两个部分来实现这一点｡
第一部分将是关于构建人工智能｡
这就是我们要制造人工智能大脑的地方｡
而大脑, 正如你所理解的, 就是神经网络｡
你知道, 这个大CNN由一些卷积层和一些完全连接的层组成, 以预测仍然是线索值的输出｡
然后我们就可以做人工智能的身体了｡
这是我给你们带来的一种新的表现形式｡
那就是不要迷路｡
您将看到, 我们在代码方面的进展越深入, 您将看到的结构就越多, 最终一切都将变得有意义｡
为了确保这是有意义的, 我们需要一个人工智能的表示｡
基本上, 构建人工智能的第一部分将由三个部分组成｡
第一节将介绍如何制造大脑, 即神经网络｡
第二部分是关于制作身体, 我之所以称之为身体, 是因为这部分会告诉人工智能如何进行动作｡
所以, 你知道,
首先你有一个大脑来检测图像和预测线索值, 但然后你需要指定人工智能应该如何发挥作用, 它用它的身体来做, 就像人类的身体会做的那样｡
所以身体是我们用来指定动作的方法的部分｡
举个例子, 对于我们的自动驾驶汽车, 大脑是我们制造的神经网络, 而身体则是动作的执行方式｡
也就是说, 是软极大值方法｡
这里也一样｡
我们要做一个大脑, 我们要做一个身体, 它将发挥作用｡
我会让你知道的｡
但这一切的关键点是, 我们将有一个非常结构化的代码, 这样你不仅可以后退一步,
真正了解正在发生的事情, 而且你将能够使用它作为一个框架,
每当你想建立一个人工智能的其他目的｡
好吧, 我会的
在第一部分构建了人工智能之后, 我们将进入第二部分, 这将是关于实现深度卷积学习模型的｡
同样, 我们将有不同的部分, 其中之一, 当然, 将训练人工智能｡
所以我迫不及待地想一头扎进去｡
现在我们要从第一部分开始, 很明显, 我们要从制造人工智能的大脑开始｡
所以我等不及了, 在那之前, 好好享受人工智能吧｡