What do you get when you mix compute clouds and electroencephalograms (EEG) together? Ask Kathleen Ericson a PhD candidate in the Department of Computer Science at Colorado State University, who in a paper coauthored with Professors Shrideep Pallickara and Charles Anderson has explored some of these possibilities . This paper was awarded the Best Student Paper award at the IEEE Conference on Cloud Computing Technology & Science in December 2010.
Brain Computer Interfaces (BCIs) have been gaining traction in recent years. These applications range from allowing people who have lost voluntary motor control to type at a keyboard  and also to allow navigating a wheelchair through a crowded room . These applications rely on EEG data gathered from electrodes held close to the scalp. Machine Learning techniques, such as artificial neural networks, can then be used to interpret the user’s intent from these signals.
EEG analysis is usually performed in physical proximity to the user that, in turn, can lead to limitations in the processing power available for analyzing the EEG signals. For example, the wheelchair application relies on a laptop carried by the user for all EEG analysis. Professor Anderson has been researching EEG classification problems for several years.
In current BCI applications, there is a one-to-one relationship between the user and the machine. This usually means that there is a single, very well trained neural network that has been fine-tuned to interacting with that individual. Training a neural network to the point where it can provide meaningful classifications can be time consuming. EEG classification has the additional difficulty that the signals may change over time due to user fatigue. Because of user fatigue, a fine-tuned neural network may need to undergo a period of retraining while in use.
The CSU team considered an alternative to the approach of a single well-trained neural network: the group of experts approach. This approach involves training many smaller neural networks. Each network is smaller and less well trained than a single neural network would need to be – meaning that the training process is much shorter. While none of these networks can individually learn enough to accurately classify all data, each learns something slightly different, and an accurate classification can be built upon their predictions as a group. But such an approach also means the need for more compute capabilities.
The decision to moving the EEG analysis to the cloud allowed the team to move away from the one-to-one relationship that is common between users and machines in BCI applications. This is also where the Granules [4, 5] cloud runtime (created by Prof. Pallickara, the author’s PhD advisor) comes in. Granules is uniquely suited to processing such EEG streams. Granules provisions a radically different computation model. Unlike traditional computations that have a run-once semantics, computations in Granules have a lifetime associated with it and can execute multiple times and retain state across multiple executions. This feature comes in particularly handy when you are processing EEG streams in real time.
Using Granules, instead of having a single neural network devoted to classifying EEG signals, one could use a whole cluster. The group of experts’ approach is a particularly good fit for the Map-Reduce paradigm that is supported in Granules. Each mapper is responsible for training and maintaining a neural network. When a mapper has classified data, it sends its classification on to the reducer. The reducer waits for all mappers to weigh in, and then produces an expert opinion based on the predictions of all the mappers. While their current implementation simply returns the most predicted classification, it is possible to train another neural network on the reducer that can learn which mappers have the best predictions and add appropriate weights to incoming predictions.
While other cloud runtimes, such as Hadoop , demand run-once semantics, Granules allows computations to be activated as more data is available (such as new EEG streams being generated), and enter a dormant state between rounds of execution. Granules is then able to store state between successive rounds of execution. This allowed the CSU team to train neural networks on a set of resources within Granules, and then stream EEG signals to the cloud for classification. In Hadoop, this would have required one to write the neural network to file between rounds of execution, and load it back into memory before classifying any data. This would have precluded the possibility of classifying EEG signals in real time.
An additional benefit of using Granules is the ability to concurrently interleave several long-running computations simultaneously on a given machine. This means that a single cluster of neural networks can support thousands of users simultaneously. In their experiments, the team at CSU has supported EEG streams generated by 150 users on a cloud of 10 computers. In these experiments the streams were generated from a pre-recorded dataset, and were sent in bursts every 250ms for every user. This resulted in their system classifying EEG streams at the rate of 12MB/s, 1GB/83s, and 1TB in 23 hours.
This cloud returned classification results in under 250ms (before the next set of data is sent) in 99.9% of the test cases. With 150 users, 0.04% of the messages were over the 250ms threshold: one of every 2,500 messages (once every 10 minutes) the response to a 250ms packet was too slow. Using compression algorithms on the streams should allow handling even more concurrent users within such a cluster. The design does not preclude allowing the existence of multiple such clusters which would allow the system to scale-out even more.
Ultimately, this research has tremendous promise. By moving EEG analysis to the cloud, one can avoid the limitations many mobile BCI applications have. Instead of having a single machine dedicated to a single user, one could have a cluster of hundreds of machines serving tens of thousands of users. This approach has multiple benefits: First, by aggregating so much user data, one can have a much larger base to train the neural networks. Secondly, one can leverage a group of experts approach – multiple smaller neural networks spread across a cloud can work together to produce an expert opinion. Lastly, this also opens up possibilities for even more complex analysis with the Map-Reduce paradigm. EEG streams can be analyzed not only over an immediate interval, but longer intervals of data (such as seconds or minutes) can be analyzed for trends. The Colorado State University team is exploring these research issues.
 K. Ericson, et al., “Analyzing Electroencephalograms Using Cloud Computing Techniques,” in IEEE Conference on Cloud Computing Technology and Science, Indianopolis, USA, 2010.
 C. W. Anderson and J. A. Bratman, “Translating Thoughts into Actions by Finding Patterns in Brainwaves,” in Fourteenth Yale Workshop on Adaptive and Learning Systems, New Haven, CT, 2008, pp. 1-6.
 F. Galan, et al., “A brain-actuated wheelchair: Asynchronous and non-invasive Brain-computer interfaces for continuous control of robots,” Clinical Neurophysiology, vol. 119, pp. 2159-2169, 2008.
 S. Pallickara, et al., “Granules: A Lightweight, Streaming Runtime for Cloud Computing With Support for Map-Reduce,” in IEEE International Conference on Cluster Computing, New Orleans, LA., 2009.
 S. Pallickara, et al., “An Overview of the Granules Runtime for Cloud Computing,” in IEEE International Conference on e-Science, Indianapolis, 2008.
 T. White, Hadoop: The Definitive Guide, 1 ed.: O’Reilly Media, 2009.