gpt4 book ai didi

machine-learning - Pybrain 用于回归的循环网络 - 如何正确启动经过训练的网络进行预测

转载 作者:行者123 更新时间:2023-11-30 08:44:18 27 4
gpt4 key购买 nike

我正在尝试使用循环神经网络解决回归任务(我使用 pybrain 来构建它)。当我的网络适合后,我想用它来进行预测。但是循环网络的预测会受到其先前预测的影响(反过来又会受到之前预测的影响等)。

问题是 - 一旦网络经过训练并且我想用它在数据集上进行预测,如何正确启动预测过程。如果我只在数据集中的第一个示例上调用 .activate() 进行预测,这意味着循环连接会将 0 传递给网络,并且将以不希望的方式影响后续预测。有没有办法强制经过充分训练的循环网络认为先前的激活结果具有某种特殊值(value)?如果是,这里哪个值最好(可能是可能的激活输出值的平均值或类似的值?)

更新。好吧,由于没有人在一天之内对如何使用 pybrain 中的循环网络做到这一点有任何想法,让我稍微改变一下公式以忘记 pybrain。考虑一下我构建了一个用于回归的 pybrain 网络(例如,预测股票价格)。网络将与具有 10 个特征的数据集一起使用。我向数据集中添加了一项附加功能,并用数据集中之前的价格填充它。因此,我复制了一个循环网络(额外的输入神经元复制了循环连接)。问题是:

1)在训练数据集中,我用之前的价格填充了这个附加功能。但是如何处理训练数据集中的第一条记录(我不知道以前的价格)。应该保留为 0 吗?这应该是一个坏主意,之前的价格不为零。我应该在训练数据集中使用价格平均值吗?还有其他建议吗?2)同样的问题与#1相同,但针对测试数据集运行经过充分训练的网络。在针对测试数据集运行我的网络时,我应该始终选择其预测并将结果放入新的第 11 个输入神经元中,然后再进行下一次预测。但同样,当我需要在数据集中运行第一次预测时该怎么办(因为我不知道以前的价格)?

最佳答案

这根本不是我对循环网络的理解。

当您最初创建循环网络时,循环连接(例如中间层到中间层)将被随机化,就像任何其他连接一样。这是它们的起始值。每次激活循环网络时,您都会改变这些连接,因此您的输出也会改变。

继续执行此逻辑,如果您编写了一些代码来训练循环网络并将其保存到文件中,则该文件中将有一个循环网络准备好与您的真实数据一起使用,尽管第一次调用将包含培训期间上次激活的反复反馈。

您要做的就是确保在您希望保留其状态的任何时候重新保存您的循环网络。对于简单的 FFN,这不会成为问题,因为您只在训练期间更改状态,但对于循环网络,您需要在任何激活后保留状态,因为循环权重将会更新。

我不认为循环网络会因为循环连接的初始值而中毒;当然,我不会相信第一次调用,但考虑到它们是为序列设计的,在任何情况下都不应该成为问题。

关于您更新的问题,我根本不相信任意添加单个输入节点会模拟这一点。事实上,我怀疑你绝对会破坏网络的预测能力。在您的示例中,从 10 个输入节点开始,假设您有 20 个中间节点,只需添加一个额外的输入节点,您就会生成额外的 20 个网络连接,这些连接最初是随机的。每个额外的点都会加剧这种变化,在 10 个额外的输入节点之后,您将拥有与训练的一样多的随机连接。

我不认为这有效,而且我当然不相信它会按照您想象的方式模拟循环学习。

关于machine-learning - Pybrain 用于回归的循环网络 - 如何正确启动经过训练的网络进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28855024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com