首页 > 其他 > 详细

循环神经网络与应用(案例还不错)

时间:2020-10-29 16:06:25      阅读:139      评论:0      收藏:0      [点我收藏+]

 

循环神经网络与应用

寒小阳

2018

-

0

8

主要内容

n 循环神经网络 1.场景与多种应用 2.层级结构 3.多种RNN 4.BPTT算法

5.生成模型与图像描述

n LSTM

1.长时依赖问题 2.“记忆细胞”与状态 3.GRU

2/54

循环神经网络经典应用

o 模仿论文(生成序列)

3/54

循环神经网络经典应用

o 模仿linux内核代码“写程序”(生成序列)

4/54

循环神经网络经典应用

o 模仿小四的作品(生成文本序列)

5/54

循环神经网络经典应用

o 机器翻译

6/54

循环神经网络与应用

o Image to text/看图说话

7/54

神经网络到循环神经网络

o 我们知道神经网络结构如下

o 那循环神经网络和它是什么关系呢? 8/54

循环神经网络

o 为什么有BP神经网络,CNN,还要RNN? n 传统神经网络(包括CNN),输入和输出都是互相

独立的。

? 图像上的猫和狗是分隔开的,但有些任务, 后续的输出和之前的内容是相关的。

? “我是中国人,我的母语是___” n RNN引入“记忆”的概念

? 循环2字来源于其每个元素都执行相同的任务。 ? 但是输出依赖于 输入 和 “记忆”

9/54

循环神经网络之 结构 o 简单来看,把序列按时间展开

10/54

循环神经网络之 结构

o Xt是时间t处的输入
o St是时间t处的“记忆”,St=f(UXt+WSt?1),f可以是tanh等

o Ot是时间t出的输出,比如是预测下个词的话,可能是 softmax输出的属于每个候选词的概率,Ot = softmax(VSt)

11/54

循环神经网络之 结构细节
o 可以把隐状态St视作“记忆体”,捕捉了之前时间点上

的信息。

o 输出Ot由当前时间及之前所有的“记忆”共同计算得到。

o 很可惜,实际应用中,St并不能捕捉和保留之前所有信 息(记忆有限?)

o 不同于CNN,这里的RNN其实整个神经网络都共享一组 参数(U,V,W),极大减小了需要训练和预估的参数量

o 图中的Ot在有些任务下是不存在的,比如文本情感分析, 其实只需要最后的output结果就行

12/54

RNN唐诗生成器 参见课程数据与代码

13/54

不同类型的RNN

o 双向RNN o有些情况下,当前的输出不只依赖于之前的序列元素,

还可能依赖之后的序列元素 o比如从一段话踢掉部分词,让你补全 o直观理解:双向RNN叠加

14/54

不同类型的RNN

o 深层双向RNN o和双向RNN的区别是每一步/每个时间点我们设定多层结构

15/54

RNN与BPTT算法

o MLP(DNN)与CNN用BP算法求偏导
o BPTT和BP是一个思路,只不过既然有step,就和时间t有关系

16/54

RNN与BPTT算法

但是 依赖于s2 链式法则

17/54

RNN与BPTT算法

链式法则

18/54

简单image to text

19/54

简单image to text

20/54

图片描述数据集
pMicrosoft COCO数据集:http://mscoco.org

? 12w图片
? 5句话描述/每张图片

21/54

RNN与图片描述 p 部分结果

22/54

循环神经网络之 LSTM

o 前面提到的RNN解决了,对之前的信息保存的问题 o 但是!存在长期依赖的问题。

n 看电影的时候,某些情节的推断需要依赖很久以前的一 些细节。

n 很多其他的任务也一样。
n 很可惜随着时间间隔不断增大时,RNN 会丧失学习到连

接如此远的信息的能力。

n 也就是说,记忆容量有限,一本书从头到尾一字不漏的 去记,肯定离得越远的东西忘得越多。

n 怎么办:LSTM

23/54

循环神经网络之 LSTM

o LSTM是RNN一种,大体结构几乎一样。区别是? o它的“记忆细胞”改造过。 o该记的信息会一直传递,不该记的会被“门”截断。

24/54

循环神经网络之 LSTM o 之前提到的RNN结构如下

Understanding LSTM Networks, colah, 2015

25/54

循环神经网络之 LSTM o 咱们把“记忆细胞”表示得炫酷一点

Understanding LSTM Networks, colah, 2015

26/54

循环神经网络之 LSTM o LSTM呢?

o“记忆细胞”变得稍微复杂了一点点

Understanding LSTM Networks, colah, 2015

27/54

循环神经网络之 LSTM
o 图太复杂,细节看不懂?别着急,我们解释解释。

Understanding LSTM Networks, colah, 2015

28/54

循环神经网络之 LSTM o LSTM关键:“细胞状态”

