P38 · 架构
Recurrent Neural Network(上)
1这节解决什么问题
同一个词,前面是「离开」还是「抵达」,它该填的槽就不一样。输入的词一样,答案却要变——信息不在这个词里,在它前面。
2一句话讲清
循环网络给模型一个「小本子」(隐状态),把看过的东西记在里面,随序列一步步往下传;同一组权重在每个时刻反复使用。
3通俗解释
- 每个时刻读入当前输入和上一时刻的小本子,算出新的小本子和输出。权重在所有时刻共用,所以序列变长,参数不增加。
- 小本子是固定大小的,是个瓶颈:它只能记网络认为重要的部分,记不下整段。
- 训练时把序列按时间摊开成一条很长的链,再照常往回分责任。同一个权重在链上被反复相乘,略大于一就越来越炸,略小于一就越来越淡。
- 长短期记忆用三个「闸门」(输入、遗忘、输出)把记忆更新从「乘」改成「加」:只要遗忘闸门开着,很早的信息也能沿这条路传回来。它缓解「越来越淡」,但不管「越来越炸」。
4一个例子
讲义例子
讲义用一组全是一的权重做过演示:输入的顺序不同,输出就跟着变,说明它对顺序敏感——这正是它比「把词装进袋子、不管顺序」强的地方。讲义另用「同一个数连乘很多次」说明问题:比一稍大,乘几百次就爆掉;比一稍小,乘几百次就几乎归零。
5常见误区
- 以为长短期记忆解决了「越来越淡」。它缓解的是记忆通道上的变淡,而且以遗忘闸门开着为前提;讲义明确说它不管「越来越炸」,那要靠梯度裁剪。
- 以为「按时间反向传播」是另一种算法。它就是普通的往回分责任,只是那条链在时间上拉得很长;只回传最近几步是工程上的近似。
- 以为循环网络能记住整个序列。小本子大小固定,长序列必然丢信息——这正是后来注意力的动机。
6和相邻几节的关系
P36、P37 的自注意力正是为了去掉这里的「必须按顺序算」和长距离衰减;P47、P48 的 Transformer 把「编码器可以用循环网络或卷积」换成了自注意力。
730 秒回顾
需要记忆,所以有小本子;同一组权重反复用,参数不随长度长;按时间摊开就是普通的往回分责任;反复相乘导致爆炸或消失,裁剪只治爆炸;闸门把乘变加,缓解消失不管爆炸。
8小自测
先自己答,再点开对答案。
1. 序列变长,循环网络的参数会变多吗?为什么?
不会。同一组权重在每个时刻重复使用,所以参数量只跟每步的输入、小本子、输出的规模有关,跟序列多长无关。
2. 遗忘闸门全开和全关,分别意味着什么?
全开时旧记忆几乎原样保留,新内容直接加上去,很早的信息也能传回来;全关时旧记忆被丢掉,小本子里只剩新写进去的内容。