Example
李老师课程开篇举了一个slot filling的例子,首先订票系统存在一些slot(destination & time of arrival),假设顾客说 i would like to arrive Taipei on November 2nd;那么系统就会得出结论这句话里有那些词汇对应我们的slot,属于哪一个slot,比如Taipei属于destination,November 2nd属于time of arrival。
应用之前学到的前馈神经网络,将每一个词比如Taipei作为一个vector,作为网络的input,那么output就应该是一个概率的分配,代表现在输入的这个词属于每一个slot的概率,比如Taipei属于destination的概率和它属于time of departure的概率。
原本顾客说 arrive Taipei on November 2nd,但是如果顾客不这么说,而是说 leave Taipei on November 2nd;那么系统如何知道Taipei是destination还是place of departure呢?
现在如果NN是有记忆的,输入Taipei之前,NN就已经读过动词arrive或leave,根据上文产生不同的output,这样就可以解决input词汇不同,output不同的问题。
基本的RNN
在RNN里面,每一次hidden layer的neuron产生output的时候,这个output会被存到memory里去(用蓝色方块表示memory)。那下一次当有input时,这些neuron不只是考虑,还会考虑存到memory里的值。对它来说除了以外,这些存在memory里的值也会影响它的output。
对于上文的航班订票的例子
arrive首先作为一个vector进入NN里面,NN的隐藏层output记为(也是一个vector),赋值给,产生的就是arrive属于每一个slot filling的概率,接下来会被存入到memory;Taipei作为input,其隐藏层会同时考虑Taipei这个input和存入到memory里面的,得到,赋值给,即Taipei属于每一个slot filling的概率。
上图就有点像是一个神经网络的三个时间戳,即一个NN在三个不同的时间点被使用了三次。
它是如何解决一个记忆性的问题呢?同样是输入Taipei这个词,红色Taipei前连接了leave,而绿色Taipei前连接了arrive;由于leave和arrive的vector不同,所以隐藏层的output就会不同,存入memory的值也会不同,那么最终的output自然也会不同。
RNN及其变体
长短期记忆网络 LSTM
- 输入门
- 遗忘门
- 输出门
记忆细胞 候选记忆细胞
门控循环单元 GRU
序列信号中,可能存在跨度很大的词性依赖关系,例如
The child,which already ate candy,was happy.
The children,which already ate candy,were happy.
- 更新门 更新门的作用类似于
LSTM的遗忘门和输入门。它决定丢弃哪些信息以及添加哪些新信息。 - 重置门 用于决定忘记多少过去的信息。
PPT 22