o细胞状态类似于传送带。直接在整个链上运行,只有一些 少量的线性交互。信息在上面流传保持不变会很容易。

Understanding LSTM Networks, colah, 2015

29/54

循环神经网络之 LSTM o LSTM怎么控制“细胞状态”?

o 通过“门”让信息选择性通过,来去除或者增加信息到细胞状态

o包含一个sigmoid神经网络层 和 一个pointwise乘法操作

oSigmoid 层输出0到1之间的概率值,描述每个部分有多少量可以通过。 0代表“不许任何量通过”,1就指“允许任意量通过”

Understanding LSTM Networks, colah, 2015

30/54

LSTM的几个关键“门”与操作 o 第1步:决定从“细胞状态”中丢弃什么信息 => “忘记门”

o 比如完形填空中填“他”或者“她”的问题,细胞状态可能包 含当前主语的类别,当我们看到新的代词,我们希望忘记旧的 代词。

Understanding LSTM Networks, colah, 2015

31/54

LSTM的几个关键“门”与操作

o 第2步:决定放什么新信息到“细胞状态”中 ? Sigmoid层决定什么值需要更新
? Tanh层创建一个新的候选值向量
? 上述2步是为状态更新做准备

Understanding LSTM Networks, colah, 2015

32/54

LSTM的几个关键“门”与操作 o 第3步:更新“细胞状态”

? 更新Ct-1为Ct
? 把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息

?加上it* 。这就是新的候选值,根据我们决定更新每个状态 的程度进行变化。

Understanding LSTM Networks, colah, 2015

33/54

LSTM的几个关键“门”与操作 o 第4步:基于“细胞状态”得到输出

? 首先运行一个sigmoid层来确定细胞状态的哪个部分将输出
? 接着用tanh处理细胞状态(得到一个在-1到1之间的值),再将它和

sigmoid门的输出相乘,输出我们确定输出的那部分。
? 比如我们可能需要单复数信息来确定输出“他”还是“他们”

Understanding LSTM Networks, colah, 2015

34/54

LSTM的变体

o 变种1
? 增加“peephole connection”
? 让 门层 也会接受细胞状态的输入。

Understanding LSTM Networks, colah, 2015

35/54

LSTM的变体

o 变种2
? 通过使用 coupled 忘记和输入门
? 之前是分开确定需要忘记和添加的信息,这里是一同做出决定

Understanding LSTM Networks, colah, 2015

36/54

GRU

o Gated Recurrent Unit (GRU),2014年提出
? 将忘记门和输入门合成了一个单一的 更新门
? 同样还混合了细胞状态和隐藏状态,和其他一些改动。 ? 比标准LSTM简单。

Understanding LSTM Networks, colah, 2015

37/54

回到生成模型

o 字符级别的生成模型 纯手工撸制代码请戳

https://gist.github.com/karpathy/d4dee566867f8291f086

38/54

生成模型仿照维基百科

o 数据请戳http://cs.stanford.edu/people/karpathy/char-rnn/wiki.txt

39

39/54

生成模型:到底发生了什么?

o 依旧是https://gist.github.com/karpathy/d4dee566867f8291f086

40/54

生成模型:到底发生了什么?

o 依旧是https://gist.github.com/karpathy/d4dee566867f8291f086

41/54

生成模型“写”食谱?

o 案例https://gist.github.com/nylki/1efbaa36635956d35bcc
o 代码继续用https://gist.github.com/karpathy/d4dee566867f8291f086 o 数据请戳http://www.ffts.com/recipes/lg/lg32965.zip

42/54

模仿奥巴马演讲?

o https://medium.com/@samim/obama-rnn-machine-generated-political- speeches-c8abd18a2ea0#.9sb793kbm

43/54

合成音乐?

o 如果能把音乐的乐谱表示成文本形式,是不是可以借用RNN?
o https://highnoongmt.wordpress.com/2015/05/22/lisls-stis-recurrent-

    neural-networks-for-folk-music-generation/

o Abc notation转化,参见http://abcnotation.com/blog/2010/01/31/how-to- understand-abc-the-basics/

44/54

更高级的音乐合成模式?

o 前面的方法合成的音乐比较“单调”,有高级一点的方法对音乐进行合成吗

o http://www.hexahedria.com/2015/08/03/composing-music-with- recurrent-neural-networks/

45/54

?

更高级的音乐合成模式?

o 前面的方法合成的音乐比较“单调”,有高级一点的方法对音乐进行合成吗

o http://www.hexahedria.com/2015/08/03/composing-music-with- recurrent-neural-networks/

46/54

?

文本生成案例:唐诗生成

LSTM唐诗生成器 请参考课程代码

47/54

 感谢大家!
恳请大家批评指正!

48/54

循环神经网络与应用(案例还不错)

原文:https://www.cnblogs.com/cx2016/p/13896399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!