目录

书籍1:Python深度学习
目的:
在学习完本书后,将具备搭建自己的深度学习环境,建立图像识别模式,生成图像和文字等能力.帮助构建智能应用程序并解决那些对你很重要的问题.
Keras和TensorFlow之间的顺利集成,对TensorFlow用户和Kears用户都有很大好处,也让大多数更容易使用深度学习.对于受教育的实践补充,有助于培养关于深度神经网络的直觉,熟悉重要的实践.
关于书想获得的知识
本书是对深度的实践探索,避免使用数学符号,尽量用代码片段来解释定量概念.建立关于机器学习和深度学习核心思想.书中包含30多个代码示例,有详细的注释,实用的建议和简单的解释.知道这些可以使用深度学习解决具体问题.全书代码示例使用Python深度学习框架Kears,用TensorFlow作为后端引擎.
获得的目的:
1.根据书中知识,用作模板,对时间序列模型建模.
2.学习了解RNN(LSTM,GRU....)
学习路线图:
分为两部分:
第一部分是对深度学习的介绍.给出一些背景和定义.
第1章
第2章
第3章
第4章
第二部分深入介绍深度学习在计算机视觉和自然语言处理中的实际应用.
第5章(略读)
第6章(精度)
第7章
第8章(略读)
第9章
硬件要求:
1.安装最新的NVIDIA GPU
书籍2:深度学习Deep Learning
目的:系统深入地了解现今已成熟的深度学习和技术.
关于书想获得的知识:
第一部分介绍几本的数学工具和机器学习的概念.第2部分系统深入地讲解现今已成熟的深度学习和技术.第三部分讨论具有前瞻性的方向和想法.
学习路线图:
分为两部分:
第一部分 应用数学与机器学习基础
第1章
第2章
第3章
第4章
第5章(略读)
第二部分 深层网络:现代实践
第6章
第7章
第8章
第9章
第10章 序列建模和递归网络(重点)
第11章
第12章
第13章
第三部分 深度学习研究
第14章
第15章
第16章
第17章
第18章
第19章
第20章
内容笔记:
第10章 序列建模和递归网络(重点)
LSTM网络:
介绍:长短记忆的时间递归神经网络是RNN网络的代表.LSTM是一种RNN特殊的类型,可以学习长期依赖信息.通过刻意的设计来避免长期依赖问题.
整体介绍:
图中,每一条黑线传输着一整个向量,从一个节点的输出到其它节点的输入。方框上方的圆圈代表运算操作(如向量的和).中间的方框就是学习到的神经网络层.合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置.这里的激活函数使用的是Tanh.
这种结构核心思想是引入了一个叫做细胞状态的连接,这个细胞状态用来存放想要记忆的东西.(对应简单RNN的h,不止存放上一次的状态,通过网络学习存放那些有用的状态),同时在里面加入三个门:
- 忘记门:决定什么时候想要把以前的状态忘记.
- 输入门:决定什么时候加入新的状态.
- 输出门:决定什么时候想要把状态和输入放在一起输出.
简单RNN只是把上一次的状态当成本次的输入一起输出.而LSTM在状态的更新和状态是否参与输入都做了灵活的选择,具体选什么,则一起交给神经网络的训练机制来训练.
处理层的符号及表示意思:
分别是:神经网络层;节点求和;向量传输;向量连接;向量被复制成两个副本.
LSTM核心思想:
LSTM关键就是矩形方框.称为memory(记忆块),主要包含三个门,忘记门,输入门,输出门与一个记忆单元(cell).方框内上面的水平线被称为单元状态,像一个传送带,可以控制信息传递给下一个时刻.
LSTM通过门控单元可以对cell添加和删除信息.通过门可以有选择地决定信息是否通过.它有一个sigmoid神经网络层和一个pointwise点乘操作组成.如图.该层的输出是一个介于【0,1】,表示信息通过的多少,0表示完全不通过,1表示完全通过.
sigmoid神经网络层输出0到1个数字,点乘操作决定多少信息可以传送过去.当为0时,不传送;当为1时,全部传送。像这样的控制门,LSTM共有3个,依次保护和控制cell状态.
LSTM三个门:
忘记门:
首先来看cell该删除哪些信息,做这个决定的是包含sigmoid层的遗忘门.对于输入Xt和H(t-1),遗忘门输出值域在0~1之间的数值,放进细胞状态Ct-1中,当为1表示完全保留,0表示完全舍弃.
以之前预测下一个词的语言模型为例,对于“天空中漂浮着云朵,”这个句子,LSTM的cell状态会记住句子主语“云朵”的词性,这之后才能判断正确的代词。等下次再遇到新主语时,cell会“忘记”“云朵”的词性。
输入门
输入门其实可以分成两部分功能.一部分是找到那些需要更新的细胞状态.另一部分是把需要更新的信息更新到细胞状态里.
cell该如何增加新信息,可以分两步,首先,LSTM会用一个包含sigmoid层的输入门决定哪些信息该保留,也就是说删除哪些信息;其次,它会用一个tanh层为这些信息生成一个向量C~t,用来更新细胞状态.
在语言模型例子中,如果句子变成了“天空中漂浮着云朵,草地上奔跑着骏马”。那LSTM就会用“骏马”的词性代替正在被遗忘的“云朵”的词性。
有了忘记门和输入门,就能把细胞状态Ct-1更新为Ct.如下图所示,其中ft×Ct−1表示希望删除的信息,it×Ct表示新增的信息。
输出门:
最后就是决定LSTM输出内容的输出门.它的信息基于cell状态,但还要经过一定过滤.先用sigmoid层决定要输出的cell内容.再用tanh层把cell状态值推到-1和1之间,并将其乘以sigmoid层的输出.以此做到只输出想要输出的部分.
LSTM的变体:
上面是常规的LSTM.实践中有很多不一样的神经网络.
窥视孔连接:
2000年的时候,Gers&Schmidhuber提出了一种添加了“peephole connections”的LSTM变体。它意味着我们能在相应控制门内观察cell状态。下图为每个门都添加了窥视孔,也可以只加一处或两处。
窥视孔连接的出现是为了补充忘记门一个缺点;当前cell的状态不能影响到输入门,忘记门在下一时刻的输出.使得整个cell对上个序列的处理丢失了部分信息.所以增加了Peephole connections.
耦合忘记门和输入门
第二种变体是耦合遗忘门和输入门,让一个模块同时决定该增加/删除什么信息。
GRU网络介绍
第三种稍具戏剧化的变体是Cho等人于2014年提出的带有GRU的LSTM。它把遗忘门和输入门组合成一个“更新门”,合并了cell状态和隐藏状态,并做了一些其他的修改。这个模型的优点是更简单,也更受欢迎。
带有映射的LSTM
在原有LSTM基础上增加一个映射层(projection layer).将这个layer连接到LSTM的输入,该映射层是通过全连接网络来实现的,可以通过全连接网络来实现.可以通过改变其输出维度调节总的参数量,起到模型压缩的作用.
基于梯度剪辑的cell
Clipping cell功能解决梯度值爆炸的问题.
引用
[1]理解LSTM网络http://colah.github.io/posts/2015-08-Understanding-LSTMs/
[2]https://zhuanlan.zhihu.com/p/43783719
[3]LSTM神经网络https://blog.csdn.net/Jundesky/article/details/89365164
[4]简单理解LSTMhttps://blog.csdn.net/zhengxqq27/article/details/90481590
[5]一文详解LSTM网络网址
[6]书籍深度学习之TensorFlow:入门,原理,与进阶实战