WEBVTT

00:00.700 --> 00:04.350
大家好, 欢迎回到人工智能课程｡ 

00:04.360 --> 00:09.460
我希望大家对今天的教程感到兴奋, 因为我们正在向人工智能的世界迈出第一步,

00:09.460 --> 00:13.120
今天我们要讨论的是强化学习｡

00:13.120 --> 00:18.340
这是一个非常重要的教程, 因为它将为本课程中的其他内容奠定基础｡

00:18.610 --> 00:20.950
我们从这里开始吧｡ 

00:20.950 --> 00:29.140
我们有一个小迷宫, 这个迷宫是我们对环境的再现, 这也是我们在这门课上要讲的内容.

00:29.140 --> 00:35.080
我们将要面对的是某些特定的环境, 在这些环境中, 我们的人工智能将发挥作用｡

00:35.080 --> 00:36.790
它会采取行动｡ 

00:36.790 --> 00:41.770
它将寻求击败这些环境, 将寻求在这些环境中获胜｡ 

00:42.100 --> 00:44.140
我们有个经纪人｡ 

00:44.140 --> 00:46.930
代理人是我们的人工智能｡ 

00:46.930 --> 00:52.900
这个人或者说是这个大脑将在这些环境中航行, 并从他们的大脑将提供的反馈中学习,

00:52.900 --> 00:56.860
以便执行某些行动｡

00:56.860 --> 01:06.160
它的工作方式是代理在这个环境中执行特定的操作, 结果, 它所处的状态将发生变化｡

01:06.160 --> 01:10.000
所以它可能更远, 更近, 或者更靠左, 更靠右｡ 

01:10.000 --> 01:15.070
它可能有一些其他的参数来描述它的状态, 而这些参数是会改变的｡

01:15.070 --> 01:20.920
所以状态会因为采取的行动而改变, 而且它也会根据行动而得到奖励｡

01:20.930 --> 01:24.670
所以每次它采取行动, 状态就会改变, 它就会得到奖励｡ 

01:24.670 --> 01:29.050
现在, 请记住,

01:29.050 --> 01:33.970
有时可能发生的情况是, 它不会改变状态, 行动不会改变状态, 或者在特定状态下采取行动不会有奖励｡

01:33.970 --> 01:34.380
不是的｡ 

01:34.450 --> 01:38.020
但不管怎样, 代理人会继续这样做, 会采取行动, 改变状态,

01:38.020 --> 01:42.400
获得奖励, 改变行动, 采取行动, 改变状态, 获得奖励.

01:42.580 --> 01:47.200
通过这个过程,

01:47.200 --> 01:55.180
我们将学习环境, 探索环境, 了解什么行为会带来好的回报和有利的状态, 什么行为会带来坏的回报和不利的状态｡

01:55.750 --> 01:59.590
这是一个全球性问题的一个非常简单的表现｡ 

01:59.590 --> 02:04.330
所以如果你仔细想想, 环境实际上并不一定只是迷宫｡ 

02:04.330 --> 02:08.350
这不仅仅是走出迷宫或在迷宫中找到宝藏｡ 

02:08.980 --> 02:11.680
环境可以是生活中的任何东西｡ 

02:11.680 --> 02:15.100
想象一下你早上醒来, 正在做煎蛋卷｡ 

02:15.100 --> 02:19.750
所以为了做那个煎蛋卷, 你需要经过一些步骤｡ 

02:19.750 --> 02:25.060
你需要准备盐, 鸡蛋, 煎锅, 点火等等｡ 

02:25.060 --> 02:29.740
这听起来确实像是一件例行公事, 平凡的事情, 但它已经成为例行公事, 因为你已经做了太多次｡

02:29.740 --> 02:34.390
但在现实中, 这是一个环境, 你正在执行某些行动, 你正在把火,

02:34.390 --> 02:37.310
你把煎锅在火上｡

02:37.310 --> 02:42.940
你把所有的鸡蛋都放进煎锅里, 然后在鸡蛋上放些盐, 然后把它们翻过来, 等等.

02:42.940 --> 02:49.510
正如你所见, 有一些特定的行为, 在特定状态下的行为, 这些行为会导致特定的状态,

02:49.510 --> 02:52.390
有时候还会带来回报.

02:52.390 --> 02:56.860
举个例子, 当你把火点燃, 然后你等, 等, 等, 等, 等, 等, 你在采取等,

