poniedziałek, 2 stycznia 2017

LSTM - recurrent neural networks

Since september, I was focused on my graduation project. I was working with my two friends and one of the topics was classification of data. We have to recognize gestures from data which was comming from gloves equiped with accelerometer and magnetometer sensors.

There are several methods to handle that kind of problem: Dynamic Time Warping, Hidden Markov Models and neural networks. We decided to use LSTMs (Long Short Time Memory) - special type of recurent neural networks which is current "state of the art" for classification problems. That solution was introduced in 1997 by Sepp Hochreiter and Jürgen Schmidhuber (paper) and thanks to many succesful applications in that field becomes very popular.

Our application was written in C#. We was looking for framework which can be easily integrated, supports training on GPUs and of course allows to create LSTM networks. We found CNTK which is deep learning, open source framework developed by Microsoft. It is written in C++ and provides wrapping library for evaluation models in C#. It allows to build generic network model using SimpleNetworkBuilder, which is good entry point for beginners.

Some links related to LSTMs, classification:
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
http://people.idsia.ch/~juergen/tpami_2008.pdf
http://www.cs.ucr.edu/~eamonn/DTW_myths.pdf