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的代码
谢谢大家的指导!