Transcript PPT下载
进度报告 之 基于Recurrent neural network的 时间序列分析 报告人:陈 恬 2015/4/13 主要内容 1 RNN简介 2 RNN的学习算法 3 需解决的问题 4 后续学习安排 神经网络模型的基本组成 生物神经元的基本组成 细胞体 突起 树突 轴突 人工神经元的基本结构 处理单元 连接 输入 输出 之神经元 1 RNN简介 • RNN是一类以在网络中出现环为特点的网络模型,并且 能存储着神经元这一时刻的输入与前一时刻输出的以来关 系。前向静态神经网络虽然对非线性函数具有良好的逼近 能力,但却不具动态性,所以就引入了递归神经网络—— RNN。 • RNN相对于前向静态网络不同的就是信号从一个神经元 到另一个神经元,并不会马上消失,而是继续存活。 RNN的神经元 • 主要由5个部分组成 输入 u1 (t ),...,uq (t )和y1 (t ),...,yl (t ) 网络权值和阈值 wi ,1 ,...,wi ,q和mi ,1 ,...,mi ,l i 求和单元 xi (t 1) mil yl (t ) wiquq (t ) i l q 传递函数 f () 输出 yi (t 1) f ( xi (t 1)) RNN分类 • 全局递归神经网络(Fully Recurrent NNs) 离散DHNN Hopfiled网络 连续CHNN • 局部递归神经网络(Locally Recurrent NNs) 外部时延网络:Jordan网络 内部时延网络:Elman网络 RNN的学习算法 • 通过时间的反向传播算法(Back Propagation Through Time,BPTT) • BPTT算法是BP算法的扩展,可将加 在网络上的时序信号按层展开,将动 态网络转化为动态网络,用BP算法进 行训练。 BPTT算法描述 定义回合的误差函数(n 0表示回合的起始时间,n1 表示回合的结束时间) 1 n1 e j (n) d j (n) yi (n) Etotal (n0, n1 ) e 2j (n) 2 nn0 j (1)在区间[ n 0, n1]上,对数据做前向运算,保存完整的输入数据记录、 网络状态(权值)和期望输出; (2)对过去这条记录执行一个单纯的反向传播网络,计算局部梯度; ' (v j (n))e j (n),当l n; Etotal (n0 , n1 ) j ( n) ' (v j (n))[e j (n) wkj k (l 1)],当n0 l n1 v j (n) k (3)当反向传播的计算回到 如下: n0 1 时,对神经元 j 的突触权值 w ji 调整 n1 Etotal (n0 , n1 ) w ji (n) j (n) xi (n 1) w ji n n0 1 RNN的学习算法 • 实时递归学习算法 (Real time Recurrent Learning,RTRL) 用于训练局部网络; 有N=4个单元,M=2个外加 输入,x(n)表示n时刻的输入 向量,y(n+1)表示下一时刻的 输出向量,总的输入向量为 xi ( n ),i A ui ( n) yi ( n),i B RTRL算法描述 (1)从n=0开始,对每一步n,计算N个神经元的输出,求出联合输入ui (n); n时刻 j 神经元的净输入为: v j (n) wij (n)ui (n) iA B 下一时刻 j 的输出为: yi (n 1) [v j (n)] (2)用梯度下降法求出权值的修正量; wkl ( n) e j ( n) pklj ( n) jC i pklj ( n 1) ' [v j ( n)]( wij ( n) pkl ( n) kjul ( n)) iB pklj ( n) y j ( n) wkl ( n) ,j B, k B和l A B w (n 1) wkl (n) wkl (n) (3)修正权值: kl (4)重复计算,知道误差小于某一特定值 ; 3 需解决的问题--如何处理时滞? 实际应用中,我们需要事先知道各神经元的状态信息,然后才可以合理 利用这些信息实现一些预定的目标 ,而信息有时是不可完全获知的,即模型 中存在时滞,就要求我们想办法去估计这些神经元的状态。 n n xi (t ) ai xi (t ) w g j ( x j (t )) wij1 g i ( x j (t (t ))) J i j 1 0 ij j 1 递归网络 定常时滞( constant delay ) 时变时滞( time-varying delay) 分布式时滞( distribute delay ) A Clockwork RNN • CW-RNN是通过将隐含层划分几个模块,来减少 RNN中存在的长时间依赖,从而减少了训练的时间。 后续学习安排 • 重新搭建一条学习的主线 • 多看一些关于RNN的论文 • 学好Python的编程,读懂RNN的代码 谢谢大家的指导!