最近在看回声状态网络(Echo State Network)的内容,因为很少搜到关于Echo State Network的快速入门讲解,所以打算写一下ESN的基本原理。
1、概念
回声状态网络作为一种新型的递归神经网络(如上图),也由输入层、隐藏层(即储备池)、输出层组成。其将隐藏层设计成一个具有很多神经元组成的稀疏网络,通过调整网络内部权值的特性达到记忆数据的功能,其内部的动态储备池(DR)包含了大量稀疏连接的神经元,蕴含系统的运行状态,并具有短期训记忆功能。ESN训练的过程,就是训练隐藏层到输出层的连接权值(Wout)的过程。总结如下三个特点:
(1)核心结构是一个随机生成且保持不变的储备池(Reservoir)
(2)其输出权值是唯一需要调整的部分
(3)简单的线性回归就可完成网络的训练
2、ESN的各个参数与公式。
2.1 节点与状态
图中t时刻的输入u(t),一共有K个节点,储备池状态为x(t),N个节点,输出为y(t),L个节点。
t 时刻的状态为:
2.2 连接矩阵与状态方程
图中的储备池就是常规神经网络的隐藏层,输入层到储备池的连接为Win(N*K阶),储备池到下一个时刻储备池状态的连接为W(N*N阶),储备池到输出层的连接为Wout(L*(K+N+L)阶)。另外还有一个前一时刻的输出层到下一时刻的储备池的连接Wback(N*L阶),这个连接不是必须的(图中虚线表示)。
每一时刻输入u(t),储备池都要更新状态,它的状态更新方程为:
式中,Win和Wback都是在最初建立网络的时候随机初始化的,并且固定不变。u(t+1)是这个时刻的输入,x(t+1)是这个时刻的储备池状态,x(t)是
上一个时刻的储备池状态,在t=0时刻可以用0初始化。f是DR内部神经元激活函数,通常使用双曲正切函数(tanh)。
注:在建模的时候,和一般的神经网络一样,会在连接矩阵上加上一个偏置量,所以输入u的是一个长度为1+K的向量,Win是一个[1+K, N]的矩阵,
x是一个长度为N的向量。
ESN的输出状态方程为: