【发布时间】:2012-05-14 12:02:03
【问题描述】:
这里有人熟悉回声状态网络吗?我在 C# 中创建了一个回声状态网络。目的只是将输入分为好和不好的输入。输入是一个双精度数数组。我知道对于这种分类,回声状态网络可能不是最佳选择,但我必须使用这种方法。
我的问题是,在训练网络之后,它无法泛化。当我用外国数据(不是教学输入)运行网络时,我只能得到大约 50-60% 的好结果。
更多细节:我的回声状态网络必须像函数逼近器一样工作。函数的输入是一个包含 17 个双精度值的数组,输出是 0 或 1(我必须将输入分类为坏输入或好输入)。
所以我创建了一个网络。它包含一个具有 17 个神经元的输入层、一个存储层,其神经元数量是可调的,以及包含 1 个神经元的输出层,输出需要 0 或 1。在一个更简单的示例中,不使用输出反馈(我尝试使用输出反馈也一样,但没有任何改变)。
储层的内部矩阵也是可调的。我生成两个双精度值(最小值,最大值)之间的权重,稀疏度可调节。如果值太大,它会使矩阵的光谱半径低于 1。储层可以具有 sigmoid 和 tanh 激活函数。
输入层完全连接到具有随机值的存储层。因此,在训练状态下,我使用训练数据计算内部 X(n) 储存器激活,将它们收集到矩阵 rowvise 中。使用所需的输出数据矩阵(现在是具有 1 或 0 个值的向量),我计算输出权重(从水库到输出)。水库完全连接到输出。如果有人使用回声状态网络现在我在说什么。我是这个的伪逆方法。
问题是,我怎样才能调整网络以便更好地泛化?使用外国数据集(不是训练数据集)达到超过 50-60% 的期望输出。如果我用训练数据集再次运行网络,它会给出非常好的结果,80-90%,但我想要的是更好地泛化。
我希望有人对回声状态网络也有这个问题。
【问题讨论】:
-
"如果有人可以,请回复,以便我更彻底地解释我的问题。"不如你解释得更透彻,然后我们回应?
标签: machine-learning neural-network classification