WEBVTT

00:00.430 --> 00:03.900
大家好, 欢迎回到人工智能课程｡ 

00:03.910 --> 00:05.350
我希望到目前为止你喜欢这门课｡ 

00:05.350 --> 00:08.500
今天我们要讲的是行为选择策略｡ 

00:08.890 --> 00:09.310
好吧, 我会的

00:09.310 --> 00:10.570
让我们直接进入它｡ 

00:10.870 --> 00:15.940
之前, 我们讨论过在简单学习中加入神经网络｡ 

00:15.940 --> 00:21.000
到目前为止, 我们已经进入了深度学习阶段｡ 

00:21.010 --> 00:26.530
我们已经讨论了很多学习部分, 包括添加一些元素｡ 

00:26.530 --> 00:28.750
今天我们要讲的是这个部分｡ 

00:28.750 --> 00:29.880
我们说的是演技｡ 

00:29.890 --> 00:30.880
让我们来看看｡ 

00:31.060 --> 00:38.410
这里我们已经讨论过了, 一旦你输入了数值, 参数或者向量, 描述了智能体当前所处的状态, 在那个环境中,

00:38.410 --> 00:44.260
那么, 毕竟, 学习已经完成了,

00:44.260 --> 00:47.290
或者甚至在学习完成之前｡

00:47.290 --> 00:49.420
基本上我们得到了所有的提示值｡ 

00:49.420 --> 00:51.040
所以我们现在对学习不感兴趣｡ 

00:51.040 --> 00:51.940
我们对表演感兴趣｡ 

00:51.940 --> 00:57.060
那么, 一旦我们有了这些线索值, 我们如何知道我们需要使用哪一个呢？

00:57.070 --> 01:01.870
如果你仔细想想, 提示值就是这些是对立方体值的预测.

01:01.870 --> 01:05.950
那么, 正如我们在简单学习算法中所做的, 我们做了什么？

01:05.950 --> 01:10.320
我们只是选择了一个最好的, 具有最高的线索价值｡ 

01:10.330 --> 01:16.000
一旦我们有了最高价值的一个, 我们就采取行动, 因为它只会给我们带来最高价值｡

01:16.240 --> 01:17.050
我们都知道｡ 

01:17.050 --> 01:23.020
Q值计算为我们期望获得的即时奖励加上因子乘以下一状态的值｡

01:23.020 --> 01:24.700
这是一个递归计算｡ 

01:24.700 --> 01:25.360
为什么不呢？

01:25.360 --> 01:28.300
为什么不选择最佳队列值？

01:28.300 --> 01:30.550
就这样结束了｡ 

01:30.550 --> 01:32.860
但正如你在这里看到的, 事情并不那么简单｡ 

01:32.890 --> 01:37.660
这里我们使用了一个软最大值函数, 我们将在这里讨论动作选择策略.

01:37.660 --> 01:41.110
所以在这里, 实际上, 我们不需要只有一个self max函数｡ 

01:41.110 --> 01:44.290
我们可以有不同的操作选择策略｡ 

01:44.650 --> 01:51.730
例如, 我们有epsilon greedy, epsilon soft,

01:51.730 --> 01:54.880
还有softmax, 这些都是最常用的动作选择策略｡

01:54.880 --> 01:56.200
当然还有其他人｡ 

01:56.200 --> 02:00.520
例如, 最基本的一个是这里有一个非常简单的操作选择策略｡ 

02:00.520 --> 02:03.730
只需选择最佳, 即Q值最高的那一个｡ 

02:03.730 --> 02:06.250
但为什么这一行动政策没有奏效呢？

02:06.250 --> 02:10.300
为什么我们有不同类型的行动策略, 行动选择策略？

02:10.300 --> 02:19.000
好吧, 这一切都归结为探索和利用, 这是强化学习的核心, 因为我们已经讨论过了, 你的代理,

02:19.000 --> 02:24.280
当它在一个环境中运行时, 它可能会预测某些关键值,

