我可以在 LSTM 中加强良好的模式识别吗?

Can I reinforce good patterns recognition in LSTM?

人们谈论 LSTM 预测下一个时间步长。这意味着它应该识别一种模式来做出预测。假设它在学习阶段经常看到 1 2 3 个序列。所以当它看到 1 2 时,它会预测 3。对吗?

但是如果我不想预测数字怎么办?如果我需要 LSTM 来识别无法简单量化的模式怎么办?

这是一个例子。波浪。你是一个 LSTM 并且你在海滩上(很好!)。你数着波浪。您的输入是 3d 向量。每次观察都是 {height,speed,time}(时间是自上次观察以来的秒数 - 这很重要,因为波浪以可变间隔出现)。但是您会在离海滩 100 米处看到海浪。而你站在离水边10米的地方。

我希望你能识别波浪模式,这会导致你的脚被波浪序列弄湿。

所以这个问题有两个不同的挑战。

一个是 "imminence" - 由于波浪的速度不同,因此无法知道波浪到达您的脚下需要多长时间。不同的模式会在不同的时间完成。因此,当 LSTM 识别出一个好的模式时的时间步长 M 和它到达你脚下的时间步长 N 之间的距离会对每个好的模式保持警惕。

第二个输出(比如我想要 0 或 1)不在输入序列中。它不是在预测下一波,而是在预测 0/1。

任何人都可以建议这种 LSTM 的高级架构吗?我如何编程 "wet feet"?在批处理 ML 中,它会被称为有监督的,我会用 "wet feet" 标签标记某些数据点。

这是另一个考虑因素。也许应该堆叠起来。说 3 个 LSTM。因为有些波浪会对湿脚事件产生重大影响,而有些则不会。我在想,我可能需要 1 台机器来学习小模式,2 台机器来学习模式的模式,3 台机器来实际预测湿脚。

想法?

查看 https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py 以了解使用 LSTM 进行分类任务的示例。最基本的架构只是一个 LSTM 层,后跟一个输出节点:

model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))