循环神经网络

166 阅读2分钟

Example

image.png

李老师课程开篇举了一个slot filling的例子,首先订票系统存在一些slot(destination & time of arrival),假设顾客说 i would like to arrive Taipei on November 2nd;那么系统就会得出结论这句话里有那些词汇对应我们的slot,属于哪一个slot,比如Taipei属于destinationNovember 2nd属于time of arrival

image.png

应用之前学到的前馈神经网络,将每一个词比如Taipei作为一个vector,作为网络的input,那么output就应该是一个概率的分配,代表现在输入的这个词属于每一个slot的概率,比如Taipei属于destination的概率和它属于time of departure的概率。

原本顾客说 arrive Taipei on November 2nd,但是如果顾客不这么说,而是说 leave Taipei on November 2nd;那么系统如何知道Taipeidestination还是place of departure呢?

image.png

现在如果NN是有记忆的,输入Taipei之前,NN就已经读过动词arriveleave,根据上文产生不同的output,这样就可以解决input词汇不同,output不同的问题。

基本的RNN

image.png

RNN里面,每一次hidden layerneuron产生output的时候,这个output会被存到memory里去(用蓝色方块表示memory)。那下一次当有input时,这些neuron不只是考虑inputx1,x2inputx_1,x_2 ,还会考虑存到memory里的值。对它来说除了x1,x2x_1,x_2以外,这些存在memory里的值a1,a2a_1,a_2 也会影响它的output

image.png

对于上文的航班订票的例子

image.png

arrive首先作为一个vector进入NN里面,NN的隐藏层output记为a1a^1(也是一个vector),赋值给y1y^1,产生的y1y^1就是arrive属于每一个slot filling的概率,接下来a1a^1会被存入到memoryTaipei作为input,其隐藏层会同时考虑Taipei这个input和存入到memory里面的a1a^1,得到a2a^2,赋值给y2y^2,即Taipei属于每一个slot filling的概率。

上图就有点像是一个神经网络的三个时间戳,即一个NN在三个不同的时间点被使用了三次。

image.png

它是如何解决一个记忆性的问题呢?同样是输入Taipei这个词,红色Taipei前连接了leave,而绿色Taipei前连接了arrive;由于leavearrivevector不同,所以隐藏层的output就会不同,存入memory的值也会不同,那么最终的output自然也会不同。

RNN及其变体

image.png

长短期记忆网络 LSTM

  • 输入门
  • 遗忘门
  • 输出门

记忆细胞 候选记忆细胞

门控循环单元 GRU

序列信号中,可能存在跨度很大的词性依赖关系,例如

The child,which already ate candy,was happy.

The children,which already ate candy,were happy.

image.png

  • 更新门 更新门的作用类似于 LSTM 的遗忘门和输入门。它决定丢弃哪些信息以及添加哪些新信息。
  • 重置门 用于决定忘记多少过去的信息。

PPT 22