0
点赞
收藏
分享

微信扫一扫

(2020李宏毅)机器学习-Recurrent Neural Network


(2020李宏毅)机器学习-Recurrent Neural Network_深度学习

文章目录

  • ​​什么是RNN?​​
  • ​​例子​​
  • ​​RNN架构​​
  • ​​其他结构的RNN​​
  • ​​deepRNN​​
  • ​​Elman Network & Jordan Network​​
  • ​​Bidirectional RNN​​
  • ​​Long Short-term Memory (LSTM)​​
  • ​​LSTM输入​​

什么是RNN?

(2020李宏毅)机器学习-Recurrent Neural Network_RNN_02

有记忆被的神经网络就是循环神经网络(RNN)。在RNN里面,每一次隐藏层的神经元产生输出的,这个时候输出会存到内存里去(用蓝色框表示内存)。下一次当有输入时,这些神经元不只是考虑输入 (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_03 对它来说, 除了考虑到记忆里的价值。 (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_03 以外,这些存在记忆里的价值a1a (2020李宏毅)机器学习-Recurrent Neural Network_深度学习_05

例子

(2020李宏毅)机器学习-Recurrent Neural Network_机器学习_06

假设现在图上这个neural network,它所有的weight都是1,所有的neuron没有任何的bias。假设所有的activation function都是linear(这样可以不要让计算太复杂)。现在假设input 是sequence(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_07. 在开始要使用这个Recurrent Neural Network的时候,必须要给memory初始值(memory里面初始值是0)

现在输入第一个(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_08,对左边的那个neural来说(第一个hidden layer),它除了接到input的(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_08还接到了memory(0跟0),output就是2(所有的weight都是1),右边也是一样output为2。第二层hidden laeyer output为4。

(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_10

接下来Recurrent Neural Network会将绿色neuron的output存在memory里去,所以memory里面的值被update为2。接下来再输入 (2020李宏毅)机器学习-Recurrent Neural Network_RNN_11, 接下来绿色的neuron输入有四个 (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_12, output为 (2020李宏毅)机器学习-Recurrent Neural Network_深度学习_13 weight (2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_14 ) , 第二层的neural output为 (2020李宏毅)机器学习-Recurrent Neural Network_神经网络_15
所以对Recurrent Neural Network来说, 就算input一样的东西,它的output是可能不一样了(因为有memory)

(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_16

现在 (2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_17 存到memory里去, 接下来input是 (2020李宏毅)机器学习-Recurrent Neural Network_RNN_18, output为 (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_19,第二层hidden layer为 (2020李宏毅)机器学习-Recurrent Neural Network_RNN_20
那在做Recurrent Neural Network时,有一件很重要的事情就是这个input sequence调换顺序之后output不同(Recurrent Neural Network里,它会考虑sequence的order)

RNN架构

(2020李宏毅)机器学习-Recurrent Neural Network_RNN_21

RNN有memory,memory中记忆arrive或者leave,来区分Taipei

其他结构的RNN

deepRNN

(2020李宏毅)机器学习-Recurrent Neural Network_RNN_22

Elman Network & Jordan Network

(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_23

  • elman network:memory中是hidden layer中的output
  • jordan network:memory中是整个network的output

Bidirectional RNN

(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_24

双向循环神经网络在产生output时看的范围比单向的广,performance应当比单向的好

Long Short-term Memory (LSTM)

(2020李宏毅)机器学习-Recurrent Neural Network_RNN_25

这个Long Short-term Memor是有三个gate,当外界某个neural的output想要被写到memory cell里面的时候,必须通过一个input Gate,那这个input Gate要被打开的时候,你才能把值写到memory cell里面去,如果把这个关起来的话,就没有办法把值写进去。至于input Gate是打开还是关起来,这个是neural network自己学的(它可以自己学说,它什么时候要把input Gate打开,什么时候要把input Gate关起来)。那么输出的地方也有一个output Gate,这个output Gate会决定说,外界其他的neural可不可以从这个memory里面把值读出来(把output Gate关闭的时候是没有办法把值读出来,output Gate打开的时候,才可以把值读出来)。那跟input Gate一样,output Gate什么时候打开什么时候关闭,network是自己学到的。那第三个gate叫做forget Gate,forget Gate决定说:什么时候memory cell要把过去记得的东西忘掉。这个forget Gate什么时候会把存在memory的值忘掉,什么时候会把存在memory里面的值继续保留下来),这也是network自己学到的。

那整个LSTM你可以看成,它有四个input 1个output,这四个input中,一个是想要被存在memory cell的值(但它不一定存的进去)还有操控input Gate的讯号,操控output Gate的讯号,操控forget Gate的讯号,有着四个input但它只会得到一个output

这个“-”应该在short-term中间,是长时间的短期记忆。想想我们之前看的Recurrent Neural Network,它的memory在每一个时间点都会被洗掉,只要有新的input进来,每一个时间点都会把memory 洗掉,所以的short-term是非常short的,但如果是Long Short-term Memory,它记得会比较久一点(只要forget Gate不要决定要忘记,它的值就会被存起来)。

(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_26

  • 假设要被存到cell的input叫做z,操控input gate的信号叫做(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_27(一个数值),所谓操控forget gate的信号叫做(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_28,操控output gate叫做(2020李宏毅)机器学习-Recurrent Neural Network_RNN_29,综合这些东西会得到一个output 记为a。
  • 假设cell里面有这四个输入之前,它里面已经存了值c。把z通过activation function得到g(z),那(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_27通过另外一个activation function得到(2020李宏毅)机器学习-Recurrent Neural Network_RNN_31((2020李宏毅)机器学习-Recurrent Neural Network_RNN_32)通过的activation function 通常选择sigmoid function,选择sigmoid function的意义是它的值是介在0到1之间的。这个0到1之间的值代表了这个gate被打开的程度(如果这个f的output是1,表示为被打开的状态,反之代表这个gate是关起来的)。
  • (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_33乘以(2020李宏毅)机器学习-Recurrent Neural Network_RNN_34(2020李宏毅)机器学习-Recurrent Neural Network_RNN_35得到(2020李宏毅)机器学习-Recurrent Neural Network_机器学习_36(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_37(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_38, 对于forget gate的(2020李宏毅)机器学习-Recurrent Neural Network_RNN_39, 也通过sigmoid的function得到(2020李宏毅)机器学习-Recurrent Neural Network_机器学习_40(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_41
  • 接下来把存到memory里面的值c乘以(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_42得到(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_43,然后加起来(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_44, 那么(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_45就是重新存到memory里面的值。(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_42决定要不要忘记cell中的值,如果(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_42=1,则或保留上次cell中的值,如果(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_42=0,则cell中以前的值相当于被清空。而(2020李宏毅)机器学习-Recurrent Neural Network_RNN_49作用与(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_42相同,(2020李宏毅)机器学习-Recurrent Neural Network_RNN_49控制输入(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_52是否有效

假设要被存到memory cell 中的input 为(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_37,控制input gate的信号为(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_27,控制forget gate的信号为(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_28,控制output gate的信号为(2020李宏毅)机器学习-Recurrent Neural Network_RNN_56,整个的输出为(2020李宏毅)机器学习-Recurrent Neural Network_机器学习_57

(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_58

假设cell里面有这四个输入之前,它里面已经存了值c

关键是forget gate

(2020李宏毅)机器学习-Recurrent Neural Network_循环神经网络_59

(2020李宏毅)机器学习-Recurrent Neural Network_神经网络_60 决定要不要忘记cell中的值,如果 (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_61 ,保留上次cell中的值;如果 (2020李宏毅)机器学习-Recurrent Neural Network_神经网络_62

LSTM输入

(2020李宏毅)机器学习-Recurrent Neural Network_RNN_63

(2020李宏毅)机器学习-Recurrent Neural Network_深度学习_64

、现在有一整排的neuron(LSTM),这些LSTM里面的memory都存了一个值,把所有的值接起来就变成了vector,写为 (2020李宏毅)机器学习-Recurrent Neural Network_机器学习_65 一个值就代表一个 dimension)。 现在在时间点 (2020李宏毅)机器学习-Recurrent Neural Network_RNN_66, input (2020李宏毅)机器学习-Recurrent Neural Network_RNN_67 个vector (2020李宏毅)机器学习-Recurrent Neural Network_RNN_68

这个xt会乘上另外的一个transform得到(2020李宏毅)机器学习-Recurrent Neural Network_RNN_69,然后这个zi的dimension也跟cell的数目一样,zi的每一个dimension都会去操控input gate(forget gate 跟output gate也都是一样,这里就不在赘述)。所以把(2020李宏毅)机器学习-Recurrent Neural Network_RNN_70乘以四个不同的transform得到四个不同的vector,四个vector的dimension跟cell的数目一样,这四个vector合起来就会去操控这些memory cell运作。


举报

相关推荐

0 条评论