您的位置:首页 > 理论基础 > 计算机网络

[机器学习入门] 李宏毅机器学习笔记-32 (Recurrent Neural Network part 1;循环神经网络 part 1)

2017-07-29 21:04 841 查看
[机器学习入门] 李宏毅机器学习笔记-32 (Recurrent Neural Network part 1;循环神经网络 part 1)

PDFVIDEO

Recurrent Neural Network

Example Application



slot 安装、放入、沟槽、插入…… 哇好多意思啊。

Slot Filling 就相当把关键字提溜出来放到相应的凹槽内,强迫症患者真舒服。



那么怎样将一个词表示成一个向量呢?方法有很多:



但是上述方法有个问题,有时候有的词汇不在词典中,这时候用other 或者 开头字母来表示他们,这就是Byund 1-of-N encoding。



好了,现在可以将表示出来的vector丢到一个network里,希望它输出一个几率。



但是这样也不能解决所有问题,比如一下两句话输入的vector是一样的,但很明显表达的意思却完全相反。

这时,就希望我们的neural network 是有记忆里的,能记住 arrive /leave ,能理解上下文。



那么这个有记忆里的NN就是RNN。



Example



在我们使用memory时,必须要给它初始值,比如0,这样network的单元就多了一个接收数据来源。





这样,即使是相同的输入,输出也可能是不一样的。

所以也代表,在RNN中,是对输入顺序敏感的,也就是调换input的顺序,得到的输出是不同的。

所以,如果我们要用RNN来解决Slot Filling 这个问题如下。



需要注意的是,上图中并不是有三个network ,而是同一个network被使用了三次。

这样,RNN就能在同一个台北的输入下得到不同的输出



当然,network是有很大拓展性的,比如也可使是deep 的。



RNN也有不同的变形,Jordan Network 存的就是output的值。



Bidirectional RNN,RNN还可以是双向的,本来我们是从句首读到句尾,但其方向是可以反过来的,如果同时train相反方向的network输出都丢给output layer,这样的好处就是,RNN前后都过了一遍视野比较广。



Long Short-term Memory (LSTM)

刚刚的memory是很单纯的存储的,现在还有一种Long Short-term Memory (LSTM)。

其实是给memory加了两扇IO闸门,什么时候外界可以IO memory,还有一层Forget Gate来决定什么时候擦除memory的值,以上门的开闭都是由network自己来学的。



这个memory的具体结构如下,
c’
就是新存入memory中的值。



Long Short-term Memory (LSTM) Example













其中每一个input
x1、x2、x3
需要乘的weight和加上的bais都是network学的。

那么这个NN与我们原来所认识的NN有什么不同呢?

原来,会有很多neural 我们会把input乘上不同的weight当作每一个neural的输入,然后每一个neural都是一个function,然而LSTM的memory cell想成是一个neural 就好了。





就比如说有的机器需要插一个电源就可以动,而LSTM需要四个插电源才能动,四个电源是不同的,参数量是原来的四倍。

假设现在有一整排的memory,每个memory存的scalar是
C^t-1
vector中的一个维度。intput x 时,通过transform,
Z^f 、Z^I 、 Z  、Z^o
分别负责一种门。



提出一个memory,分析一下计算过程。



c是存的值。

而且还加上一步,它会把上一个时间点的hidden layer输出值,和上一个时间点的memory都接到它的输入,也就是每一个时间点的input将由三部门组成,如下图。



当然L一般不会一层,会叠五六层,就是Multiple-layer LSTM,现在通常所说的LSTM就是指这种。



Don’t worry if you cannot understand this. Keras can handle it

Keras supports “LSTM”, “GRU”, “Simp”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息