WEBVTT

00:00.600 --> 00:02.490
大家好, 欢迎学习本教程｡ 

00:02.580 --> 00:09.980
现在, 代理已经完成了它的探索, 接下来他要做的是更新共享网络｡ 

00:09.990 --> 00:14.770
所以我们要做的第一件事就是初始化累积奖励｡ 

00:14.790 --> 00:22.320
我们把它叫做大写的R, 我们把它初始化为火炬张量｡ 

00:22.470 --> 00:25.920
但是它会有一个接一个的维度, 因为它只是一个值｡ 

00:25.920 --> 00:27.590
但我们希望它是张量｡ 

00:27.600 --> 00:33.330
所以我在这里用了点0和一｡ 

00:33.510 --> 00:41.820
所以基本上, 累积奖励初始化为0, 如果我们还没有完成, 也是一样的｡ 

00:41.820 --> 00:43.590
如果游戏还没有结束的话｡ 

00:43.590 --> 00:51.240
我们现在想要的是, 累积奖励等于共享网络最后一次达到的价值｡

00:51.630 --> 01:01.410
我们得到的是价值输出, 我们模型的V函数输出的值, 这是我们给予累积奖励的值｡

01:01.500 --> 01:03.810
我们先得到这个值｡ 

01:04.110 --> 01:11.400
我们可以这样得到它的值, 因为我们只需要在这里加上一个值, 加下划线,

01:11.400 --> 01:19.590
然后再加下划线, 然后我们得到我们的模型, 因为它会输出这个值, 但只是模型的第一个输出｡

01:19.620 --> 01:25.260
感谢这里和这里的双下划线, 我们可以复制粘贴这里的内容｡ 

01:25.290 --> 01:32.990
这是具有输入､ 图像和所有隐藏状态和单元状态的模型的输入｡

01:33.000 --> 01:37.320
我把它贴上去, 就可以得到值了｡ 

01:37.620 --> 01:43.140
现在我们要做的就是把这个值赋给｡ 

01:43.260 --> 01:47.670
所以一切将等于价值和能够获得的价值｡ 

01:47.670 --> 01:49.350
我们在这里添加这些数据｡ 

01:49.590 --> 01:50.220
好吧, 我会的

01:50.220 --> 01:57.240
现在if条件已经完成了, 接下来我们要做的是,

01:57.240 --> 02:05.250
因为我们刚刚得到了一个新值, 通过得到模型的输出, 模型的第一个输出, 我们把这个新值附加到值列表中.

02:05.250 --> 02:13.440
因此, 我们可以直接获取值列表, 然后点追加并输入变量｡ 

02:14.560 --> 02:19.630
啊, 因为我们的这最后一个价值包含得如此之大, 以致于被完成了｡ 

02:19.630 --> 02:25.090
现在, 我们将初始化损失, 并记住直觉讲座｡ 

02:25.090 --> 02:26.200
你有两个损失｡ 

02:26.200 --> 02:28.150
你有保单的损失｡ 

02:28.150 --> 02:31.630
那是最后一个与预言有关的代理人｡ 

02:31.630 --> 02:36.010
然后是价值的损失, 这是与批评者的预测相关的损失｡ 

02:36.010 --> 02:39.640
所以我们要引入这两个变量, 并将它们初始化为零｡ 

02:39.640 --> 02:46.420
因此, 我先取保单变量保单损失, 将其初始化为零, 然后取值损失,

02:46.420 --> 02:51.130
值损失和相同, 将其初始化为零｡

02:51.700 --> 03:05.650
我们不要忘了把累积奖励设为火炬变量因为我们需要把它设为总变量因为我们要计算它的梯度, 因为累积奖励是价值损失的一个项.

03:05.650 --> 03:09.670
因此, 通过这个变量, 它现在被附加到带有梯度的动态图上｡ 

03:10.300 --> 03:15.610
最后, 在开始大训练循环之前,

03:15.610 --> 03:20.590
我们需要做的最后一件事是,

03:20.590 --> 03:28.120
当我们在这种意义上应用随机网格来减少预测和目标之间的损失时, 我们需要将初始化为广义优势估计, 而不是自动编码｡

03:28.120 --> 03:29.170
小心点｡ 

03:29.170 --> 03:35.320
我们现在要初始化的变量是广义优势估计｡ 

03:35.320 --> 03:42.460
因此, 作为提醒, 广义优势估计的定义是,

03:42.460 --> 03:45.010
通过观察状态来进行行动A的优势｡

03:45.010 --> 03:46.720
所以它是动作的函数｡ 

03:46.720 --> 03:47.560
答：还有国家｡ 

03:47.560 --> 03:54.610
它等于Q值q a s和V函数的值之差｡ 

03:54.610 --> 03:56.680
所以我可以写在这里｡ 

03:57.400 --> 04:07.330
广义优势估计是动作和状态s的函数a, 它等于动作的Q值｡

04:07.330 --> 04:08.260
答：还有国家｡ 

04:08.260 --> 04:12.580
S减去应用于该状态的V函数的值｡ 

04:12.580 --> 04:18.940
这是广义优势估计, 这就是我们现在要初始化的｡ 

04:18.940 --> 04:20.770
我们将它初始化为零｡ 

04:21.280 --> 04:22.930
但必须是个火炬舞者｡ 

04:22.930 --> 04:27.410
所以我们要用和刚才一样的技巧｡ 

04:27.430 --> 04:36.640
我们将使用火炬库, 并应用零的函数, 将其设置为只有一个值的张量, 也就是零｡

04:36.970 --> 04:46.510
我们将引入一个新的变量, G, 它将等于手电筒, 当初始化为0时｡

04:46.510 --> 04:48.550
因此, 它将被初始化为零｡ 

04:48.550 --> 04:50.710
从而决定了动作的Q值｡ 

04:50.710 --> 04:55.120
A并且状态将等于状态的V函数的值｡ 

04:55.660 --> 04:56.170
好吧, 我会的

04:56.170 --> 04:58.630
现在我们准备开始for循环｡ 

04:58.630 --> 05:00.340
所以我们要在这里进行一些冒险｡ 

05:00.340 --> 05:04.570
所以, 好好休息一下, 我会在下一个教程中看到你来解决这个问题｡ 

05:04.570 --> 05:05.710
在那之前, 好好享受吧｡ 

05:05.710 --> 05:06.150
一､ 