02:24.280 --> 02:31.780
这可能是好的, 它可能会, 也可能不会变得很好｡

02:31.780 --> 02:34.900
结果可能是这些价值观是不好的, 我们将被迫探索｡ 

02:34.900 --> 02:39.460
如果我们, 比如说, 在这个例子中,

02:39.460 --> 02:46.720
预测Q2是最好的一个, 然后它选择你们两个, 采取行动二, 然后它从这里开始, 它采取行动二, 然后它得到, 它得到一个非常负的奖励｡

02:46.720 --> 02:51.910
然后环境迫使代理去探索, 因为现在它要学习, 哦,

02:51.910 --> 02:56.260
实际上我以为Q2会很好, 但结果很糟糕｡

02:56.620 --> 02:58.270
所以结果很糟糕｡ 

02:58.270 --> 02:59.830
所以网络会自我更新｡ 

02:59.830 --> 03:02.950
所以下一次他在这种状态下, 他可能还是会选择｡ 

03:02.950 --> 03:06.760
第二, 如果它是, 你知道, 如果它是非常, 非常有利｡ 

03:06.760 --> 03:14.800
所以你可能会认为, 他可能需要几次惩罚才能知道Q2是一个糟糕的行动｡

03:14.800 --> 03:17.410
但也许他很快就会明白了｡ 

03:17.410 --> 03:18.430
好吧, 我会采取不同的行动｡ 

03:18.430 --> 03:21.910
我将采取此操作, 因为现在它具有最佳Q值｡ 

03:21.910 --> 03:28.960
因此, 有时环境迫使代理采取不同的探索不同的行动,

03:28.960 --> 03:33.340
但有时代理可能会发现自己陷入了局部最大值｡

03:33.340 --> 03:37.870
它可能会发现, 在最初的探索过程中, 它会一直跟随下去｡ 

03:37.870 --> 03:43.750
它发现, 哦, 这是一个很酷的动作, 就像我要在这里, 这是一个很酷的动作｡

03:43.810 --> 03:48.970
但问题是, 它认为这是最好的行动, 仅仅是因为它没有探索｡ 

03:48.970 --> 03:53.770
向上探索的是向左探索, 它的探索者是向右探索,

03:53.770 --> 03:57.310
但它还没有从它所处的特定状态向下探索.

03:57.310 --> 04:01.840
现在它有点偏向于这个行动, 它认为这是一个好的行动, 会继续采取,

04:01.840 --> 04:03.370
会继续得到｡

04:03.730 --> 04:06.340
他会继续采取这种行动会继续得到很好的奖励｡ 

04:06.340 --> 04:10.300
但如果这个行动会更好呢？

04:10.300 --> 04:17.230
如果这个动作会好得多, 如果它知道这个动作, 它实际上会切换到这个动作｡

04:17.230 --> 04:23.500
但因为它卡在了局部最大值, 它得到了很好的回报, 所以它会得到加强

04:23.500 --> 04:28.270
它会不断地自我强化, 或者环境会强化它, 这是一个好的行动｡

04:28.270 --> 04:29.170
继续这样

04:29.230 --> 04:35.320
但实际上, 还有一种行为, 它还没有发现, 甚至还没有探索,

04:35.320 --> 04:36.850
那会更好｡

04:36.850 --> 04:45.760
所以我们要做的是我们要提出一个动作选择策略, 让我们的代理人不会陷入局部最大值｡

04:45.760 --> 04:48.400
是的, 坚持做好事很重要｡ 

04:48.400 --> 04:49.990
这就是剥削的部分｡ 

04:49.990 --> 04:53.860
我们想利用我们的发现, 但同时我们仍然想探索｡ 

04:53.860 --> 04:55.480
我们从未停止探索｡ 

04:55.480 --> 04:57.730
这就像在生活中你永远不想停止学习｡ 

04:57.790 --> 04:58.930
你停止学习, 你就死定了｡ 

04:58.930 --> 04:59.220
那是｡ 

04:59.580 --> 05:03.300
有一种说法是, 当你不成长, 你就死了或类似的东西｡ 

05:03.300 --> 05:07.470
所以你想不断学习, 你的经纪人也想不断学习｡ 

05:07.470 --> 05:10.110
这就是行动选择策略的作用所在｡ 

05:10.110 --> 05:12.270
这里列出了三个｡ 

05:12.270 --> 05:14.100
第一个是贪婪的爱普西隆｡ 

05:14.100 --> 05:15.540
这是一个非常简单的问题｡ 

05:15.540 --> 05:22.060
它听起来很复杂, 就像它有一个很酷的名字, 通常有这么酷名字的东西都很复杂｡

05:22.240 --> 05:23.040
其实不是｡ 

05:23.100 --> 05:31.340
基本上, 它会选择Q值和ε最佳的一个, 比如ε Greek｡ 

05:31.350 --> 05:32.670
你可能在其他地方听到过｡ 

05:32.670 --> 05:34.920
这就像一个选择政策｡ 

05:34.920 --> 05:39.870
在本例中, 我们使用它来选择Q值, 即不起作用｡ 

05:39.870 --> 05:45.750
因此, 除了Epsilon百分比的情况外, 您将始终选择Q值最高的一个｡ 

05:45.750 --> 05:52.170
例如, 如果你将ε设为10%, 那么你将得到或0｡  1.

05:52.170 --> 05:56.460
那么有10%的时间会随机选择动作｡ 

05:56.460 --> 06:01.890
因此, 90%的情况下, 您仍将根据最高Q值选择最佳操作｡ 

06:01.890 --> 06:09.390
但10%的时间是选择一个随机行动制服, 这将是绝对随机采取一个行动｡

06:09.390 --> 06:17.700
或者将epsilon设置为0｡  540. 05, 这意味着95%的情况下,

06:17.700 --> 06:19.140
代理将采取具有最高值的操作｡

06:19.140 --> 06:22.290
但有5%的情况下, 它仍然是随机选择的.

06:22.290 --> 06:25.470
所以我们要走出去探索｡ 

06:25.470 --> 06:28.140
所以Epsilon Soft非常相似｡ 

06:28.410 --> 06:34.920
哦, 顺便说一句, 这有点像为什么它被称为ε贪婪, 因为你贪婪地选择行动,

06:34.920 --> 06:40.230
好的行动, 除了那一小部分ε的时间｡

06:40.230 --> 06:48.180
所以ε越小, ε越小, 你就越贪婪地选择这种动作｡

06:48.180 --> 06:50.280
这是最佳的行动｡ 

06:50.280 --> 06:54.630
你离开的越少, 去探险的机会就越少｡ 

06:54.630 --> 06:55.920
Epsilon Soft则相反｡ 

06:55.920 --> 07:01.950
所以基本上你是随机选择的, 你选择的概率是1-ε %｡ 

07:01.950 --> 07:09.460
所以如果ε等于0｡  1, 也就是10%, 那么只有10%的时间你会采取这个行动,

07:09.750 --> 07:12.120
而90%的时间你会选择一个随机行动｡

07:12.120 --> 07:18.740
所以非常简单, 只是反转算法, 而软最大值有点像是Epsilon贪婪算法的下一个步骤,

07:18.960 --> 07:24.000
或者更高级的版本, 我会说,

07:24.000 --> 07:30.810
是Epsilon贪婪算法的下一个版本, 尽管它们都有优点, 它们都有我们在编码和实际应用中使用软最大值的地方｡

07:30.810 --> 07:34.920
这就是为什么我们要更详细地讨论Soft Max的原因｡ 

07:35.040 --> 07:36.300
让我们来看看｡ 

07:36.300 --> 07:37.770
现在让我们来看看Soft Max｡ 

07:37.770 --> 07:40.580
希望它对Epsilon的成分非常清楚｡ 

07:40.720 --> 07:42.720
这是一个非常简单的算法｡ 

07:42.720 --> 07:47.640
除了有时去探索之外, 大多数时间都选择这一条｡ 

07:47.640 --> 07:55.950
现在我们也明白了为什么进行探索很重要, 这样我们在优化过程中就不会陷入局部最大值｡

07:55.950 --> 07:57.960
现在我们来多谈一点软max｡ 

07:58.680 --> 08:02.700
在中的课程末尾有一个有关Soft Max的教程｡ 

08:02.700 --> 08:08.340
我认为这是第二个附件, 我们在这里讨论了Soft Max背后的概念｡ 

08:08.340 --> 08:09.900
我在这里稍微刷新一下｡ 

08:09.900 --> 08:12.780
所以他们在讨论卷积神经网络｡ 

08:12.780 --> 08:16.560
顺便说一句, 我们都将学习卷积神经网络,

08:16.560 --> 08:18.780
这节课我们不学习卷积神经网络｡

08:18.930 --> 08:21.360
在本节中, 我们仍然使用矢量｡ 

08:21.570 --> 08:29.310
但在下一节课中, 当我们创造一个人工智能来玩末日游戏时, 我们将使用卷积神经网络.

08:29.310 --> 08:36.240
因此, 研究卷积神经网络, 然后采用软最大函数, 这对你是有益的｡

08:36.240 --> 08:42.990
或者你可以在学习完卷积神经网络和X之后, 学习更多关于SOF Max的知识｡

08:42.990 --> 08:45.060
但这里有一个快速刷新｡ 

08:45.060 --> 08:48.870
所以这里我们有一个卷积神经网络来决定它是狗还是猫｡ 

08:48.870 --> 08:53.370
这里我们看到了这些神经元之间的投票过程｡ 

08:53.370 --> 08:59.700
这个说它有它的特征, 你知道, 毛茸茸的耳朵, 尖的,

08:59.700 --> 09:01.980
尖的脸之类的｡

09:02.220 --> 09:09.870
和其他类型的眼睛一样的特征, 眼睛, 眼睛看起来的样子, 所有这些特征都属于狗｡

09:09.870 --> 09:13.620
所以有95%的可能是狗, 5%的可能是猫｡ 

09:13.620 --> 09:20.310
但问题是, 我们是怎么得到的, 在我们正在讨论的那个教程中, 我们是怎么得到这些值之和的？

09:20.610 --> 09:25.890
好吧, 不管是卷积还是我们整个神经网络｡ 

09:25.890 --> 09:30.630
所以卷积神经网络加上完全连接的层, 不管它吐出什么, 不管吐出什么值,

09:30.630 --> 09:33.810
我们在这里应用了一个软最大函数｡

09:33.810 --> 09:37.560
这就是我们引入软极大函数公式的地方｡ 

09:37.560 --> 09:38.640
看起来是这样的

09:38.640 --> 09:40.140
然后我们得到了这些值｡ 

09:40.320 --> 09:43.380
基本上这是一个快速的复习｡ 

09:43.380 --> 09:45.810
这是软最大值的公式｡ 

09:45.810 --> 09:49.440
它所做的是它需要无论你有多少输出｡ 

09:49.470 --> 09:50.370
这不重要｡ 

09:50.820 --> 09:58.380
它会把它们都压缩成0到1之间的值, 不管它们有多大｡

09:58.380 --> 09:58.890
只是｡ 

09:59.290 --> 10:02.500
看看这个, 你可以看到在底部有一个总和｡ 

10:02.500 --> 10:04.780
所以这些值应该是0, 在0和1之间｡ 

10:04.780 --> 10:08.170
所有这些值加起来总等于1｡ 

10:08.440 --> 10:16.720
这对我们非常有利, 因为当我们使用软最大值函数时, 我们会得到这些Q值,

10:16.720 --> 10:21.340
然后选择最佳值｡

10:21.340 --> 10:26.650
但实际上, 我们得到的这些Q值是真实的数字, 对吗？

10:26.650 --> 10:28.510
所以它们是某种数字｡ 

10:28.840 --> 10:32.560
它们不一定要加起来等于1, 也不一定要在0和1之间, 只是一些数字｡ 

10:32.980 --> 10:36.040
但是当我们应用软最大值时, 我们不只是选择最好的一个｡ 

10:36.040 --> 10:38.140
我们实际上得到了这样的数字｡ 

10:38.140 --> 10:44.230
所以我们得到了0到1之间的数, 它们的和也是1｡ 

10:44.230 --> 10:47.140
那么我们还知道什么东西能加起来是1呢？

10:47.140 --> 10:50.110
概率我们知道概率之和总是等于1.

10:50.110 --> 10:57.910
这就是为什么我们可以说这里有Q值, 但这里突然有了软值或者概率｡

10:57.910 --> 11:02.620
所以我们可以说这是最佳行动的可能性是90%｡ 

11:02.620 --> 11:05.770
这最好在最好的部分, 5%, 2%, 3%｡ 

11:05.770 --> 11:09.220
因为我们知道Q值越高, 动作越好｡ 

11:09.220 --> 11:14.710
所以如果我们把它们压缩成0到1, 那么这些就变成了概率, 我们就可以这样处理它们｡ 

11:14.920 --> 11:20.200
因此现在是选择动作的时候｡ 

11:20.200 --> 11:22.570
这就是我们得出Q2的方法｡ 

11:22.630 --> 11:28.280
但如果你仔细看, 这不是一个严格的100%, 这些也不是0%｡ 

11:28.300 --> 11:30.550
所以这是5%, 2%, 3%｡ 

11:30.550 --> 11:41.230
所以为了保持算法中的探索性, 应用软最大值的最自然的方法是,

11:41.230 --> 11:48.520
使用这些精确的概率作为我们采取行动的频率｡

11:48.520 --> 11:54.400
所以这些概率实际上代表了我们所采取的这些行动的分布｡ 

11:54.400 --> 12:01.660
所以基本上, Soft Max让我们很容易想出一个将开发和探索结合起来的方法｡ 

12:01.660 --> 12:06.490
所以最好的行动总是有最高的概率, 因为它有最高的Q值｡ 

12:06.490 --> 12:10.720
因此, 这里我们将使用这些作为我们的分布,

12:10.720 --> 12:16.030
我们会说, 好的, 我们会在90%的时间里取Q, 但在5%的时间里我们还是会取Q｡

12:16.030 --> 12:20.380
Q为1, 2%的时间我们会做3, 3%的时间我们会做3｡ 

12:20.380 --> 12:20.950
问四｡ 

12:21.220 --> 12:27.040
这里的美妙之处还在于, 随着这些值的更新,

12:27.040 --> 12:35.140
随着代理通过网络, 越来越多, 它变得越来越熟悉环境, 因此这些更新｡

12:35.140 --> 12:42.610
所以这个值, 比如说, 它可能会确定这个值实际上更小或者实际上更大｡

12:42.610 --> 12:46.840
所以这些概率也会随着代理人的经历而改变｡ 

12:46.840 --> 12:52.930
所以, 即使我们有你们两个, 也没有人会说,

12:52.930 --> 12:59.290
有时候5%的时间, 更准确地说, 我们会选择Q 1作为要采取的行动,

12:59.290 --> 13:06.370
有时候或行动1会采取行动1, 有时候我们会通过2行动3采取行动, 2%的时间, 行动4会采取大约3%的时间｡

13:06.370 --> 13:13.540
所以每个动作都有机会在这个过程中发挥作用只要我们有足够的迭代, 并且代理人经历了很多很多次,

13:13.540 --> 13:17.860
通过他们所处的这些状态｡

13:17.860 --> 13:23.830
这就是任何深度学习算法的工作原理, 你要做很多很多次,

