【问题标题】:How to clarify which model layers to use for machine learning?如何明确哪些模型层用于机器学习?
【发布时间】:2019-11-28 09:08:04
【问题描述】:

我们目前正在使用 Deeplearning4j 进行机器学习的小实验。

我们有来自不同设备的时间序列电压测量,我知道这些设备相互依赖。 我们设法用 1 和 0 标记大量这些数据。

我们的问题是弄清楚模型层的用途。

对我们来说,在人们之间使用它似乎是经验,而例子似乎是随机的。

我们目前使用 LSTM 和 RNN

但是我们如何才能弄清楚是否有更好的模型呢?

我们想看看模型是否可以通过我们没有注意到的预测来找出一些依赖关系。

【问题讨论】:

    标签: machine-learning deep-learning deeplearning4j


    【解决方案1】:

    解决此问题的最佳方法是首先查看您的数据以及您想从中获得什么。然后,您应该从设置基线开始。使用您熟悉的最简单的建模技术,以便您拥有一切。

    在您的情况下,您似乎每个时间步都有一个标签。因此,您可能只对每个时间步分别使用简单的线性回归,以了解如果您根本不包含任何序列信息会得到什么。任何快速运行的东西都是这一步的理想选择。

    获得该基线后,您就可以开始考虑构建一个优于该基线的深度学习模型。

    对于时间序列数据,目前在 DL4J 中有两种选择,要么使用 LSTM 之类的循环层,要么随时间使用卷积。

    如果您想在每个时间步都有一个输出,那么循环层可能更适合您。如果您想在读取整个序列后只得到一个结果,那么卷积方法通常效果最好。

    要选择这些层的宽度以及应该使用多少层,您必须进行一些试验。

    您要实现的第一件事是构建一个可以过度拟合数据子集的模型。所以你开始,一遍又一遍地只传递一批例子。如果模型不能对此进行过度拟合,则可以使层更宽。如果图层开始变得太宽,则在顶部添加另一个图层。

    如果您使用 deeplearning4j-ui 模块,它会告诉您模型当前有多少参数。它们通常应该少于您拥有的示例总数,否则您可能会过度拟合整个数据集。

    一旦您可以训练模型以对一小部分数据进行过拟合,您就可以开始使用所有数据对其进行训练。

    此时,您可以开始寻找更好的超参数,并查看您可以在多大程度上超越您的基线。

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 2015-06-29
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多