本系列文章是对《Python深度学习》这本书阅读过程中,提炼出来的读书笔记。
《Python深度学习》这本书的作者是Keras之父,也是Tensorflow框架的贡献者,本书的特点是,作者从一个编程学习者的角度来描述机器学习,而不是堆上来复杂的数学公式和函数变换。所有的数学理论或者公式,都用程序的方式描述出来,对于没有数学功底的开发者来说是一个很大的福利。不过当然,后期还是离不开数学,但作为入门来说这本书就相当的好了。
本章讲的是循环神经网络,托了很久没有整理,趁着放假把这一章整理好。内容较多,分为三部分,先讲的是循环神经网络的基本原理。
本章知识点:
1.非循环神经网络的特点
非循环神经网络在处理时间序列时,无法一个一个的按照元素处理,只能将一个序列当作一个数据点来处理。也就是将一批数据转换成一个大的数据向量,一次全部输入网络中,然后由网络一次性处理。这种网络也叫做前馈网络。
2.循环神经网络的特点
循环神经网络则可以对一个序列内部的数据元素进行遍历,每遍历一个元素时都保存当前的状态,作为下次迭代的输入状态。对多个序列进行批量处理时,每个独立的序列之间的状态会被重置。
3.通过伪代码了解循环神经网络机制
通过观察笔记中的伪代码部分,可以看到循环神经网络的特点,循环神经网络中有一个for循环,for循环中执行了一个运算规则:activation(dot(w,input)+dot(u,status)+b). w和u时两个权重矩阵,w矩阵和input做点积运算,u矩阵和status做点积运算,最后加一个偏置向量b,循环层中包含一个**函数。
循环网络会记录每一次循环产生的status值,作为下次的输入,而最终输出结果时,只输出最后一个状态,但最后一个状态包含了历史数据的所有信息。笔记中对输入输出特征向量形状进行了标注。
4.循环神经网络的中间层
循环神经网路处理批量数据时,输入和中间层的形状为(beatch_size(n),timestemp(x),feature(y)),表示有n批数据,每批数据包含元素个数为x,每个数据元素包含特征维度为y。
最终输出层的形状为(beatch_size(n),feature(y)),表示有n批数据,包含的特征维度为y.
这种差异理解起来也很好理解,因为中间层需要告诉下一层,一个序列中的时间步长时多少,这样网络可以对一个序列中的每个元素进行遍历操作。而最终输出层需要保存的有用的状态,是每一个序列最终的输出状态status,所有的中间状态信息都包含最终的输出状态中,所以只需记录每个序列的最终输出状态即可,timestemp这个参数也就不重要了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:机器学习:循环神经网络RNN原理分析—— 《Python深度学习》读书笔记(4) - Python技术站