信号与信息处理大作业
1 回声状态网络简介
回声状态网络 頨顅顣顨顯 顓顴顡顴顥 顎顥顴顷顯顲顫顳頩 的主要思想是利用合理的初始参
数设置非静态地产生非线性高维空间,使得非线性的高维空间能够组合出
系统所期望的输出。由于其优越的拟合预测能力,回声状态网络在时间序
列预测、非线性系统辨识等领域得到广泛应用。
顅顓顎 是由 顈顥顲顢顥顲顴 顊顡顥顧顥顲 提出的一种新型递归神经网络算法。他指出递
归神经网络在第 顮 时刻的内部状态 x頨n頩 是前 n 个时刻输入u頨n頩, u頨n −
頱頩, u頨n − 頲頩,··· , u頨頱頩 的函数,即可将第 n 时刻的内部状态理解为历史输入
的“回声”。其公式描述如下頺
x頨n頩 頽 E頨u頨n頩, u頨n − 頱頩,···頩
頨頱頩
基本回声状态网络结构如图頱 所示。基本的回声状态网络结构类似神经网
络,由输入层,储备池和输出层构成。其中, k 为输入节点数, N 为储备
池节点数、 L 为输出节点数。在 n 时刻输入节点的输入为
u頨n頩 頽 頨u頱頨n頩, u頲頨n頩, u頳頨n頩,··· , uK頨n頩頩
頨頲頩
储备池的状态为
x頨n頩 頽 頨x頱頨n頩, x頲頨n頩, x頳頨n頩,··· , xN 頨n頩頩
输出节点的输出为
y頨n頩 頽 頨y頱頨n頩, y頲頨n頩, y頳頨n頩,··· , yL頨n頩頩
頨頳頩
頨頴頩
从输入、储备池到输出三层之间都有连接。基本回声状态网络结构从输入
节点到输出节点和输出节点之间的连接在图頱 中用虚线表示。
頱
图 頱頺
N 頫 頱 时刻储备池的状态更新方程为頺
x頨n 頫 頱頩 頽 f 頨W inu頨n 頫 頱頩 頫 W x頨n頩 頫 W backy頨n頩頩
頨頵頩
N 頫 頱 时刻输出节点的更新方程为頺
y頨n 頫 頱頩 頽 f out頨W out頨u頨n 頫 頱頩, x頨n 頫 頱頩, y頨n頩頩頩
頨頶頩
其中, W in 是从输入节点到内部节点的输入权值矩阵,大小为 N × K,
W 是储备池内部节点之间的权值矩阵,大小为 N × N 。 W 是一个稀疏矩
阵,稀疏度一般为 頱頥 ∼ 頱頰頥 。 W out 是从输入节点、内部节点和输出节
点到输出节点的输出权值矩阵,大小为 L × 頨K 頫 N 頫 L頩 , W back 是从输
出节点到内部节点的反馈权值矩阵,大小为 N × L 。 f 为储备池节点的激
活函数, f out 为输出节点的激活函数,二者一般均取 顴顡顮顨 。需要注意的
是,输出节点到输出节点之间的连接几乎不使用,因此输出权值矩阵 W out
变为从输入节点、内部节点到输出节点的权值矩阵,大小为 L× 頨K 頫 N 頩 。
对应的回声状态网络结构如图頲 所示。
頲
图 頲頺
相应的 N 頫 頱 时刻网络的更新方程为頺
x頨n 頫 頱頩 頽 f 頨W inu頨n 頫 頱頩 頫 W x頨n頩 頫 W backy頨n頩頩
y頨n 頫 頱頩 頽 f out頨W out頨u頨n 頫 頱頩, x頨n 頫 頱頩頩頩
頨頷頩
頨頸頩
顅顓顎 的核心是储备池。储备池是由输入信号所驱动的动态系统。储备池有
两个功能頺 頨顩頩 可以看做是输入信号 u頨n頩 的高维非线性扩展 x頨n頩 頻 頨 顩顩頩 具有
短暂的记忆输入信号 u頨n頩 的功能,也就是回声状态。一个好的储备池同时
具有这两个功能,使其能够提供足够丰富的内部状态 x頨n頩 ,因此期望输出
ytarget頨n頩 可由内部状态 x頨n頩 的线性组合得出。
使 顅顓顎 具有回声状态的重要条件是其内部权值矩阵 W 的谱半径小于 頱。
按照如下公式所得到内部权值矩阵,其网络结构则具有回声状态特性,不
论 W in 、 W back 如何选取。
Wnew 頽
頱
|λmax| W
頨頹頩
其中, |λmax| 是 W 的最大特征值的绝对值, Wnew 是新的内部权值矩阵。
顅顓顎 与传统神经网络的重要区别是頺 顅顓顎 的 W in 、 W 和 W back 是开始就
确定好且固定不变的,模型只需训练 W out ,因此其具有训练过程简单的特
点。
2 代码实现
2.1 实验条件
頱頮 操作系统:顗顩顮顤顯顷顳 頷
頳
頲頮 实现语言:顐项顴顨顯顮
頳頮 实验数据:額顡顣顫顥项顇顬顡顳顳 顴頵頰数据集
图 頳頺
2.2 ESN类的实现
类的初始化 初始化储备池内部节点之间的权值矩阵,大小为 resSize×
resSize,为了实现权值矩阵的稀疏化,需要确定部分权值连接为頰的权重,
并进行重新赋值。随后确保谱半径小于頱。代码如图頴所示。
頴
020040060080010000.30.20.10.00.10.20.3
图 頴頺
更新过程 这一时刻的储备池的状态是上一时刻的储备池状态乘以权重
矩阵,加上这一时刻的输入权值矩阵。这里 learning rating 代表学习率。
考虑到程序刚开始运行的那段时间数据不够稳定,因此前 initLen 次的结
构不参与到训练过程中。代码如图頵所示。
图 頵頺
训练过程 由于状态矩阵 S 可能为奇异矩阵,所以 S 的逆矩阵采用伪
逆算法或者正则化技术。这里采用的是岭回归算法。首先随机初始化输入
权值矩阵,随后不断进行参数更新,并且将储备池的输出以状态矩阵的形
式存储下来,最后使用岭回归计算输入矩阵。代码如图頶所示。
頵
图 頶頺
预测过程 首先根据输入不断计算储备池的输出,得到状态矩阵。随后
使用岭回归模型计算状态矩阵对应的模型输出。代码如图頷所示。
图 頷頺
2.3 主程序的实现
第一步,使用 numpy 的 loadtxt 函数加载实验数据。第二步,进行数
据预处理,采用 M inM axScaler 将数据缩小到指定范围,并且添加随机
噪声。第三步,数据集分割,前頸頰頰頰条作为训练集数据,后頱頰頰頰条作为测
试集数据。第四步,定义超参数并且创建顅顓顎类。其中储备池矩阵大小为
頵頰頰 × 頵頰頰,岭回归 顬顡顭顢顤顡 参数为 頱顥頭頶。第五步,训练顅顓顎网络并且对测
试集进行预测。代码如图頸所示。
頶
图 頸頺
頷
3 实验结果
图 頹頺
预测数据的拟合结果和测试集真实数据的结果如图頹所示。可以看出采
用顅顓顎具有较强的时序拟合能力,预测得到的结果在总体趋势上与真实分
布相一致。但是从图中也可以看出拟合结果在波峰波谷附近仍有瑕疵,并
不能完全匹配。
图 頱頰頺
为了便于直观地展示储备池中结点值的状态,此处将储备池前頲頰頰时
刻状态頨顸頨顴頩頩的储存结点值,如图頱頰所示。由于结点数较多,因此只展示
前頲頰个储存结点值。
頸
020040060080010000.30.20.10.00.10.2real signalpred signal02550751001251501752000.750.500.250.000.250.500.751.00