02:56.860 --> 02:58.960
等, 等, 等太久的行动｡

02:58.960 --> 03:01.750
然后你把鸡蛋放进煎锅里｡ 

03:01.780 --> 03:03.490
回报将是非常负面的｡ 

03:03.490 --> 03:04.540
会烧起来的｡ 

03:04.960 --> 03:08.920
另一方面, 如果你在正确的时间里做了所有正确的事情｡ 

03:08.920 --> 03:13.780
因此, 了解应该在正确的时间点采取行动也非常重要｡ 

03:13.780 --> 03:20.590
所以, 举个例子, 在你把鸡蛋放进去之前把盐放进煎锅里可能不是最好的主意｡

03:20.590 --> 03:26.140
你可能会想采取这样的行动, 把盐放进煎锅后, 鸡蛋在那里｡ 

03:26.140 --> 03:28.150
所以在处于不同的状态｡ 

03:28.150 --> 03:29.500
所以记住这点很重要｡ 

03:29.500 --> 03:33.550
与此同时, 如果你按照正确的顺序,

03:33.550 --> 03:38.230
在正确的状态下采取了所有正确的行动, 你的最终奖励可能是你得到了一个煎蛋卷, 你可以吃｡

03:38.830 --> 03:41.950
这是你生活中最基本的活动｡ 

03:41.950 --> 03:48.750
但如果你仔细想想, 它实际上是一个环境, 你是在这个环境中执行任务的代理｡

03:48.760 --> 03:52.060
你其实不需要学习任何东西, 因为你已经很了解了｡ 

03:52.060 --> 03:55.990
但同时你也可以学习, 也许你可以学习如何做更好的煎蛋卷, 或者特别是如果你这是你做的第一个煎蛋卷,

03:55.990 --> 03:58.900
你很可能会搞砸它｡

03:58.900 --> 04:05.770
但是你将从中学习, 因为你将理解什么样的行动会导致状态和奖励, 以及生命中的任何其他东西｡

04:05.890 --> 04:11.830
例如, 甚至在股票市场上交易, 买卖,

04:11.830 --> 04:16.300
并从市场上获得一定的反馈, 在返回正或负回报的意义上｡

04:16.300 --> 04:20.020
这也是一个环境, 你作为一个代理人参与到这个环境中｡ 

04:20.020 --> 04:25.030
开车也是一个环境, 你可以转动方向盘, 可以加速, 可以刹车等等,

04:25.030 --> 04:27.700
你从环境中得到反馈｡

04:27.700 --> 04:36.820
其中一个反馈是警察给你一个超速罚款, 如果你在高速公路上超过了可接受的或允许的速度限制｡

04:36.820 --> 04:42.970
因此, 从那里你会学到, 这是不应该做的事情, 因为它会导致一个负面的奖励｡

04:42.970 --> 04:45.520
因此, 奖励不必只在过程的最后｡ 

04:45.520 --> 04:47.740
他们可以贯穿整个旅程, 贯穿整个过程｡ 

04:47.740 --> 04:49.420
这是几个例子｡ 

04:49.420 --> 04:54.670
就我而言, 强化学习最简单的方法就是训练一条狗｡ 

04:54.670 --> 04:58.120
当你训练一只狗时, 你给予它一些命令｡ 

04:58.120 --> 05:00.220
如果它服从这些命令, 那么你就给予它一个｡ 

05:00.600 --> 05:02.260
你给予它像饼干什么的｡ 

05:02.260 --> 05:06.510
如果它不服从这些命令, 你就告诉它它是一只坏狗, 或者你就给予它吃的｡ 

05:06.520 --> 05:14.890
通过这个过程, 它学会了什么是特定的命令, 或者它需要做什么, 在特定的状态下它需要采取什么行动｡

05:14.890 --> 05:18.310
状态是你给它的命令｡ 

05:18.310 --> 05:21.100
而在此基础上, 它会得到一定的奖励｡ 

05:21.400 --> 05:24.520
当然, 在人工智能的世界里, 这并没有那么复杂｡ 

05:24.520 --> 05:26.860
你不必给予人工智能吃的｡ 

05:26.860 --> 05:29.620
你不必每次都带着一袋饼干｡ 

05:29.980 --> 05:32.170
你只要给予它加一个或减一个｡ 

05:32.170 --> 05:37.210
因此, 在人工智能领域, 我们自己创造了这些AIS, 这是一个巨大的优势｡ 

05:37.210 --> 05:41.320
所以我们给他们的奖励, 如果你想一想, 这真的很酷｡ 

05:41.530 --> 05:43.450
你给他们的奖励其实并不存在｡ 

05:43.450 --> 05:48.430
它们只是一个正一个负一个一个零之类的｡ 

05:48.430 --> 05:52.990
所以这都是不存在的, 都是虚构的东西, 但同时它会带来伟大的结果｡ 

05:53.110 --> 05:58.990
我们可以创造出这些神奇的东西, 这些神奇的人工智能, 通过这些神奇的人工智能, 通过提供并不存在的奖励,

05:58.990 --> 06:02.740
加上和减去一｡

06:02.770 --> 06:03.700
这不需要我们付出任何代价｡ 

06:03.700 --> 06:09.700
但同时, 这些结果非常类似于真实的世界和狗的例子｡ 

06:09.700 --> 06:14.650
但在这里, 回报是数字化的, 只是数字｡ 

06:14.890 --> 06:18.730
记住这一点, 我们可以谈谈机器狗｡ 

06:18.730 --> 06:19.420
我喜欢这个例子｡ 

06:19.420 --> 06:21.250
所以这只是一张随机的照片｡ 

06:21.250 --> 06:28.870
通过强化学习训练出来的机器狗不一定就是这样, 有些机器狗, 尤其是年纪大的机器狗｡

06:28.870 --> 06:30.850
你会有一个算法在那里｡ 

06:31.180 --> 06:39.820
这是一个很好的例子, 说明了预编程智能体和强化学习智能体的区别.

06:39.820 --> 06:45.100
所以你可以有一个机器狗, 它是预先编程的如何走路｡ 

06:45.130 --> 06:49.030
它会在软件中的狗后面的算法中这么说｡ 

06:49.030 --> 06:49.200
好吧, 我会的

06:49.240 --> 06:56.230
为了走路, 你需要左腿向前, 左前腿向前, 然后你的后右腿向前, 然后你的前右腿向前,

06:56.230 --> 07:00.700
然后你的后左腿向前, 重复这个动作｡

07:00.700 --> 07:04.720
这就是对行走的定义是这只狗体内的一种功能｡ 

07:05.120 --> 07:08.830
然后它可能会有如何坐, 如何站之类的事情｡ 

07:09.460 --> 07:16.570
而在一只通过强化学习训练的机器狗中, 你并没有预先给它编程｡

07:16.570 --> 07:24.670
这是这里所有东西的关键概念, 你没有任何算法在里面, 是硬编码到狗｡

07:24.670 --> 07:28.240
相反, 你有我们将在未来讨论的内容｡ 

07:28.240 --> 07:36.160
你有一个强化学习算法, 它被告知, 好的, 所以目标是从你现在的位置, 到房间的尽头,

07:36.160 --> 07:41.860
比如说, 什么都不知道｡

07:41.860 --> 07:44.170
下面是你可以采取的一些行动｡ 

07:44.170 --> 07:49.300
你可以移动你的右脚, 你可以移动你的左脚, 你可以移动你的右后脚, 你的右后脚或左后脚｡

07:49.300 --> 07:51.220
这是你能做的所有自由度｡ 

07:51.220 --> 07:52.390
你可以这样移动它们｡ 

07:52.390 --> 07:53.050
你可真喜欢｡ 

07:53.050 --> 08:00.160
所以就像一个你可以采取的行动的列表, 你的奖励是每前进一步, 你就得到一个加号｡

08:00.160 --> 08:03.970
每次你跌倒, 你得到一个负一, 这就是它的全部｡ 

08:03.970 --> 08:07.180
然后他们就把狗留下, 让它自己想办法｡ 

08:07.180 --> 08:13.390
狗试图站起来, 它福尔斯了, 它意识到我不应该做那个导致我摔倒的动作, 因为每次我摔倒,

08:13.390 --> 08:18.940
我都会得到一个负的, 这对我不好然后其他帮助它站起来的动作也是一样.

08:18.940 --> 08:23.470
然后它发现这只是实验, 实验, 实验,

08:23.470 --> 08:29.290
随机尝试, 然后它发现它可以通过移动右前脚向前迈出一步, 它得到了一个加号, 它意识到, 哦,

