gpt4 book ai didi

machine-learning - 使用循环神经网络进行时间序列预测

转载 作者:行者123 更新时间:2023-11-30 09:54:28 24 4
gpt4 key购买 nike

我正在使用Bike Sharing dataset根据输入预测一天内的租赁数量。我将使用 2011 年的数据进行训练,并使用 2012 年的数据进行验证。我成功构建了一个线性回归模型,但现在我试图弄清楚如何使用循环神经网络来预测时间序列。

数据集有 10 个属性(例如月份、工作日与否、温度、湿度、风速),全是数字,尽管属性是日(星期日:0、星期一:1 等)。

我假设有一天可以而且可能会取决于前几天(并且我不需要所有 10 个属性),所以我考虑使用 RNN。我知道的不多,但我读了一些东西,还this 。我想到了这样的结构。

我将有 10 个输入神经元一个隐藏层1 个输出神经元。我不知道如何决定隐藏层有多少个神经元。

我想我需要一个矩阵来连接输入层和隐藏层,一个矩阵来连接隐藏层和输出层,以及一个矩阵来连接相邻时间步中的隐藏层,t-1ttt+1。总共有 3 个矩阵。

在一个教程中,激活函数是sigmoid,虽然我不确定,但如果我使用 sigmoid 函数,我只会得到 0 到 1 之间的输出。我应该使用什么作为激活函数?我的计划是重复此操作 n 次:

  • 对于每个训练数据:
    • 前向传播
      • 将输入传播到隐藏层,将其添加到先前隐藏层到当前隐藏层的传播中。并将其传递给激活函数。
      • 将隐藏层传播到输出。
      • 找到错误及其导数,将其存储在列表中
    • 反向传播
      • 从列表中查找当前图层和错误
      • 查找当前隐藏层错误
      • 存储体重更新
    • 通过将权重(矩阵)乘以学习率来更新权重(矩阵)。

这是正确的方法吗?我想要真正的数值作为输出,而不是 0-1 之间的数字。

最佳答案

如果您只想学习基础知识,这似乎是正确的方法。如果你想构建一个用于实际用途的神经网络,这是一个非常糟糕的方法,正如 Marcin 的评论所说,几乎每个构建用于实际用途的神经网络的人都是通过使用具有现成的神经网络模拟的包来实现的。让我一一回答您的问题...

  1. 我不知道如何决定隐藏层有多少个神经元。

没有什么黄金法则可以为你的神经网络选择正确的架构。人们根据经验建立了许多经验规则,并通过尝试各种组合并比较输出来决定正确的神经元数量。一个好的起点是(输入加输出神经元的 3/2 倍,即 (10+1)*(3/2)...,因此您可以从隐藏层中的 15/16 个神经元开始,然后继续根据您的输出减少数量。)

  • 我应该使用什么作为激活函数?
  • 再说一次,没有“正确”的功能。这完全取决于什么适合您的数据。此外,Sigmoid 函数有多种类型,例如双曲正切、Logistic、RBF 等。Logistic 函数是一个很好的起点,但同样,您只能通过反复试验才能找到正确的函数。

  • 这是正确的方法吗?我想要真正的数值作为输出,而不是 0-1 之间的数字。
  • 所有激活函数(包括分配给输出神经元的激活函数)都会给你一个 0 到 1 的输出,你必须使用乘法器将其转换为实际值,或者对多个输出神经元进行某种编码。手动编码会很复杂。

    另一个需要考虑的方面是你的训练迭代。这样做“n”次并没有帮助。您需要通过反复试验找到最佳的训练迭代,以避免欠拟合和过度拟合。

    正确的方法是使用 Python 或 R 中的包,这将允许您快速训练具有大量自定义的神经网络,您可以在其中训练和测试具有不同激活函数(甚至不同激活函数)的多个网络。训练算法)和网络架构,没有太多麻烦。经过一定的尝试和错误,您最终会找到能够提供所需输出的网络。

    关于machine-learning - 使用循环神经网络进行时间序列预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37197707/

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