WEBVTT

00:01.400 --> 00:03.230
嗨, 欢迎回来

00:03.260 --> 00:08.990
在上一节课中, 我们完成了对环境的定义, 我们的价值观,

00:08.990 --> 00:14.330
我们的惩罚和奖励, 以及我们在环境中的行为｡

00:14.360 --> 00:20.600
在这节课中, 我想介绍的是培训, 以及如何培训模型背后的想法,

00:20.600 --> 00:22.880
并帮助你开始｡

00:22.880 --> 00:28.520
然后在下一节课中提供解决方案, 并对所涉及的步骤进行更详细的分解｡ 

00:28.520 --> 00:32.960
因此, 我们需要训练模型所需的训练｡ 

00:33.620 --> 00:38.840
这是一种方法, 我们可以在以下步骤中使用它来训练模型｡ 

00:38.840 --> 00:44.240
我们要选择一个随机的非终结状态, 它就是我们的代理的白色方块,

00:44.240 --> 00:47.210
这就是我们在训练中要开始的情节｡

00:47.210 --> 00:50.360
然后, 我们当然要为当前状态选择一个操作｡ 

00:50.360 --> 00:53.120
我们需要让我们的代理人能够在环境中移动｡ 

00:53.120 --> 00:59.450
所以我们和我们的代理在这个挑战中的行动将使用Epsilon Greedy来选择｡ 

00:59.660 --> 01:05.870
此算法通常会为代理选择最有希望的操作, 但偶尔会选择不太有希望的选项｡

01:05.870 --> 01:10.850
为了鼓励代理人探索环境, 我们确实要找到最优的策略｡ 

01:11.210 --> 01:15.140
然后, 我们要执行所选的操作并转换到下一个状态｡ 

01:15.140 --> 01:16.490
移动到下一个位置｡ 

01:16.490 --> 01:21.200
我这么说的原因是, 我希望你们能思考一下, 如何把它分解成函数,

01:21.200 --> 01:23.060
来解决这个问题｡

01:23.480 --> 01:29.660
接下来, 我们需要获得前往新状态的奖励, 然后计算时间差｡ 

01:29.660 --> 01:37.550
我们必须更新动作对中前一状态的Q值, 如果新的或当前状态是终结状态, 则我们将转到终结状态｡

01:37.550 --> 01:39.380
否则我们就得进行第二步了｡ 

01:39.380 --> 01:43.610
所以整个过程, 我们的目标是运行1000集来训练｡ 

01:43.610 --> 01:55.790
这将为给予或我们的代理商提供足够的机会来计算项目包装区域与示例城市中其他位置之间的最短路径｡

01:56.570 --> 01:57.260
太棒了｡ 

01:57.440 --> 02:02.990
所以请考虑一下你会如何处理这个问题, 我想给予你一个想法来尝试解决这个问题｡

02:02.990 --> 02:08.240
在我们的解决方案中, 我们将使用以下函数｡ 

02:08.540 --> 02:10.700
实际上, 我可以注释掉它, 因为它是一个代码单元格｡ 

02:10.730 --> 02:11.840
我很抱歉｡ 

02:11.840 --> 02:13.250
我们不要美元符号｡ 

02:13.250 --> 02:18.230
我们想注释掉这些, 我会帮助你开始第一个｡ 

02:19.020 --> 02:24.600
总的来说, 我们将使用这些函数来定义训练模型的步骤｡ 

02:24.900 --> 02:29.910
为了帮助你开始, 让我们来看看在python中创建函数时,

02:29.910 --> 02:36.450
我们将如何处理is终端状态, 首先, 我们当然希望按原样定义函数｡

02:37.610 --> 02:39.530
终端状态｡ 

02:40.640 --> 02:45.320
这些是函数的名字, 你们会看到这些名字, 它们会给予你们一个想法, 可能会帮助你们分解它｡

02:45.350 --> 02:51.170
我们要做的是获取当前行索引和当前列索引｡ 

02:52.980 --> 03:02.010
这将有助于给予我们代理人的位置, 我们可以在这里为我们的奖励添加一个true或false｡

03:02.010 --> 03:03.210
所以我们需要if语句｡ 

03:03.210 --> 03:05.790
那么让我们来设定我们的奖励｡ 

03:07.490 --> 03:08.630
我们的电流｡ 

03:09.410 --> 03:11.600
行索引｡ 

03:12.480 --> 03:20.190
如果它们处于该状态, 则当前列索引等于-1｡ 

03:24.300 --> 03:28.500
我们将返回false或其他值｡ 

03:29.850 --> 03:30.990
我们还会再来的｡ 

03:31.470 --> 03:32.100
是的｡ 

03:33.590 --> 03:35.030
很简单｡ 

03:35.360 --> 03:44.240
这就是我们如何得到我们的终结状态的概念, 如果它存在于终结状态, 我们就想得到起始位置｡

03:44.240 --> 03:52.820
作为一个提示, 您可以看看如何使用当前行索引和当前列索引, 并使用random设置numpy｡

03:52.820 --> 03:57.200
我们要将其随机初始化为环境行环境列｡ 

03:57.200 --> 04:00.620
但是在下一节课中你们会看到一个分解｡ 

04:00.620 --> 04:04.790
您将看到其余的函数以及一些注释, 以给予您了解这些函数｡ 

04:04.790 --> 04:10.700
我真的希望你们能抓住这个机会来尝试一下, 因为这只是一个很棒的学习方式, 并帮助给予你一个想法｡

04:10.700 --> 04:12.200
这是给你的开始｡ 

04:12.200 --> 04:15.260
所以别担心, 下节课你们会知道答案的｡ 

04:15.260 --> 04:21.860
最后, 我们将实际分配Epsilon折扣系数､ 学习率､ 培训､

04:21.860 --> 04:25.760
运行培训和查看结果等内容｡

04:26.060 --> 04:26.900
太棒了｡ 

04:27.260 --> 04:29.660
让我们在这里再停一次｡ 

04:29.660 --> 04:30.890
试着解决这个问题｡ 

04:30.890 --> 04:35.390
但是如果没有, 如果你想继续学习, 下一节课你会得到,

04:35.390 --> 04:38.180
定义这些函数的答案｡

04:38.420 --> 04:40.340
好吧, 我们下节课再见｡ 
