back to index

ML Lecture 21-1: Recurrent Neural Network (Part I) English version


link |
00:00.000
Recurrent Neural Network,RNN。大家好,讓我們開始課程。
link |
00:12.120
好的,讓我們談談 Recurrent Neural Network。
link |
00:16.000
Recurrent Neural Network 其實可以做我們在上一堂課程中提到的事情。
link |
00:21.160
Sequence Labeling。最後,我們會談論
link |
00:24.840
它們之間的差異。
link |
00:26.080
The example we are going to give is slot filling.We know that.AI customer service is very popular now.For instance, AI ticket booking systems.These customer services or ticket booking systems would often use slot filling.So, what does slot filling refer to?Slot filling refers to, for example, if someone tells your booking system.I would like to arrive Taipei on November 2nd, then your system should automatically send you a ticket.
link |
00:51.080
I would like to arrive Taipei on November 2nd, then your system should automatically know that.There are some slots in itself.For example.In the booking system, there should be a slot named destination.And another slot named time of arrival.Your system needs to automatically know.The slot every word listed here belongs.Your system should know that Taipei belongs to the destination slot.And it should also know that November 2nd belongs to the time of arrival.
link |
01:21.080
As for the other words, they don't belong to any slot.How do we solve this problem?Actually, for this problem.Of course, you can also use a feed-forward neural network to solve it.In other words, all stack one.Feed-forward neural network.And its input is a word.For example, if you turn Taipei into a vector and throw it into this neural network.If you want to throw a word into a vector, you can use the feed-forward neural network.
link |
01:51.080
But if you want to throw a word into a neural network, you must first transform it.Into a vector.How do we represent a word using a vector?There are too many ways to do it and the most naive way.Is one of n encoding.I think we don't need to elaborate this more.Of course, you could use word vector to represent a word.Or there are also some.Methods beyond one of n encoding.For example.Sometimes, if you only use one of n encoding to describe a word.Then you can use a n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n-n
link |
02:21.080
你会遇到一些问题
link |
02:23.080
由于有那么多语言
link |
02:25.080
你可能从来没有见过
link |
02:27.080
你需要添加一个
link |
02:29.080
更多的面积
link |
02:31.080
与一个n引语
link |
02:33.080
这个面积代表
link |
02:35.080
Other 和所有语言
link |
02:37.080
不在语文中
link |
02:39.080
会被分成Other
link |
02:41.080
例如Gandalf
link |
02:43.080
不在语文中
link |
02:45.080
所以它被分为Other
link |
02:47.080
或者Sauron
link |
02:49.080
它不在语文中
link |
02:51.080
所以它也被分为这个面积
link |
02:53.080
你也可以用
link |
02:55.080
某种语言的语言来表达
link |
02:57.080
它的面积
link |
02:59.080
如果你用
link |
03:01.080
一个语言的n引语
link |
03:03.080
来代表那个面积
link |
03:05.080
你不会有问题
link |
03:07.080
有些语言不在语文中
link |
03:09.080
例如你会有一个词叫Apple
link |
03:11.080
在语文中
link |
03:13.080
Apple 出现在了
link |
03:15.080
ppl 出现在了
link |
03:17.080
在这个面积中
link |
03:19.080
这个面积的导向
link |
03:21.080
导向Apple 是1
link |
03:23.080
导向ppl 和ple
link |
03:25.080
导向ppl 和ple 是1
link |
03:27.080
导向ppl 和ple 是0
link |
03:29.080
无论如何
link |
03:31.080
假设我们可以用语言来代表一个面积
link |
03:33.080
那你可以把这个面积
link |
03:35.080
放在一个导向网络
link |
03:37.080
结果你会希望
link |
03:39.080
你的出口是一个
link |
03:41.080
语文的准数
link |
03:43.080
这个语文的准数
link |
03:45.080
代表了语言里的准数
link |
03:47.080
语言的准数
link |
03:49.080
比如
link |
03:51.080
台湾的准数
link |
03:53.080
代表了目的地
link |
03:55.080
台湾的准数
link |
03:57.080
代表了出口时间
link |
03:59.080
等等
link |
04:01.080
但是
link |
04:03.080
这并不是足够的
link |
04:05.080
来代表导向网络
link |
04:07.080
解决这个问题
link |
04:09.080
为什么
link |
04:11.080
假设一个用户说
link |
04:13.080
到达是另一个
link |
04:15.080
台湾是目的地
link |
04:17.080
到达是另一个
link |
04:19.080
11月2日是所有时间
link |
04:21.080
但如果另一个用户说
link |
04:23.080
离开台湾11月2日
link |
04:25.080
那么台湾这次
link |
04:27.080
应该是出口的地方
link |
04:29.080
应该是出口的地方
link |
04:31.080
而不是目的地
link |
04:33.080
但对于语言网络来说
link |
04:35.080
当输入是一样的时候
link |
04:37.080
出口应该是一样的
link |
04:39.080
当你输入台湾
link |
04:41.080
当输入应该是目的地
link |
04:43.080
当输入应该是目的地
link |
04:45.080
或者是出口的地方
link |
04:47.080
只有一个可以有最高的可能性
link |
04:49.080
你不能让它
link |
04:51.080
有时出口有最高的可能性
link |
04:53.080
有时目的地
link |
04:55.080
有最高的可能性
link |
04:57.080
那么我们该怎么办
link |
04:59.080
在这一刻
link |
05:01.080
我们希望我们的讯息网络有记忆
link |
05:03.080
我们希望我们的讯息网络有记忆
link |
05:05.080
假设讯息网络有记忆
link |
05:07.080
它记得之前
link |
05:09.080
它看到了这个红的东西
link |
05:11.080
它已经看见了
link |
05:11.080
它已经看见了
link |
05:11.080
它已经看见了
link |
05:11.080
它已经看见了
link |
05:11.080
它已经看见了
link |
05:11.080
它的语言即将到达
link |
05:13.080
它已经记得
link |
05:13.080
它的语言即将到达
link |
05:13.080
它已经记得
link |
05:13.080
它已经记得
link |
05:13.080
它已经记得
link |
05:13.080
它已经记得
link |
05:13.080
它已经记得
link |
05:13.080
它已经记得
link |
05:13.080
它已经记得
link |
05:13.080
在你记得
link |
05:13.080
在你记得
link |
05:13.080
而你记待
link |
05:13.080
而你记待
link |
05:13.080
而你记待
link |
05:13.080
和ал
link |
05:13.080
war
link |
05:13.080
然后它记得
link |
05:13.080
和稀
link |
05:15.080
和稀
link |
05:15.080
和稀
link |
05:15.080
和稀
link |
05:15.080
和稀
link |
05:15.080
和稀
link |
05:19.080
和稀
link |
05:19.080
和稀
link |
05:19.080
和稀
link |
05:27.080
如果人工智能网络有记忆,它可以解决同一词的输入问题。
link |
05:32.080
但是有不同的输出。
link |
05:34.080
好的,这种人工智能网络与记忆,叫做循环人工智能网络。
link |
05:40.080
它的绰号是RNN。
link |
05:43.080
在循环人工智能网络中,
link |
05:45.080
每当我们的隐藏层次,
link |
05:48.080
每当我们的隐藏层次中的 neuron 生成了输出,
link |
05:52.080
输出都会存在记忆中。
link |
05:55.080
在这里,我们使用蓝色的方块来代表记忆。
link |
05:59.080
当这些隐藏层次中的 neuron 生成了输出时,
link |
06:04.080
它们将被存在这些蓝色方块中。
link |
06:06.080
下一次,
link |
06:08.080
当这些隐藏层次中的输出时,
link |
06:12.080
这些 neuron 不仅会考虑
link |
06:15.080
输出 x1 和 x2,
link |
06:17.080
它还会考虑
link |
06:19.080
这些记忆中的数值。
link |
06:21.080
对于 RNN 而言,除了 x1 和 x2,
link |
06:25.080
记忆中的数值,
link |
06:27.080
a1 和 a2 也会影响输出。
link |
06:33.080
为了更好的理解,
link |
06:35.080
我会直接举例。
link |
06:37.080
假设所有组织的重量在图表上是 1,
link |
06:41.080
所有 neuron 都没有偏差值。
link |
06:44.080
我们也假设所有的启动功能都是线性的。
link |
06:48.080
这样计算就不会太复杂了。
link |
06:51.080
现在,假设我们的输入是一个系统。
link |
06:54.080
我们的输入是 11 11 22。
link |
06:58.080
然后我们输入系统 11 11 22
link |
07:02.080
进入这个线性的 neuron 组织。
link |
07:05.080
会发生什么?
link |
07:07.080
首先,
link |
07:08.080
在你开始时,
link |
07:11.080
使用这个线性的 neuron 组织。
link |
07:14.080
你必须给记忆中的数值。
link |
07:17.080
你必须给记忆中的数值。
link |
07:19.080
在输入任何东西之前,
link |
07:21.080
你必须给它最初的数值。
link |
07:23.080
例如,
link |
07:24.080
我们假设记忆中的数值是 0 。
link |
07:27.080
在输入任何东西之前。
link |
07:30.080
现在我们输入第一个输入 11 。
link |
07:33.080
接下来会发生什么?
link |
07:35.080
对于这个 neuron 组织,
link |
07:36.080
除了输入 11,
link |
07:39.080
它还会输入 00 从记忆中。
link |
07:42.080
因为我们说所有的重量是 1,
link |
07:45.080
所以输出是 2,
link |
07:47.080
而这个 neuron 组织的输出也是 2。
link |
07:51.080
接下来会发生什么?
link |
07:55.080
接下来,
link |
07:56.080
因为所有的重量是 1,
link |
07:58.080
输出的绿 neuron 组织是 4.
link |
08:01.080
当我们输入 11,
link |
08:02.080
输出是 44.
link |
08:06.080
然后,
link |
08:07.080
线性的 neuron 组织会存储
link |
08:09.080
绿 neuron 组织的输出到记忆中。
link |
08:12.080
结果,
link |
08:14.080
记忆中的数值被更新为 2.
link |
08:16.080
这 2 将被写入记忆中,
link |
08:18.080
这 2 将被写入记忆中。
link |
08:21.080
记忆中的数值被更新为 2.
link |
08:23.080
之后,
link |
08:24.080
我们会输入 1 和 1.
link |
08:26.080
绿 neuron 组织的输出会是什么?
link |
08:29.080
它有 4 个输入,
link |
08:31.080
11 和 22,
link |
08:33.080
然后所有的重量都是 1,
link |
08:34.080
所以你加 2 加 2 加 1 加 1,
link |
08:37.080
结果是 6.
link |
08:39.080
最后,
link |
08:41.080
红 neuron 组织的输出是 6 加 6 加 12,
link |
08:45.080
因此当输入是 11,
link |
08:47.080
当输入 11 第二次时,
link |
08:50.080
输出是 12 12.
link |
08:52.080
因此,在绿 neuron 组织中,
link |
08:54.080
即使你输入同样的东西,
link |
08:56.080
即使你输入同样的输出,
link |
08:59.080
在这种情况下,
link |
09:00.080
它是 1 和 1.
link |
09:02.080
即使你输入同样的输出,
link |
09:05.080
它将是 1 和 1.
link |
09:06.080
在这种情况下,
link |
09:07.080
输出可能会不一样,
link |
09:09.080
因为记忆中的数值不同。
link |
09:14.080
那么原始的数值呢?
link |
09:16.080
绿 neuron 组织的输出是 6 和 6.
link |
09:19.080
这些 6 和 6 将被存在记忆中,
link |
09:22.080
并且将被存在记忆中。
link |
09:24.080
因此 2 将被更新成 6.
link |
09:27.080
接下来,我们的输入是
link |
09:29.080
2 和 2,
link |
09:30.080
假设输入是 22,
link |
09:32.080
每个绿 neuron 组织都在这里。
link |
09:35.080
我们会考虑 4 个输入, 2 和 2, 6 和 6.
link |
09:39.080
那么 6 加 6 加 2 加 2,
link |
09:42.080
答案是 16.
link |
09:44.080
绿 neuron 组织的输出是 32.
link |
09:47.080
因此,当输入是 2 和 2,
link |
09:49.080
输出是 32.
link |
09:52.080
当使用绿 neuron 组织时,
link |
09:54.080
一件非常重要的事情是,
link |
09:57.080
输入的细节
link |
10:00.080
并非统一
link |
10:01.080
当绿 neuron 组织考虑它时。
link |
10:04.080
如果您随意改变输入组织的命令,
link |
10:08.080
例如,将 2 和 2 移到顶端,
link |
10:11.080
输出将完全不同。
link |
10:14.080
因此,绿 neuron 组织
link |
10:17.080
将考虑输入组织的命令。
link |
10:25.080
如果我们想使用绿 neuron 组织
link |
10:28.080
来解决缺口的问题,
link |
10:30.080
它会看起来像这样。
link |
10:32.080
一位用户说,
link |
10:34.080
到达台湾在11月2日,
link |
10:36.080
然后到达,
link |
10:37.080
变成了一个绿 neuron 组织,
link |
10:38.080
然后我们把它放入绿 neuron 组织。
link |
10:41.080
绿 neuron 组织的隐藏层数的输出
link |
10:43.080
写在这里是 A1。
link |
10:46.080
这 A1 是绿 neuron 组织的输出,
link |
10:48.080
因此,它实际上是绿 neuron 组织。
link |
10:51.080
然后我们生产 Y1 基于这 A1。
link |
10:54.080
这 Y1 是绿 neuron 组织的可能性。
link |
10:58.080
然后, A1 将存在记忆中。
link |
11:01.080
然后, Taipei 将成为输出。
link |
11:06.080
然后,这隐藏层数会考虑
link |
11:08.080
两个输出 Taipei 和 A1,
link |
11:10.080
这两个输出 Taipei 和 A1,
link |
11:11.080
这两个输出 Taipei 和 A1,
link |
11:12.080
是存在记忆中的 A2。
link |
11:14.080
然后我们生产 Y2 基于 A2。
link |
11:17.080
Y2 是 Taipei 的可能性。
link |
11:22.080
这个过程将再次重复。
link |
11:25.080
我们再次重复。
link |
11:26.080
我们再次重复。
link |
11:27.080
我们再次重复。
link |
11:28.080
我们再次重复。
link |
11:29.080
这隐藏层数会考虑
link |
11:31.080
两个输出 Taipei 和 A1。
link |
11:33.080
还有 A2 在记忆中存在,
link |
11:36.080
所以我们可以生产 Y3 基于 A3。
link |
11:40.080
这层数代表了
link |
11:42.080
这里属于的 Taipei 和 A1 存在的可能性。
link |
11:44.080
这里有一个小记念,
link |
11:45.080
有些人可能会说
link |
11:46.080
在这张图片看过后
link |
11:48.080
这里有三个网络。
link |
11:50.080
不过,这不是三个网络,
link |
11:53.080
这就是一个相同的网络。
link |
11:56.080
被用了三次在三个不同的时间段
link |
12:00.080
我用同样的颜色来代表同样的重量在这里的目的
link |
12:04.080
同样的重量被同样的颜色代表
link |
12:07.080
我希望您可以看到
link |
12:12.080
因此,当我们有记忆
link |
12:14.080
进入同一个词的问题
link |
12:16.080
但希望有不同的效果
link |
12:19.080
现在可以解决
link |
12:20.080
例如,如果我们双方进入词体
link |
12:23.080
因为红色的颜色代表离开
link |
12:26.080
而绿色的颜色代表到达
link |
12:29.080
离开和到达都有不同的方向
link |
12:32.080
所以隐藏层的效果会有所不同
link |
12:35.080
结果,记忆中的数值会有所不同
link |
12:39.080
虽然X2的数值完全相同
link |
12:41.080
但记忆中的数值会有所不同
link |
12:44.080
所以隐藏层的效果会有所不同
link |
12:47.080
最终的效果也会有所不同
link |
12:49.080
好的,这是纯粹的
link |
12:51.080
线路虚拟计划的概念
link |
12:55.080
当然,您可以随意
link |
12:57.080
设计线路虚拟计划的建筑
link |
13:00.080
确实,它可以很深
link |
13:02.080
我们刚才看到
link |
13:03.080
线路虚拟计划只有一个隐藏层
link |
13:07.080
它肯定可以是一个
link |
13:08.080
深度的线路虚拟计划
link |
13:10.080
例如,当我们进入X1
link |
13:13.080
它可以通过一个隐藏层
link |
13:15.080
然后通过第二个隐藏层
link |
13:17.080
然后通过很多隐藏层
link |
13:19.080
最终我们得到最终的效果
link |
13:22.080
每个隐藏层的效果
link |
13:24.080
都会存在记忆中
link |
13:27.080
在下一段时间
link |
13:28.080
每个隐藏层
link |
13:30.080
会认识之前存在记忆中的数值
link |
13:33.080
它会认识之前存在记忆中的数值
link |
13:35.080
最终得到
link |
13:37.080
最终效果
link |
13:38.080
这个过程继续
link |
13:40.080
您可以填满许多层
link |
13:42.080
您可以填满许多层
link |
13:47.080
如您愿意
link |
13:49.080
线路虚拟计划
link |
13:50.080
有不同类型的变化
link |
13:52.080
我们刚才谈到的
link |
13:55.080
叫做Ellman Network
link |
13:56.080
如果我们保存隐藏层的数值
link |
13:59.080
现在使用它
link |
14:00.080
下一次
link |
14:02.080
这就叫做Ellman Network
link |
14:04.080
另一个叫
link |
14:06.080
Jordan Network
link |
14:07.080
Jordan Network
link |
14:08.080
保存整个网络的效果
link |
14:12.080
然后它会使用这个效果
link |
14:14.080
在下一段时间
link |
14:16.080
它保存记忆中最终效果
link |
14:20.080
传说中
link |
14:21.080
Jordan Network
link |
14:22.080
可以有更好的表现
link |
14:24.080
因为
link |
14:26.080
这里的隐藏层
link |
14:27.080
没有目标
link |
14:28.080
所以很难控制
link |
14:30.080
它会学习什么隐藏信息
link |
14:32.080
以及它会把什么东西
link |
14:34.080
放在记忆中
link |
14:35.080
但是这个Y
link |
14:36.080
它有目标
link |
14:37.080
所以我们可以有更好的理解
link |
14:39.080
把我们放在记忆中的东西
link |
14:44.080
另外
link |
14:45.080
线路虚拟计划
link |
14:46.080
可以双方向
link |
14:48.080
这意味着什么
link |
14:50.080
我们刚才看到
link |
14:51.080
在线路虚拟计划中
link |
14:53.080
如果你进入一个句子
link |
14:54.080
它会从开始读起
link |
14:56.080
直到句子结束
link |
14:58.080
假设我们用XT
link |
14:59.080
来代表每个字在句子中
link |
15:02.080
它会先读XT
link |
15:04.080
然后XT加1
link |
15:06.080
然后XT加2
link |
15:09.080
然而
link |
15:10.080
它的读取方向
link |
15:11.080
可以
link |
15:12.080
实际上
link |
15:13.080
被反过来
link |
15:15.080
它可以先读XT加2
link |
15:17.080
然后XT加1
link |
15:19.080
然后XT
link |
15:21.080
你可以训练一个
link |
15:22.080
前进的恢复虚拟计划
link |
15:24.080
和一个后退的恢复虚拟计划
link |
15:26.080
同时
link |
15:27.080
然后取出隐藏层
link |
15:31.080
从两个恢复虚拟计划
link |
15:34.080
连接它们到一个处理层
link |
15:36.080
来取得最终的Y
link |
15:38.080
所以你把前进的恢复虚拟计划的处理层
link |
15:40.080
当XT是入口
link |
15:43.080
和后退的恢复虚拟计划的处理层
link |
15:45.080
当XT是入口
link |
15:47.080
连接到处理层
link |
15:49.080
然后生成YT
link |
15:51.080
然后生成YT加1
link |
15:53.080
YT加2
link |
15:55.080
之类
link |
15:57.080
利用方向虚拟计划的好处是
link |
16:01.080
当恢复虚拟计划的处理层
link |
16:03.080
它会考虑更广泛的范围
link |
16:05.080
如果你只有一个前进的组织
link |
16:10.080
当生成YT和YT加1
link |
16:13.080
你的组织只会看到X1到XT加1的部分
link |
16:18.080
但是如果我们使用方向虚拟计划
link |
16:22.080
当YT加1生成
link |
16:24.080
你的组织不仅会考虑
link |
16:27.080
所有从X1到XT加1的进口
link |
16:30.080
也会考虑
link |
16:34.080
XT加1
link |
16:36.080
你的组织现在会考虑整个进口连接
link |
16:40.080
假设你正在进行处理处理
link |
16:43.080
你的组织是相等于考虑整个文字
link |
16:46.080
在决定每个词的处理处
link |
16:50.080
它会有更好的表现
link |
16:52.080
相比于一个只是考虑半个文字
link |
16:55.080
我们刚才谈到的恢复虚拟计划其实只是
link |
16:59.080
恢复虚拟计划最简单的版本
link |
17:02.080
这其实只是最简单的版本
link |
17:05.080
我们刚才谈到的记忆是最简单的
link |
17:08.080
也就是我们可以随时存取记忆中的价值
link |
17:12.080
并随时读取记忆中的价值
link |
17:15.080
但是现在更常用的记忆
link |
17:18.080
叫做长短时间记忆
link |
17:21.080
这个长短时间记忆的统称是LSTM
link |
17:25.080
这个长短时间记忆比较复杂
link |
17:28.080
这个长短时间记忆有三个门
link |
17:31.080
考虑外在世界
link |
17:33.080
当其他部位的脑络
link |
17:36.080
当一个脑络的输出
link |
17:38.080
想要写入记忆树
link |
17:40.080
它必须先通过一个门
link |
17:42.080
进口门
link |
17:44.080
只有当这个进口门
link |
17:46.080
快要被打开时
link |
17:51.080
你才能写入记忆树的价值
link |
17:53.080
如果它被锁住
link |
17:55.080
没有办法写入其他脑络中的价值
link |
17:59.080
至于进口门是否打开或关闭
link |
18:02.080
这都是由脑络学习的
link |
18:05.080
所以它可以学习打开进口门
link |
18:08.080
和关闭进口门
link |
18:11.080
如果进口门被关闭
link |
18:16.080
那进出口呢
link |
18:18.080
也有进出口门在进出口的位置
link |
18:21.080
这个进出口门会决定
link |
18:23.080
其他脑络能否从记忆中读取价值
link |
18:28.080
当进出口门被关闭
link |
18:30.080
没有办法读取价值
link |
18:33.080
只有当进出口门被打开
link |
18:35.080
价值才能被读
link |
18:37.080
这和进出口门
link |
18:39.080
被关闭是由脑络学习的
link |
18:46.080
有一个第三个门叫做忘记门
link |
18:49.080
忘记门决定
link |
18:51.080
忘记过去记忆的东西
link |
18:56.080
或者记忆的格式
link |
18:58.080
当这个忘记门格式
link |
19:00.080
记忆中存在的价值
link |
19:02.080
或者保留存在的价值
link |
19:04.080
是由脑络学习的
link |
19:07.080
整个LSTM有四个进出口
link |
19:11.080
和一个出口
link |
19:12.080
这四个进出口是什么
link |
19:14.080
一个是你想保留的价值
link |
19:16.080
在记忆中
link |
19:18.080
但它可能不能被保留
link |
19:20.080
这取决于进出口门
link |
19:21.080
决定是否让这些信息通过
link |
19:25.080
和信号控制进出口门
link |
19:29.080
和信号控制出口门
link |
19:31.080
和信号控制忘记门
link |
19:34.080
所以一个LSTM车
link |
19:37.080
有四个进出口
link |
19:38.080
但它只会生成一个出口
link |
19:50.080
这里有一个词
link |
19:52.080
你认为这个格式应该在哪里
link |
19:56.080
我把它放在这个图片上
link |
19:58.080
但这并不意味着我的图片是正确的
link |
20:01.080
我可能突然发现
link |
20:02.080
我犯了错误
link |
20:04.080
如果您认为这个格式应该
link |
20:06.080
放在长和短之间
link |
20:09.080
提起你的手
link |
20:10.080
link |
20:11.080
如果您认为它应该
link |
20:12.080
放在短和长之间
link |
20:14.080
提起你的手
link |
20:16.080
好的
link |
20:17.080
把你的手放下
link |
20:18.080
是的
link |
20:19.080
它应该放在短和长之间
link |
20:21.080
有时候我看到
link |
20:22.080
有人把它放在长和短之间
link |
20:24.080
实际上
link |
20:25.080
这并不合理
link |
20:27.080
它应该放在短和长之间
link |
20:29.080
因为它实际上是一个短和长的记忆
link |
20:33.080
它只是一个相对长和短的记忆
link |
20:37.080
因此
link |
20:38.080
根据这种语言的意义
link |
20:39.080
它是一个相对长和短的记忆
link |
20:45.080
因为我们之前提到的
link |
20:47.080
恢复脑络
link |
20:49.080
它的记忆会被清理
link |
20:51.080
在每一刻
link |
20:53.080
只要新的进口每次都出现
link |
20:56.080
恢复脑络
link |
20:57.080
恢复脑络会清理记忆
link |
20:59.080
因此这个短和长是非常短的
link |
21:02.080
它仅仅记忆
link |
21:03.080
事情从前的时间点
link |
21:05.080
但如果它是一个
link |
21:06.080
长和短的记忆
link |
21:07.080
它可以记住
link |
21:10.080
长和长的记忆
link |
21:11.080
只要ForgetGate
link |
21:12.080
并没有决定
link |
21:13.080
组成记忆
link |
21:15.080
它的价值可以存储
link |
21:18.080
好的
link |
21:19.080
那么记忆树
link |
21:21.080
如果您看它的
link |
21:22.080
解释更仔细
link |
21:24.080
它看起来像这样
link |
21:26.080
这是从外面的进口
link |
21:28.080
需要存储到车内
link |
21:30.080
这是进口门
link |
21:32.080
这是ForgetGate
link |
21:34.080
这是出口门
link |
21:38.080
假设
link |
21:39.080
车内存储的进口
link |
21:40.080
叫做Z
link |
21:43.080
控制进口门的信号
link |
21:45.080
叫做Z
link |
21:47.080
这个所谓的信号
link |
21:48.080
控制进口门
link |
21:49.080
其实是一个扩大器
link |
21:52.080
也是一个价值
link |
21:54.080
我们将谈论
link |
21:55.080
这个价值是从哪里来的
link |
21:58.080
无论如何
link |
21:59.080
这里有一个价值
link |
22:01.080
它被视为
link |
22:02.080
这个车内的进口
link |
22:03.080
和这个ForgetGate
link |
22:05.080
这里有一个价值
link |
22:06.080
ZF
link |
22:07.080
控制了它
link |
22:08.080
还有一个价值
link |
22:09.080
ZO
link |
22:10.080
控制了出口门
link |
22:12.080
组成这些东西之后
link |
22:14.080
您最终会得到一个出口
link |
22:17.080
写一个这里
link |
22:18.080
好的
link |
22:19.080
假设
link |
22:20.080
这里有一个价值
link |
22:21.080
已经存储在车内
link |
22:23.080
正在进口这四个价值
link |
22:26.080
哪个叫做Z
link |
22:27.080
现在
link |
22:28.080
假设您想进口
link |
22:30.080
进口价值
link |
22:31.080
叫做Z
link |
22:32.080
这三个门
link |
22:33.080
控制了Z
link |
22:34.080
ZF
link |
22:35.080
ZO
link |
22:36.080
相互
link |
22:37.080
会出现什么样子
link |
22:39.080
我们把Z
link |
22:40.080
通过一个启动功能
link |
22:42.080
取得G
link |
22:43.080
Z
link |
22:44.080
然后通过Z
link |
22:45.080
另一个启动功能
link |
22:47.080
取得F
link |
22:48.080
Z
link |
22:49.080
这里
link |
22:51.080
启动功能F
link |
22:53.080
这些Z
link |
22:54.080
ZF
link |
22:55.080
ZO通过
link |
22:56.080
通常我们选择SIGMOID功能
link |
22:58.080
它的意思是
link |
23:00.080
SIGMOID功能的出口价值
link |
23:02.080
在0到1之间
link |
23:04.080
和这个价值
link |
23:06.080
代表了
link |
23:07.080
关门有多大
link |
23:08.080
如果F的出口
link |
23:10.080
启动功能的出口是1
link |
23:13.080
这意味着
link |
23:14.080
关门现在在开放状态
link |
23:16.080
相反
link |
23:17.080
这意味着
link |
23:18.080
关门
link |
23:23.080
接下来
link |
23:24.080
我们把G
link |
23:25.080
Z
link |
23:26.080
通过这个出口价值
link |
23:27.080
F
link |
23:28.080
Z
link |
23:29.080
也就是
link |
23:30.080
G
link |
23:31.080
Z
link |
23:32.080
Asterisk
link |
23:33.080
F
link |
23:34.080
Z
link |
23:35.080
那ZF
link |
23:36.080
这个忘记门的ZF呢
link |
23:37.080
ZF的信号也通过了SIGMOID启动功能
link |
23:40.080
取得F
link |
23:41.080
ZF
link |
23:42.080
然后
link |
23:44.080
我们把F
link |
23:45.080
ZF
link |
23:46.080
通过记忆中存在的C价值
link |
23:48.080
取得C
link |
23:49.080
Asterisk
link |
23:50.080
F
link |
23:51.080
ZF
link |
23:52.080
然后
link |
23:53.080
加入C
link |
23:54.080
Asterisk
link |
23:55.080
F
link |
23:56.080
ZF
link |
23:57.080
到G
link |
23:58.080
Z
link |
23:59.080
Asterisk
link |
24:00.080
F
link |
24:01.080
Z
link |
24:02.080
加入这两个一起取得C
link |
24:03.080
C
link |
24:04.080
是记忆中存在的新价值
link |
24:05.080
记忆中存在的新价值
link |
24:06.080
是C
link |
24:07.080
所以
link |
24:08.080
根据目前的计算
link |
24:10.080
我们可以发现
link |
24:11.080
这个F
link |
24:12.080
Z
link |
24:13.080
控制了G
link |
24:14.080
Z
link |
24:15.080
是否存在记忆中
link |
24:16.080
因为当
link |
24:17.080
F
link |
24:18.080
Z
link |
24:19.080
等于0
link |
24:20.080
那么
link |
24:21.080
G
link |
24:22.080
Z
link |
24:23.080
Asterisk
link |
24:24.080
F
link |
24:25.080
Z
link |
24:26.080
等于0
link |
24:27.080
就像没有存在
link |
24:28.080
如果
link |
24:29.080
F
link |
24:30.080
Z
link |
24:31.080
等于1
link |
24:32.080
那么
link |
24:33.080
G
link |
24:34.080
Z
link |
24:35.080
直接用作存在
link |
24:36.080
那么
link |
24:37.080
这个
link |
24:38.080
F
link |
24:39.080
Z
link |
24:40.080
F
link |
24:41.080
就是决定我们应不应该
link |
24:42.080
清洗
link |
24:43.080
记忆中存在的价值
link |
24:44.080
如果
link |
24:45.080
F
link |
24:46.080
Z
link |
24:47.080
F
link |
24:48.080
是1
link |
24:49.080
那么
link |
24:50.080
link |
24:51.080
FORGET GATE
link |
24:52.080
开了
link |
24:53.080
link |
24:54.080
FORGET GATE
link |
24:55.080
开了
link |
24:56.080
C
link |
24:57.080
会直接通过
link |
24:58.080
这就等于
link |
24:59.080
记忆中存在的价值
link |
25:00.080
之前
link |
25:01.080
如果
link |
25:02.080
F
link |
25:03.080
Z
link |
25:04.080
F
link |
25:05.080
等于0
link |
25:06.080
那么
link |
25:07.080
link |
25:08.080
FORGET GATE
link |
25:09.080
关闭了
link |
25:10.080
那么
link |
25:11.080
0
link |
25:12.080
被C
link |
25:13.080
link |
25:14.080
记忆中存在的价值
link |
25:15.080
一起
link |
25:16.080
我们加上这两个价值
link |
25:17.080
写在记忆中
link |
25:18.080
以取得C
link |
25:19.080
FORGET GATE
link |
25:20.080
的转换
link |
25:21.080
是相反的
link |
25:22.080
对于我们的
link |
25:23.080
理性思考
link |
25:24.080
link |
25:25.080
FORGET GATE
link |
25:26.080
开了
link |
25:27.080
它代表
link |
25:28.080
记忆
link |
25:29.080
link |
25:30.080
link |
25:31.080
关闭了
link |
25:32.080
它代表
link |
25:33.080
忘记
link |
25:34.080
所以
link |
25:35.080
我觉得
link |
25:36.080
它的名字
link |
25:37.080
有点奇怪
link |
25:38.080
也许
link |
25:39.080
它不应该
link |
25:40.080
link |
25:41.080
FORGET GATE
link |
25:42.080
接下来
link |
25:43.080
这里有一个出口锁
link |
25:44.080
这个出口锁
link |
25:45.080
是由
link |
25:46.080
ZO
link |
25:47.080
控制的
link |
25:48.080
并取得
link |
25:49.080
F
link |
25:50.080
ZO
link |
25:51.080
通过F
link |
25:52.080
如果
link |
25:53.080
F
link |
25:54.080
ZO
link |
25:55.080
是1
link |
25:56.080
那么我们会
link |
25:57.080
乘以
link |
25:58.080
F
link |
25:59.080
ZO
link |
26:00.080
link |
26:01.080
H
link |
26:02.080
C
link |
26:03.080
如果
link |
26:04.080
F
link |
26:05.080
ZO
link |
26:06.080
是1
link |
26:07.080
这意味着
link |
26:08.080
H
link |
26:09.080
C
link |
26:10.080
可以通过
link |
26:11.080
出口锁
link |
26:12.080
link |
26:13.080
link |
26:14.080
阅读
link |
26:15.080
也许
link |
26:16.080
你仍然不明白
link |
26:17.080
所以
link |
26:18.080
之后
link |
26:19.080
我打算
link |
26:20.080
制作一个
link |
26:21.080
手写
link |
26:22.080
LSTM
link |
26:23.080
我从来没有
link |
26:24.080
看过
link |
26:25.080
手写
link |
26:26.080
LSTM
link |
26:27.080
在其他地方
link |
26:28.080
所以
link |
26:29.080
你可以
link |
26:30.080
认为
link |
26:31.080
我做了
link |
26:32.080
这个页
link |
26:33.080
很久
link |
26:34.080
link |
26:35.080
让我们
link |
26:36.080
先说
link |
26:37.080
我们想
link |
26:38.080
给的
link |
26:39.080
例子
link |
26:40.080
我们的
link |
26:41.080
进口
link |
26:42.080
全是三个
link |
26:43.080
面积
link |
26:44.080
出口
link |
26:45.080
全是
link |
26:46.080
一个
link |
26:47.080
面积
link |
26:50.080
这三个
link |
26:51.080
面积
link |
26:52.080
之间的
link |
26:53.080
关系
link |
26:54.080
是什么
link |
26:55.080
link |
26:56.080
出口
link |
26:57.080
link |
26:58.080
记忆
link |
26:59.080
link |
27:00.080
关系
link |
27:01.080
是什么
link |
27:02.080
支持
link |
27:03.080
link |
27:04.080
第二个
link |
27:05.080
面积
link |
27:06.080
link |
27:07.080
价值
link |
27:08.080
X2
link |
27:09.080
link |
27:10.080
1
link |
27:11.080
价值
link |
27:12.080
X1
link |
27:13.080
会被
link |
27:14.080
存在
link |
27:15.080
记忆
link |
27:16.080
假设
link |
27:17.080
价值
link |
27:18.080
X2
link |
27:19.080
link |
27:20.080
-1
link |
27:21.080
记忆
link |
27:22.080
会被
link |
27:23.080
重置
link |
27:24.080
价值
link |
27:25.080
存在
link |
27:26.080
记忆
link |
27:27.080
会被
link |
27:28.080
忘记
link |
27:29.080
假设
link |
27:30.080
价值
link |
27:31.080
3
link |
27:32.080
link |
27:33.080
1
link |
27:34.080
你会
link |
27:35.080
打开
link |
27:36.080
出口
link |
27:37.080
出口
link |
27:38.080
link |
27:39.080
1
link |
27:40.080
link |
27:41.080
这里
link |
27:42.080
link |
27:43.080
X2
link |
27:44.080
link |
27:45.080
1
link |
27:46.080
3
link |
27:47.080
会被
link |
27:48.080
存在
link |
27:49.080
记忆
link |
27:50.080
价值
link |
27:51.080
在这里
link |
27:52.080
变成
link |
27:53.080
3
link |
27:54.080
然后
link |
27:55.080
1
link |
27:56.080
link |
27:57.080
出现
link |
27:58.080
link |
27:59.080
这里
link |
28:00.080
所以
link |
28:01.080
4
link |
28:02.080
会被
link |
28:03.080
存在
link |
28:04.080
记忆
link |
28:05.080
所以
link |
28:06.080
我们
link |
28:07.080
可以
link |
28:08.080
看到
link |
28:09.080
1
link |
28:10.080
6
link |
28:11.080
link |
28:12.080
存在
link |
28:13.080
所以
link |
28:14.080
价值
link |
28:15.080
link |
28:16.080
6
link |
28:17.080
这里
link |
28:18.080
1
link |
28:19.080
link |
28:20.080
出口
link |
28:21.080
所以
link |
28:22.080
价值
link |
28:23.080
link |
28:24.080
6
link |
28:25.080
然后
link |
28:26.080
我们
link |
28:27.080
link |
28:28.080
link |
28:29.080
计算
link |
28:30.080
这是
link |
28:31.080
一个
link |
28:32.080
记忆
link |
28:33.080
价值
link |
28:34.080
记忆
link |
28:35.080
价值
link |
28:36.080
漂亮
link |
28:37.080
4
link |
28:38.080
1
link |
28:39.080
2
link |
28:40.080
3
link |
28:41.080
4
link |
28:42.080
1
link |
28:43.080
4
link |
28:44.080
1
link |
28:45.080
4
link |
28:46.080
4
link |
28:47.080
1
link |
28:48.080
4
link |
28:49.080
4
link |
28:50.080
4
link |
28:51.080
4
link |
28:52.080
4
link |
28:53.080
4
link |
28:54.080
4
link |
28:55.080
4
link |
28:56.080
4
link |
28:57.080
4
link |
28:58.080
4
link |
28:59.080
4
link |
29:00.080
4
link |
29:01.080
4
link |
29:02.080
4
link |
29:03.080
4
link |
29:04.080
4
link |
29:05.080
哪个价值应该被增加,并且哪个价值应该是偏差价值?
link |
29:10.080
它是通过训练数据和线权线学习的。
link |
29:14.080
我们只是假设我们已经知道这些价值。
link |
29:18.080
然后我使用这些输入来得到输出。
link |
29:21.080
让我们进行计算,但是在计算之前,
link |
29:25.080
根据它的输入,根据这些设定,
link |
29:29.080
让我们分析我们可能得到的结果。
link |
29:32.080
您可以在这里看到,
link |
29:35.080
X1是乘以1,所有其他东西是乘以0,
link |
29:39.080
因此,在这里,我们只是使用X1作为输入,
link |
29:43.080
然后我们看看输入门,
link |
29:46.080
它是X2**100。
link |
29:49.080
偏差是-10,也就是说,当X2没有价值,
link |
29:53.080
因为偏差是-10,输入门通常会关闭。
link |
29:58.080
如果偏差是-10,那么在启动功能之后,
link |
30:02.080
这里是sigmoid,它的价值将接近0。
link |
30:07.080
因此,输入门将关闭。
link |
30:10.080
然后,如果X2有价值,
link |
30:13.080
它将超过-10的偏差。
link |
30:16.080
例如,如果X2是1,
link |
30:19.080
它将大于偏差。
link |
30:21.080
在此时,输入将是一个大的正数。
link |
30:25.080
然后,输入门将开启。
link |
30:28.080
那么忘记门呢?
link |
30:30.080
忘记门通常会开启。
link |
30:32.080
您会发现,由于偏差是10,
link |
30:35.080
它通常会开启。
link |
30:37.080
因此,它总是记住一些东西。
link |
30:40.080
只有当X2是一个大的负面价值,
link |
30:43.080
它将压抑偏差10并关闭忘记门。
link |
30:46.080
那么输出门呢?
link |
30:49.080
输出门通常会关闭,
link |
30:52.080
它将超过-10的偏差。
link |
30:55.080
如果X3有一个大的负面价值,
link |
30:58.080
它可以压抑偏差并开启输出门。
link |
31:01.080
那么让我们通过这个软件进行一些输入。
link |
31:04.080
我们假设G和H都是线性的,
link |
31:07.080
为了计算方便。
link |
31:10.080
假设记忆中存在的最初价值是0。
link |
31:13.080
好的,让我们输入第一个数字,310。
link |
31:16.080
310的输入数字会发生什么?
link |
31:19.080
310的输入数字会变成1,
link |
31:22.080
因此这里的数值是3。
link |
31:25.080
然后1×100-10,
link |
31:28.080
因此这里的输入门大约是1。
link |
31:31.080
因此它开了。
link |
31:33.080
1×3,输入门通过后得到的数值是3。
link |
31:38.080
那忘记门呢?
link |
31:40.080
输入数字是310。
link |
31:43.080
由于输入数字是310,
link |
31:46.080
因此忘记门开了。
link |
31:49.080
乘以0乘以1加3,
link |
31:51.080
因此忘记门开了。
link |
31:53.080
它没有价值,
link |
31:55.080
因此它没有效果。
link |
31:57.080
然后,0×1加3,
link |
31:59.080
因此记忆中的价值变成3。
link |
32:02.080
接下来,我们来看看输出门,
link |
32:04.080
输入数字是310。
link |
32:07.080
因此输出门仍然关闭,
link |
32:10.080
3不能通过,因此输出是0。
link |
32:13.080
接下来输入数字是410。
link |
32:18.080
输入数字仍然是4。
link |
32:20.080
然后这个410会打开输入门。
link |
32:24.080
忘记门也会打开。
link |
32:26.080
当忘记门打开后,
link |
32:28.080
记忆中的价值是3×1加4,
link |
32:31.080
即7。
link |
32:33.080
输出门仍然关闭。
link |
32:36.080
因此整个记忆中的输出仍然是0。
link |
32:43.080
接下来会发生什么?
link |
32:44.080
接下来的输入数字是200。
link |
32:47.080
现在输入变成了2。
link |
32:50.080
这输入门会发生什么?
link |
32:53.080
输入门的启动功能是-10,
link |
32:56.080
因此结果接近0,
link |
32:58.080
0×2等于0。
link |
33:02.080
因此输入门封锁了输入2。
link |
33:05.080
那忘记门呢?
link |
33:07.080
当我们输入200进入忘记门时,
link |
33:10.080
启动功能的输入是10。
link |
33:13.080
因此忘记门仍然是打开的。
link |
33:15.080
然后7×1加0。
link |
33:18.080
结果记忆中的价值并没有改变,
link |
33:21.080
仍然是7。
link |
33:23.080
然后这个7无法输出,
link |
33:25.080
因为输出门仍然是关闭的。
link |
33:27.080
因此输出仍然是0。
link |
33:30.080
好,接下来输入数字是101。
link |
33:34.080
什么会发生?
link |
33:35.080
输入数字101,
link |
33:37.080
这里的输入仍然是1。
link |
33:39.080
输入门封锁了。
link |
33:41.080
那忘记门呢?
link |
33:43.080
因此忘记门仍然是同样的,
link |
33:46.080
它是打开的。
link |
33:47.080
因此记忆中的价值仍然是不改变的。
link |
33:50.080
那输出门呢?
link |
33:52.080
当输入101时,
link |
33:54.080
你会打开输出门,
link |
33:56.080
然后启动功能的输入变成90。
link |
33:59.080
通过启动功能后,我们得到1。
link |
34:04.080
然后1乘7等于7。
link |
34:07.080
因此它将输出一个价值从记忆中。
link |
34:10.080
记忆中的7价值将被读出。
link |
34:13.080
最后,让我们试试3-1-0。
link |
34:18.080
这个3被读入为输入。
link |
34:22.080
输入门将被关闭。
link |
34:24.080
那忘记门呢?
link |
34:27.080
因为这个价值是-1,
link |
34:30.080
忘记门的启动功能输入是-90。
link |
34:34.080
启动功能输出是0。
link |
34:36.080
因此,记忆中存在的价值将被清除。
link |
34:40.080
记忆中存在的价值将被增加
link |
34:43.080
忘记门的输出并变成0。
link |
34:46.080
对于输出门来说,
link |
34:47.080
它仍然被关闭,
link |
34:49.080
但这并不重要是否被关闭,
link |
34:51.080
因为记忆中的价值仍然是0。
link |
34:54.080
那么它读出的价值也仍然是0。
link |
34:59.080
这就是整个计算机的过程。
link |
35:02.080
现在你可能会疑问,
link |
35:04.080
这很不一样于我们之前看到的脑组织。
link |
35:07.080
它和原始的脑组织有什么关系?
link |
35:11.080
你可以这么想。
link |
35:15.080
我们原始的脑组织里有很多的脉络。
link |
35:19.080
我们将以不同重量积分进入脉络,
link |
35:22.080
然后将它们作为不同的脉络的进口。
link |
35:26.080
另外,每个脉络都有一个功能,
link |
35:28.080
这将带入一种重量积分,
link |
35:30.080
并释放另一种重量积分。
link |
35:32.080
那么LSTM呢?
link |
35:34.080
你可以想象LSTM的记忆组织是一个脉络。
link |
35:38.080
所以如果我们今天想使用一个LSTM网络,
link |
35:43.080
你只需要更换一个简单的脉络,
link |
35:47.080
与一颗LSTM的脉络,
link |
35:52.080
现在的进口X1和X2将被不同重量积分,
link |
35:56.080
作为不同的LSTM的进口,
link |
35:59.080
也就是说,
link |
36:01.080
假设我们现在只有两个脉络在这个隐藏的层面上,
link |
36:06.080
也就是说,只有两个LSTM,
link |
36:08.080
但实际上你将有超过两个脉络。
link |
36:11.080
你可能有,说,1000个脉络和1000个LSTM的记忆组织,
link |
36:17.080
现在假设只有两个LSTM,
link |
36:19.080
那么X1和X2将被一组重量积分,
link |
36:23.080
来控制第一个LSTM的出口门。
link |
36:27.080
再次,把它们分成另一组重量积分来控制第一个LSTM的进口门,
link |
36:33.080
并把它们分成另一组重量积分来作为第一个LSTM的进口,
link |
36:38.080
并把它们分成另一组重量积分来控制第一个LSTM的出口门。
link |
36:42.080
第二个LSTM同样进行同样的过程。
link |
36:46.080
X1和X2将被一组重量积分来控制第一个LSTM的出口门,
link |
36:50.080
并且相同。
link |
36:52.080
为了出口门,为了进口门,为了进口,为了忘记门。
link |
36:57.080
现在,我们刚才提到LSTM有四个进口和一个出口,
link |
37:02.080
而为了一个LSTM,四个进口都不一样。
link |
37:07.080
第一个LSTM的四个进口都不一样,
link |
37:11.080
第二个LSTM的四个进口都不一样。
link |
37:15.080
在原始的智能网络中,
link |
37:17.080
智能网络只有一个进口和一个出口。
link |
37:20.080
LSTM需要四个进口来生产出口。
link |
37:26.080
就像一些机器一样,它只需要一根力线来运行机器。
link |
37:30.080
LSTM需要四根力线来运行LSTM机器。
link |
37:36.080
LSTM需要四个进口,
link |
37:40.080
而这四个进口都不一样。
link |
37:42.080
LSTM需要的几个准备准备是
link |
37:45.080
假设LSTM的网络有同样的数量的智能。
link |
37:50.080
就像原始的智能网络,
link |
37:53.080
LSTM需要的准备准备
link |
37:56.080
将是四倍的一般智能网络。
link |
37:59.080
从这个图片,您可以明显地看到
link |
38:03.080
原始的智能网络只需要这部分的准备
link |
38:06.080
来生产出口给智能网络。
link |
38:09.080
但LSTM还需要控制三个其他进口,
link |
38:12.080
所以它需要四倍的准备。
link |
38:15.080
但这样,您可能仍然无法想象如何。
link |
38:19.080
这与原始的智能网络有关。
link |
38:23.080
这张图片并不像我们刚才学习的原始智能网络
link |
38:28.080
因此,我们必须画出另一张图片来展示它。
link |
38:32.080
假设我们现在有一个整个LSTM图片。
link |
38:36.080
在这个LSTM图片的图片中,在每个记忆中,
link |
38:40.080
有一个图片存在每个LSTM图片中。
link |
38:45.080
击击所有图片一起,
link |
38:48.080
我们会得到一个图片,C-T1。
link |
38:53.080
每个图片存在一个记忆图片中,
link |
38:56.080
代表一个面积在图片中C-T1。
link |
39:00.080
现在,在时间T,
link |
39:03.080
进入一个图片,X-T。
link |
39:06.080
这个图片是首先通过一个线变化,
link |
39:09.080
我们将它分解成一个图片来变成另一个图片Z。
link |
39:13.080
您将X-T分解成一个图片来变成Z。
link |
39:17.080
然后Z也是一个图片。
link |
39:20.080
那么Z图片代表什么?
link |
39:23.080
该图片的每个面积是什么?
link |
39:26.080
每个Z面积,该图片操纵
link |
39:30.080
每个LSTM的进口。
link |
39:33.080
所以Z面积是正确的。
link |
39:36.080
记忆图片的数字。
link |
39:38.080
然后第一个Z面积控制了第一个图片的进口,
link |
39:42.080
第二个面积控制了第二个图片,
link |
39:44.080
之类的。
link |
39:45.080
希望你们都明白我的意思。
link |
39:48.080
好的,这个X-T将被另一个变化变化。
link |
39:52.080
来得到ZI,而这个ZI,其面积也同样是图片的数字。
link |
39:58.080
ZI的每个面积
link |
40:01.080
会控制记忆图片。
link |
40:03.080
例如,ZI的第一个面积控制了
link |
40:06.080
第一个图片的进口,
link |
40:08.080
第二个面积控制了第二个图片的进口,
link |
40:12.080
以及最后一个面积控制了最后一个图片的进口。
link |
40:18.080
那么忘记图片和出口图片呢?
link |
40:21.080
它和之前一样。
link |
40:23.080
乘以XT乘以一个变化来得到ZF,
link |
40:26.080
ZF会控制每个忘记图片。
link |
40:29.080
XT乘以另一个变化来得到ZO,
link |
40:32.080
ZO会控制每个图片的出口图片。
link |
40:35.080
好的,所以我们乘以XT乘以四个不同变化。
link |
40:40.080
来得到四个不同的图片,
link |
40:42.080
这四个图片的大小
link |
40:45.080
正是类似于图片的数量。
link |
40:48.080
这四个图片加起来会控制
link |
40:52.080
这些记忆细胞的运作。
link |
40:57.080
好的,我们知道记忆细胞像这样,
link |
41:01.080
进口是Z,ZI,ZF,ZO。
link |
41:05.080
注意这四个Z其实是图片。
link |
41:09.080
进口的价值其实只是每个图片的面积。
link |
41:14.080
因为每个图片的进口来自于图片的不同面积。
link |
41:18.080
它们的进口价值会不同。
link |
41:21.080
然而,所有图片都可以一起计算。
link |
41:24.080
如何呢?
link |
41:25.080
我们说Z应该被ZI的价值乘以。
link |
41:28.080
ZI通过一个启动功能。
link |
41:32.080
所以我们首先通过启动功能通过ZI,
link |
41:35.080
并与Z乘以。
link |
41:37.080
注意这里的乘以是Y的乘以。
link |
41:42.080
这个ZF也应该通过。
link |
41:45.080
忘记门的启动功能。
link |
41:48.080
它被积累在记忆细胞的价值中。
link |
41:53.080
它被积累在记忆细胞的原始价值中。
link |
41:57.080
接下来,加入这两个价值。
link |
42:01.080
你只需要加入ZI和Z的乘以。
link |
42:05.080
与ZF和C的乘以,T1。
link |
42:09.080
加入它们。
link |
42:11.080
好的,对于出口的出口,
link |
42:13.080
ZO通过启动功能,
link |
42:15.080
并与
link |
42:17.080
之前的增加的结果乘以。
link |
42:20.080
并得到最终的出口YT。
link |
42:24.080
这次增加的结果
link |
42:28.080
是记忆中存在的价值,
link |
42:30.080
也就是CT。
link |
42:32.080
然后这个过程会在下一个时间表中重复。
link |
42:35.080
在下一个时间表中,
link |
42:37.080
输入XT加1。
link |
42:39.080
然后,你乘以Z出口的出口。
link |
42:42.080
你乘以忘记的出口
link |
42:44.080
与记忆中存在的价值。
link |
42:47.080
然后加入这个价值
link |
42:48.080
这个价值
link |
42:49.080
并乘以出口的价值。
link |
42:53.080
然后得到出口
link |
42:54.080
在下一个时间点像这样。
link |
42:56.080
然后你可能会觉得
link |
42:57.080
这已经很复杂了。
link |
42:59.080
如果你自己制作一个视频表,
link |
43:01.080
这显然会需要很长的时间。
link |
43:08.080
然而,这并不是最终的LSTM版本。
link |
43:12.080
这只是一个简单的版本。
link |
43:14.080
什么是一个真正的LSTM呢?
link |
43:20.080
它会把出口发送到下一个时间表中。
link |
43:27.080
它会把这个隐藏层的出口
link |
43:29.080
作为下一个时间表的进口。
link |
43:32.080
换言之,
link |
43:33.080
两个时间表的进口
link |
43:36.080
在前一个时间表的出口
link |
43:38.080
影响了这些出口的计算。
link |
43:41.080
事实上,
link |
43:42.080
不仅如此,
link |
43:43.080
人们还加入了一个叫出口的东西。
link |
43:46.080
什么是出口呢?
link |
43:47.080
THP出口
link |
43:48.080
也是把价值发送到记忆中。
link |
43:52.080
到下一个时间表。
link |
43:54.080
所以当你操作LSTM的四个出口时,
link |
43:57.080
你同时要考虑X,H,C。
link |
44:01.080
你组合这三个数字
link |
44:03.080
并将它们分成四个不同的转变
link |
44:06.080
以获得这四个不同的数字。
link |
44:08.080
来控制LSTM。
link |
44:10.080
通常,LSTM并没有只有一个层。
link |
44:14.080
现在是常规的五或六层,
link |
44:17.080
所以它看起来像这样。
link |
44:19.080
而每个人第一次看到这个,
link |
44:22.080
他的反应就像这样,
link |
44:24.080
我刚才看到了什么?
link |
44:26.080
我记得最远的,
link |
44:27.080
系统模式的作者,
link |
44:30.080
他曾经对我说过一句话。
link |
44:35.080
他说第一次看到LSTM,
link |
44:38.080
他的反应就像这个图片一样。
link |
44:42.080
这太复杂了。
link |
44:44.080
这并不会成功。
link |
44:45.080
我知道所有人都觉得这并不会成功。
link |
44:48.080
第一次看到LSTM,
link |
44:50.080
但现在实际上已经很常见了。
link |
44:53.080
所以当有人告诉你,
link |
44:56.080
他们解决了RNN的问题,
link |
44:58.080
你会问他为什么不使用LSTM?
link |
45:01.080
因为他实际上使用LSTM。
link |
45:03.080
现在当你说你使用RNN时,
link |
45:07.080
你实际上是在说使用LSTM。
link |
45:10.080
所以这其实很普通。
link |
45:13.080
其实Keras支持LSTM,
link |
45:15.080
所以即使你不明白
link |
45:17.080
我们刚才说的复杂的事情,
link |
45:20.080
你只需要在Keras中
link |
45:22.080
写下L, S, T, M, 然后就结束了。
link |
45:29.080
Keras实际上支援三种
link |
45:31.080
复杂的脑络组织。
link |
45:33.080
一个是LSTM,
link |
45:34.080
一个是GRU。
link |
45:36.080
GRU是一个比较简单的版本LSTM。
link |
45:39.080
它只有两个门。
link |
45:41.080
与LSTM相比,
link |
45:43.080
它有一个更少的门,
link |
45:45.080
但它的表现与LSTM相似,
link |
45:47.080
因为它有三分之一的缺点。
link |
45:50.080
它可以阻挡一些复杂的东西。
link |
45:53.080
如果你想使用最简单的RNN,
link |
45:55.080
我们在这堂课的开始时
link |
45:56.080
已经讲过了。
link |
45:58.080
你必须明确地告诉Keras
link |
46:00.080
你想使用简单的RNN。
link |
46:04.080
那我想我们今天就先说到这里。
link |
46:07.080
谢谢。
link |
46:08.080
台湾国际大学
link |
46:10.080
人工智能研究中心,
link |
46:12.080
科学和技术部门,
link |
46:14.080
人工智能技术组织研究中心,
link |
46:17.080
人工智能研究中心,
link |
46:20.080
科学和技术部门,
link |
46:22.080
台湾国际大学