08:29.290 --> 08:31.330
我应该做更多的事情｡

08:31.330 --> 08:31.900
好吧, 酷｡ 

08:31.900 --> 08:35.530
因此, 它现在知道它应该多做这个, 少做那个｡ 

08:35.530 --> 08:42.160
通过这个学习过程, 它很快地, 非常快地理解了它是如何走路的｡ 

08:42.160 --> 08:49.810
那些能自己解决问题的狗有时候比那些被预先编程的狗走得更好｡

08:49.810 --> 08:55.630
因为当我们预先编程的时候, 我们看着真实的的活狗, 或者我们用自己的想象力去做｡

08:55.630 --> 09:03.400
而强化学习狗可以自己优化事情, 因为它是一个人工智能, 有时它可以得到更好的结果｡

09:03.400 --> 09:07.150
这就是他们如何训练这些机器人这些同样的机器狗踢足球｡ 

09:07.270 --> 09:12.910
你不能训练一只普通的狗踢足球, 因为整个方法是不同的｡ 

09:12.910 --> 09:22.750
这可能不是一只普通的狗被训练去做的事情, 或者在它的进化过程中做过的事情｡

09:22.750 --> 09:28.090
而强化学习机器狗可以很容易地理解如何踢足球, 只要你告诉它们奖励是什么, 目标是什么,

09:28.090 --> 09:32.560
它们可以采取的行动是什么｡

09:32.830 --> 09:36.880
这就是强化学习的一般原理｡ 

09:36.880 --> 09:39.070
以上是强化学习的简要概述｡ 

09:39.070 --> 09:44.560
我希望这让你们对接下来的事情感到非常兴奋, 因为这是一个完全不同的世界,

09:44.560 --> 09:51.880
与预编程解决方案或硬编程､ 硬编码解决方案相比, 你有条件｡

09:51.880 --> 09:55.900
这是非常不同的, 我们将讨论更多｡ 

09:55.900 --> 09:59.140
与此同时, 我们为你准备了一些阅读｡ 

09:59.140 --> 09:59.710
是这样｡ 

09:59.940 --> 10:06.760
如果你想有一些支持材料, 这里有一篇很棒的文章, 你可以看看｡

10:06.780 --> 10:09.180
这就是TensorFlow的简单强化学习｡ 

10:09.210 --> 10:10.500
它有十个部分｡ 

10:10.500 --> 10:15.660
链接在这里, 您可以在课程中找到完整的可点击链接｡ 

10:15.660 --> 10:17.750
资源是由亚瑟朱利安尼｡ 

10:17.760 --> 10:24.660
这是一篇2016年的文章, 你可以沿着这门课程学习, 也可以从这篇文章中获得更多信息｡

10:24.660 --> 10:29.640
但请记住, 那篇文章是关于TensorFlow的, 而在本课程中,

10:29.640 --> 10:33.150
我们使用的是PyTorch, 因此实现不同｡

10:33.150 --> 10:41.190
但同时你们也会学到一些东西, 这些东西可以补充你们在这门课上学到的东西.

10:41.190 --> 10:44.700
所以, 即使你没有考虑一定要关注它, 也会有很棒的文章跟随｡ 

10:44.700 --> 10:49.860
只是以防万一, 看看第一部分, 看看你是否喜欢,

10:49.860 --> 10:51.750
看看你是否想多读一点｡

10:51.900 --> 10:56.580
然后我们会具体到这个教程, 关于强化学习｡ 

10:56.580 --> 11:02.370
理查德·萨顿顿写过一篇论文, 名为《强化学习导论》.

11:02.370 --> 11:04.590
这是1998年的论文, 很老了｡ 

11:04.680 --> 11:08.850
但与此同时, 你也可以学到一些关于强化学习的知识｡ 

11:09.090 --> 11:14.880
其中一些例子像煎蛋卷的例子和其他可以应用强化学习的例子｡

11:14.880 --> 11:20.520
如果你正在寻找一些额外的阅读, 这只是强化学习的一般概述｡ 

11:20.520 --> 11:23.130
关于这一点, 我们将结束本教程｡ 

11:23.130 --> 11:24.570
等不及下次见你了｡ 

11:24.570 --> 11:26.100
在那之前, 好好享受吧｡ 

11:26.100 --> 11:26.670
一､ 
