如何明确哪些模型层用于机器学习?

How to clarify which model layers to use for machine learning?

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

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

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

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

我们目前使用 LSTM 和 RNN

但是如果有更好的模型,我们如何确定呢?

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

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

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

一旦你有了那个基线,你就可以开始考虑建立一个优于这个基线的深度学习模型。ui。

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

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

要选择这些层的宽度以及应使用的层数,您需要进行一些试验。

您想要实现的第一件事是建立一个可以过度拟合数据子集的模型。uild。因此,您从一遍又一遍地仅传入一批示例开始。如果模型不能过度拟合,则可以使层更宽。如果图层开始变得太宽,则在顶部添加另一个图层。

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

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

到那时你就可以开始寻找更好的超参数,看看你能超过你的基线多少。