13:23.830 --> 13:27.100
这样你就可以从经验中学习｡

13:27.100 --> 13:34.120
因此, 正如你在这里看到的, 这是一个非常自然的转变, 我们不只是随机地像一个epsilon贪婪算法｡

13:34.120 --> 13:37.330
我们不是随机选择行动｡ 

13:37.330 --> 13:45.730
我们根据它们的软最大值来选择它们, 这使得它看起来像是有一些逻辑在背后, 而不仅仅是随机的｡

13:45.730 --> 13:49.930
我们有10%的时间选择一个随机动作, 但我们这样做背后有一些逻辑｡ 

13:49.930 --> 13:52.690
根据我们研究过的Q值｡ 

13:53.020 --> 13:58.540
这就是我们在这门课上要用到的行动选择策略.

13:58.540 --> 14:04.180
如果您愿意, 欢迎您查看Epsilon Greedy Action

14:04.180 --> 14:08.470
Selection策略, 但我们将主要使用软max操作选择策略｡

14:08.470 --> 14:11.320
我有一个有趣的阅读给你｡ 

14:11.320 --> 14:17.350
因此, 这被称为基于值差异的强化学习中的自适应Epsilon贪婪探索｡ 

14:17.350 --> 14:18.700
这是2010年的文章

14:18.700 --> 14:24.010
这很有趣, 因为迈克, 米歇尔, 我不知道怎么发音｡ 

14:24.010 --> 14:31.450
Michelle和Michael在谈话中介绍了一种不同类型的算法,

14:31.450 --> 14:38.950
因此一种经过调整的ε贪婪算法又称为VD VB算法或ε贪婪VB算法｡

14:38.950 --> 14:39.880
你可以看到它在这里｡ 

14:40.270 --> 14:44.080
他实际上把它和Max的EPS成分进行了比较｡ 

14:44.080 --> 14:56.470
这是一个epsilon贪婪算法, 基本上它的主要思想是根据智能体所处的状态来调整epsilon的值｡

14:56.470 --> 14:58.830
所以若若探很关心这一点｡ 

14:59.000 --> 15:02.630
那么ε应该更小, 所以应该有更少的探索｡ 

15:02.630 --> 15:06.110
如果代理商不确定, ε应该更高, 应该更多地勘探｡ 

15:06.110 --> 15:08.120
所以这是一篇2010年的文章｡ 

15:09.020 --> 15:17.900
我不确定这个新提出的算法是否被广泛使用, 或者是否被社区所接受,

15:17.900 --> 15:23.030
或者人工智能是否已经远离了这个建议｡

15:23.030 --> 15:30.020
但不管怎样, 它肯定会帮助你巩固我们讨论过的关于行动选择政策的知识｡

15:30.020 --> 15:32.090
epsilon成分, 软max会帮你的｡ 

15:32.090 --> 15:39.230
它会给予你一个机会来并排比较它们, 也会看到人们在想要改进人工智能时实际上是往哪个方向想的｡

15:39.230 --> 15:47.360
所以如果你打算创造一些非常有趣的算法来推动人工智能的发展, 推动这个领域的发展,

15:47.360 --> 15:54.560
那么这可能是一个很好的方式,

15:54.560 --> 16:03.470
让你看到当人们试图改进人工智能的规范或者2010年存在的规范时, 他们有时会往哪个方向想｡

16:03.800 --> 16:04.670
好了, 我们走吧｡ 

16:04.700 --> 16:09.860
希望您喜欢今天关于操作选择策略的教程｡ 

16:10.040 --> 16:15.890
我们学习了Epsilon Greedy､ Epsilon Soft和soft max,

16:15.890 --> 16:18.050
现在你对实际的一面做了更多的准备｡

16:18.050 --> 16:20.720
说到这, 我期待着下次见到你｡ 

16:20.720 --> 16:22.130
在那之前, 好好享受吧｡ 

16:22.130 --> 16:22.670
一､ 
