【李宏毅机器学习】Recurrent Neural Network Part1 循环神经网络(p20) 学习笔记

李宏毅机器学习学习笔记汇总
课程链接


Example Application

Slot Filling

在这里插入图片描述
可以使用前馈神经网络来实现,需要把每个词用向量来表示。
在这里插入图片描述

把词用向量来表示的方法

1-of-N encoding / one-hot

在这里插入图片描述

Beyond 1-of-N encoding

多一个纬度other,不在词典中的词汇归类入other
在这里插入图片描述

存在的问题

词汇表示为一个向量,输入是这个向量,输出是一个概率分布,属于某种的概率
在这里插入图片描述
神经网络在输入同一个词输出的概率分布是一样的,但是这样是不对的(如下图例子),所以我们希望神经网络是有记忆的。
在这里插入图片描述

Recurrent Neural Network(RNN)

有记忆的神经网络,叫做RNN。

每次hidden layer里的neural产生输出的时候都会存到内存中,在下一次有input的时候,hidden layer的neural不止会考虑input还会考虑内存中的值。
在这里插入图片描述

Example

假设weight都是1,没有bias,激活函数都是线性的。
输入和输出都是一个序列。

第一次:内存中还没存过东西,都是0,输入为1,计算后存入内存

在这里插入图片描述
第二次:考虑输入和内存,得到新的结果并且保存
(哪怕两次输入是一样的,输出结果是不一样的,因为内存中的值是不一样的)
在这里插入图片描述
第三次:重复上述步骤。。。
在这里插入图片描述
在RNN中,改变输入序列的顺序,将会改变输出。

RNN 处理slots filling问题

RNN处理的流程:

ps:并不是有三个神经网络,而是同一个神经网络在三个不同的时间点,被使用了三次
在这里插入图片描述
在这里插入图片描述

Of course it can be deep…

在这里插入图片描述

RNN 的变形

Elman Network 和 Jordan Network

Elman Network:把hidden layer的值存起来,在下一个时间点读出来,如前面的例子

Jordan Network:存的是整个网络的output的值,在下一个时间点再读出来。
在这里插入图片描述

Bidirectional RNN

RNN还可以是双向的。可以看到更多的东西,得到更好的performance。
在这里插入图片描述

Long Short-term Memory(LSTM)

neutral的output想要写入内存前需要经过一系列的闸门。
input gate:打开的时候neutral的output才可以被写入内存
output gate:外界其他的neutral是否可以通过内存读出值。
forget gate(遗忘门):什么时候内存要把过去的东西忘掉

以上三个都是需要网络自己学习。

LSTM可以看作有四个input,一个output

input :

  • 想要被存到内存的值
  • 操控input gate的信号
  • 操控output gate的信号
  • 操控forget gate的信号

在这里插入图片描述
在这里插入图片描述

LSTM - Example

在这里插入图片描述

图上标记出来的权重假设是已经训练好的参数

在这里插入图片描述
完整流程:(假想已知参数,不用梯度下降了)
输入310
在这里插入图片描述

输入410
在这里插入图片描述
输入200
在这里插入图片描述

输入101
在这里插入图片描述
输入3 -1 0
在这里插入图片描述
传统神经网络和LSTM的区别
在这里插入图片描述
在这里插入图片描述
四倍参数。

LSTM

在这里插入图片描述
在这里插入图片描述

还没结束,进一步的:
加上前一个时间点的output h
在这里插入图片描述
把存在内存中的值也加进去
在这里插入图片描述

Multiple-layer LSTM

在这里插入图片描述
哭了
在这里插入图片描述


版权声明:本文为weixin_41894030原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。