WEBVTT

00:00.300 --> 00:02.340
大家好, 欢迎学习本教程｡ 

00:02.370 --> 00:02.790
好吧, 我会的

00:02.790 --> 00:08.910
我们将从模型的第一个文件开始, 也是基于PI建模的最重要的文件｡

00:08.910 --> 00:13.950
在这个文件中, 我们将实现整个模型的大脑, 你知道,

00:13.950 --> 00:15.780
大脑是a3c模型的核心｡

00:15.780 --> 00:21.270
在这个文件中, 我们将创建神经网络, 其中当然会包含一些卷积神经网络,

00:21.270 --> 00:25.470
因为当然, 我们还在做一些深度强化学习｡

00:25.470 --> 00:27.600
所以我们的人工智能还有眼睛｡ 

00:27.600 --> 00:33.090
在这个神经网络中, 我们将整合所有与主动批评模型相关的东西｡ 

00:33.090 --> 00:34.440
而且还有奖金｡ 

00:34.440 --> 00:38.010
正如我告诉你的, 我们正在实现三个最强大的C模型之一｡ 

00:38.010 --> 00:43.050
它的强大之处在于它包含了神经网络的记录,

00:43.050 --> 00:49.140
更准确地说是长期的, 长期的短期记忆, 这样我们就可以了解游戏中发生的事情的时间属性｡

00:49.140 --> 00:54.300
这实际上是输入的时间属性, 这样预测就可以更好｡ 

00:55.050 --> 00:55.950
好了, 我们走吧｡ 

00:55.950 --> 01:02.490
我们正在实现一个非常强大的模型, 它基本上结合了我们在深度学习课程中看到的所有神经网络｡

01:02.490 --> 01:07.980
即人工神经网络､ 卷积神经网络和递归神经网络｡ 

01:07.980 --> 01:13.920
在所有这些网络的核心, 当然有一个a3c模型, 它将使人工智能变得非常强大｡

01:14.100 --> 01:15.120
所以我们开始吧｡ 

01:15.120 --> 01:18.210
让我们攻击这个模型并实现它｡ 

01:18.210 --> 01:24.000
所以我们要从两个函数开始, 这两个函数负责初始化权重, 因为我们有一些神经网络,

01:24.000 --> 01:29.070
所以我们有权重｡

01:29.070 --> 01:38.040
我们只想先做这两个函数这样我们就有了一个工具可以很容易地集成到整个模型中, 神经网络｡

01:38.040 --> 01:42.400
所以这两个函数将被规范化列初始化｡ 

01:42.450 --> 01:50.250
这基本上是一个函数, 它不仅可以初始化一些权重, 而且可以设置权重张量的特定方差｡

01:50.250 --> 01:52.740
这正是我们现在要实现的｡ 

01:52.740 --> 01:57.630
然后, 我们将实现第二个函数, 它将是IT函数中的权重,

01:57.630 --> 02:01.230
它将以最佳的方式初始化权重, 以便于学习｡

02:01.680 --> 02:02.190
好吧, 我会的

02:02.190 --> 02:08.040
一旦我们完成了这两个函数, 我们将开始实现神经网络｡ 

02:08.070 --> 02:08.880
那就开始吧｡ 

02:08.880 --> 02:11.940
让我们快速地创建这两个函数｡ 

02:11.940 --> 02:14.190
所以我从def开始｡ 

02:14.190 --> 02:18.390
然后我会给予这个函数的名字, 这个函数是标准化的｡ 

02:18.690 --> 02:23.570
下划线列, 下划线, 初始化它｡ 

02:24.570 --> 02:25.380
我们走吧｡ 

02:25.380 --> 02:28.690
这个函数只需要两个输入｡ 

02:28.710 --> 02:35.730
首先是我们要初始化的权重和标准差, 因为正如我刚才所说,

02:35.730 --> 02:40.080
我们要为张量权重设置一个特定的方差｡

02:40.080 --> 02:44.760
如果你想知道我们为什么要这么做, 那是因为, 当我们制作神经网络的时候,

02:44.760 --> 02:50.070
根据3C模型, 会有演员和评论家, 我们会制作两个独立的, 完全连接的层,

02:50.070 --> 02:53.610
一个给演员, 一个给评论家｡

02:53.610 --> 03:01.620
这两个完全相连的层都有权值, 我们将为这两组权值中的每一组设置一个标准差｡

03:01.620 --> 03:05.520
所以我们要做的就是为参与者设定一个小的标准差｡ 

03:05.520 --> 03:12.510
大约在0左右｡  01和一个很大的标准差的评论家, 这将是大约一, 我想｡ 

03:12.510 --> 03:18.510
这就是为什么我们要做这个函数, 这样我们就可以很容易地设置标准差,

03:18.510 --> 03:21.750
我们稍后会初始化演员和评论家的权重｡

03:21.750 --> 03:23.070
所以我们才这么做｡ 

03:23.280 --> 03:29.400
现在我们只需要设置一个默认值, 但在初始化权重时, 这个值会发生变化｡

03:29.400 --> 03:31.830
所以让我们选择1｡  0.

03:32.070 --> 03:32.760
好吧, 我会的

03:32.760 --> 03:36.960
现在我们准备定义这个函数里面的内容了｡ 

03:37.170 --> 03:41.790
我们首先要准备的是我们要调用的输出｡ 

03:41.790 --> 03:45.870
所以这个out变量就是这个函数返回的结果｡ 

03:46.140 --> 03:50.100
首先, 我们要做的是初始化它｡ 

03:50.100 --> 03:56.700
正如你们所理解的, 这个输出将是一个权重张量, 它将有一个特定的标准差｡ 

03:56.700 --> 04:01.830
但是在我们设置标准差之前, 我们只需要初始化它, 然后我们在这里设置标准差,

04:01.830 --> 04:06.420
它是这个函数的输入参数｡

04:06.600 --> 04:10.590
因此, 在初始化其敏感权重时, 您可能知道如何进行｡ 

04:10.590 --> 04:11.730
我们已经做过了｡ 

04:11.970 --> 04:21.390
我们将使用我们的火炬库, 并从存储库中取兰德M函数, 该函数将初始化火炬张量,

04:21.390 --> 04:27.150
其随机权重遵循正态分布｡

04:27.330 --> 04:30.900
所以这就是为什么它被称为运行西北和正常｡ 

04:30.930 --> 04:36.240
所以现在我们只需要输入这个张量包含的元素个数｡ 

04:36.240 --> 04:43.050
这个元素的数量当然就是权重的数量, 因为我们实际上是在为这些权重初始化张量｡

04:43.080 --> 04:47.490
为了得到这个元素的数量, 我们可以简单地取权重｡ 

04:48.490 --> 04:53.320
并加上点以得到带括号的大小｡ 

04:53.320 --> 05:00.520
这将给予权重中元素的数量, 这样它将创建一个火炬张量, 所有权重中元素的数量都相同,

05:00.520 --> 05:06.160
并且它将被初始化为服从正态分布的随机权重｡

05:06.760 --> 05:07.240
好吧, 我会的

05:07.240 --> 05:11.380
现在是时候设定我们想要的标准差了｡ 

05:11.380 --> 05:13.360
这是这里的标准差｡ 

05:13.360 --> 05:16.720
所以我们现在要做的是一个简单的标准化｡ 

05:16.720 --> 05:21.250
我们有一个权重的火炬张量, 现在我们想把它归一化｡ 

05:21.370 --> 05:25.600
为了规范化它, 我们只需要写显式计算｡ 

05:25.600 --> 05:34.930
所以我们现在要做的就是把我们的输出, 乘以标准差,

05:34.930 --> 05:40.960
然后再除以我刚才提到的和.

05:40.960 --> 05:44.830
为了得到这个和, 我们要用火炬函数的平方根｡ 

05:44.830 --> 05:50.410
这就是我在这里得到的, 偏态或DT, 这是平方根函数｡ 

05:50.530 --> 05:55.900
在里面我们要输入平方根, 向量的一些权值｡ 

05:55.900 --> 06:05.200
所以我们得到输出, 然后我们使用幂函数, 我们输入, 因为我们想得到和的平方｡

06:05.710 --> 06:08.530
然后我们取和｡ 

06:08.830 --> 06:16.060
在里面, 我们要指定列的索引, 该列包含要求和的权重｡ 

06:16.720 --> 06:22.660
然后分别得到这些权重, 因为我们想把它们加起来｡ 

06:22.660 --> 06:29.350
我们使用乐谱上的扩展作为输出的函数｡ 

06:29.380 --> 06:29.740
好吧, 我会的

06:29.740 --> 06:36.550
这将得到alt的权重, 到目前为止, 它被初始化为一个触摸敏感权重｡ 

06:36.550 --> 06:38.110
这样就得到了所有的权重｡ 

06:38.110 --> 06:43.720
我们取平方和, 然后取平方根, 进行归一化｡ 

06:43.720 --> 06:50.770
事实上, 我们在分子上有这个标准差, 这就确保了它可以写在这里｡

06:51.790 --> 06:58.540
alt的方差将等于标准差的平方｡ 

06:58.660 --> 07:05.860
这个公式可以保证, 我们初始化的权重张量的方差,

07:05.860 --> 07:10.570
等于我们输入的标准差的平方｡

07:10.960 --> 07:18.540
这就是我们如何为未来的演员和评论家设定一个具体的标准差, 我们很快就会做出｡

07:18.550 --> 07:24.130
我们会为演员选择一个小的标准差, 为评论家选择一个大的标准差｡ 

07:24.130 --> 07:27.070
我们将非常容易地做到这一点感谢这个函数｡ 

07:27.580 --> 07:28.060
好吧, 我会的

07:28.060 --> 07:30.400
所以现在我们只有一件事要做｡ 

07:30.400 --> 07:38.140
当然, 留下它是为了返回现在用这个特定标准差归一化的输出｡ 

07:38.770 --> 07:39.220
好吧, 我会的

07:39.220 --> 07:40.240
太完美了｡ 

07:40.240 --> 07:42.590
这是我们要做的第一个函数｡ 

07:42.610 --> 07:47.210
这是第一个我们很乐意用来制造a3c大脑的工具｡ 

07:47.230 --> 07:49.180
我们现在还有一个功能要做｡ 

07:49.210 --> 07:56.980
它是这个函数中的权重, 这个函数我会提醒你初始化权重, 使学习达到最优.

07:57.280 --> 07:59.410
我们将在下一个教程中进行此操作｡ 

07:59.410 --> 08:00.640
在那之前, 好好享受吧｡ 

08:00.640 --> 08:01.180
一､ 
