Most of the current research on deep learning is focused on images. Deep learning is being actively applied to many areas, but image recognition is definitely generating a lot of buzz. Deep neural networks are being used for image classification tasks and they are able to outperform all the other approaches by a big margin. The networks that are used here are traditional feedforward neural networks that learn how to classify data by generating the optimal feature representation. These neural networks severely limited when it comes to sequential data. Time series data is perhaps the most popular form of sequential data. Why can’t we use feedforward neural networks analyze sequential data?
If you consider the full capacity and capabilities of the human brain, you will see that it can do a wide variety of things with utmost ease. Categorizing images into a fixed number of categories is just a small part of it. If we holistically consider the process of learning, it is actually based on all our past experiences. Every time we get new information, the brain stores it for future context. This is a very powerful way to learn and this is what makes our brain really special. Our brain is trained to learn from a sequence of events and not necessarily just a single instance. For example, let’s say you come across a new car model that has a very weird shape, we’ll still know it’s a car because of the way we have learnt to recognize cars.
Some of the commonly occurring sequences in real life include video, speech, stock market, sensor data, and so on. Sequences have complex temporal dependencies and a lot of hidden information. We cannot just apply our classical feedforward neural network modeling approach to build a model to analyze sequences. Technically we can, but it will yield very poor results.
What exactly is sequential data like?
In order to build a model for sequential data, we need to understand the characteristics of sequential data. Let’s say we are trying to detect if it’s going to rain tomorrow based on all the parameters available today. There are a bunch of things that affect rain like temperature, pressure, humidity, and so on. If you just try to predict based on a static snapshot of data available 12 hours earlier, then you will be missing all the things that led to the build up of the rain. You cannot afford to take a snapshot of data in time and hope to predict what’s going to happen tomorrow. You need to look at the pattern over the last few days in order to predict what’s going to happen tomorrow.
Let’s consider the example of the following sentence — The brown dog in the park has four ____. If you are asked to guess what the missing word is, you can easily see that it’s “legs”. We were able to derive it from context. Let’s consider another example — I’m attending the Robotics and Vision Conference this year, so I will be in ____ for a week. If you hadn’t see the first half of the sentence, guessing the right city is impossible. You need to context of the Robotics and Vision Conference to know where the person is going to be.
What do we expect from a sequential data model?
When we build convolutional neural networks, we explicitly account for the 2D nature of the input data i.e. images. So when we build the model for sequential data, it needs to explicitly account for the sequential nature of input data. When we are building convolutional neural networks, we assume that the input data has a fixed size. In sequential data analysis, that’s a big restriction! So when we build a model, it should know how to model sequences of arbitrary length.
The model needs to know how to account for long term dependencies. It shouldn’t ask the user to input a time window within which it should look for dependencies. One of the main issues with sequential data is that we don’t what time instant affects future outcomes. We don’t know how far back we should go to look for patterns. This is one of the things the model should learn to do on its own.
4 thoughts on “Deep Learning For Sequential Data – Part I: Why Do We Need It”
Have you succeeded using Caffe for 1D Signals (with the HDF5 Format)?
Have you ever succeeded using 1D Signals in Caffe (HDF5 format)?
very helpful, thanks!
great.. clear and helpful