我们目前正在使用Deeplearning4j对机器学习进行一些实验。
我们从不同的设备按时间序列进行电压测量,我知道这是相互依赖的。 我们设法用1和0标记大量的数据。
我们的问题是弄清楚模型中各层的用途。
对于我们来说,似乎是人们之间使用它的经验,例子似乎是随机的。
我们目前使用LSTM和RNN
但是我们如何确定是否有更好的模型?
我们想看看该模型是否可以通过我们没有注意到的预测找出某些依赖性。
答案 0 :(得分:1)
解决此问题的最佳方法是,先查看您的数据以及您想要获得的数据。然后,您应该从设置基线开始。使用您所熟悉的最简单的建模技术,使您一无所有。
对于您来说,每个时间步都有一个标签。因此,您可能只对每个时间步分别使用简单的线性回归,以了解一下如果根本不包含任何序列信息将会得到什么。任何快速运行的方法都是此步骤的理想选择。
有了该基准后,就可以开始着手构建一个性能优于该基准的深度学习模型。
对于时间序列数据,目前在DL4J中有两个选择,或者使用像LSTM这样的递归层,或者使用随时间的卷积。
如果您想在每个时间步都有输出,那么循环层可能更适合您。如果您希望在读取整个序列后仅得到一个结果,则卷积方法通常效果最好。
要选择这些层的宽度以及应使用的层数,您将不得不进行一些实验。
要实现的第一件事是建立一个模型,该模型可能对数据的一部分过拟合。因此,您只需一遍又一遍地传递一批示例就可以开始。如果模型无法在此基础上过度拟合,则可以使图层更宽。如果图层开始变得太宽,请在顶部添加另一个图层。
如果使用deeplearning4j-ui模块,它将告诉您模型当前有多少个参数。它们通常应该少于您拥有的示例总数,否则您可能会过度拟合整个数据集。
一旦您可以训练模型以对一小部分数据进行过拟合,就可以开始对所有数据进行训练。
到那时,您可以开始寻找更好的超参数,并查看可以超出基线多少。