Search code examples
cntk

CNTK time series anomaly detection tutorial or documentation (RNN/LTSM)?


Problem

Do you have a tutorial for LTSM or RNN time series anomaly detection using deep learning with CNTK? If not, can you make one or suggest a series of simple steps here for us to follow?

I am a software developer and a member of a team investigating using deep learning on time series data we have for anomaly detection. We have not found anything on your python docs that can help us. It seems most of the tutorials are for visual recognition problems and not specific to the problem domain of interest to us.

Using LTSM and RNN in Anomaly Detection

I have found the following

  • This link references why we are trying to use time series for anomaly detection
  • This paper convinced us that the first link is a respected approach to the problem in general
  • This link also outlined the same approach

I look around on CNTK here, but didn't find any similar question and so I hope this question helps other developers in the future.

Additional Notes and Questions

My problem is that I am finding CNTK not that simple to use or as well documented as I had hoped. Frankly, our framework and stack is heavy on .NET and Microsoft technologies. So I repeat the question again for emphasis with a few follow ups:

  • Do you have any resources you feel you can recommend to developers learning neural networks, deep learning, and so on to help us understand what is going on under the hood with CNTK?
  • Build 2017 mentions C# is supported by CNTK. Can you please point us in the direction of where the documentation and support is for this?
  • Most importantly can you please help get us unstuck on trying to do time series anomaly analysis for time series using CNTK?

Thank you very much for time and assistance in reading and asking this question


Solution

  • Thanks for your feedback. Your suggestions help improve the toolkit.

    First Bullet

    • I would suggest that you can start with the CNTK tutorials.

      https://github.com/Microsoft/CNTK/tree/master/Tutorials

    • They are designed from CNTK 101 to 301. Suggest that you work through them. Many of them even though uses image data, the concept and the models are amenable to build solutions with numerical data. 101-103 series are great to understand basics of the train-test-predict workflow.

    Second Bullet:

    Third Bullet

    • There are different approaches suggested in the papers you have cited. All of them are possible to do in CNTK with some changes to the code in the tutorials.

    • The key tutorial for you would be CNTK 106, CNTK 105, and CNTK 202

    • Anomaly as classification: This would involve you label your target value as 1 of N classes, with one of the class being "anomaly". Then you can combine 106 with 202, to classify the prediction

    • Anomaly as an autoencoder: You can need to study 105 autoencoder. Now instead of a dense network, you could apply the concept for Recurrent networks. Train only on the normal data. Once trained, pass any data through the trained model. The difference between the input and autoencoded version will be small for normal data but the difference will be much larger for anomalies. The 105 tutorial uses images, but you can train these models with any numerical data.

    Hope you find these suggestions helpful.