We propose ACE (Acquisitional Context Engine), a middleware that supports continuous context-aware applications while mitigating sensing costs for inferring contexts. ACE provides user's current context to applications running on it. In addition, it dynamically learns relationships among various context attributes (e.g., whenever the user is 'Driving', he is not 'AtHome'). ACE exploits these automatically learned relationships for two powerful optimizations. The first is inference caching that allows ACE to opportunistically infer one context attribute ('AtHome') from another already-known attribute ('Driving'), without acquiring any sensor data. The second optimization is speculative sensing that enables ACE to occasionally infer the value of an expensive attribute (e.g., 'AtHome') by sensing cheaper attributes (e.g., 'Driving'). Our experiments with two real context traces of 105 people and a Windows Phone prototype show that ACE can reduce sensing costs of three context-aware applications by about 4.2x, compared to a raw sensor data cache shared across applications, with a very small memory and processing overhead.
(Full paper: http://research.microsoft.com/pubs/160599/main.pdf)
Public Review uploaded by AlexanderVarshavsky:
This public review was prepared by Alexander Varshavsky, AT&T Labs.
The proliferation of smart phones equipped with a wide variety of sensors has already started to integrate context-aware computing into the fabric of our everyday life. What is still missing is the ability to sense the context continuously. Unfortunately, the naive approach of keeping sensors on at all times can drain the battery of a mobile device in a few hours. This paper proposes ACE, a middleware that provides the user's current context to applications while minimizing the impact on the device's battery life. By dynamically learning the relationships among context attributes, ACE is able to exploit known context attributes (e.g., Driving) to opportunistically infer desired context attributes (e.g., AtHome) and to use less power hungry context attributes (e.g., Driving) to infer more energy consuming context attributes (e.g., AtWork). The results based on a Windows Phone prototype and traces from 105 people show that ACE is able to reduce the power consumption of a phone by a factor of 4, compared to a continuously gathered sensor data cache shared among applications.
While this paper presents an elegant solution, it has several drawbacks. First, in its quest to save as much power as possible, ACE will occasionally infer the context incorrectly. This can be both annoying to users who expect 100% accuracy and it could introduce new bugs that are hard to debug. Second, in its current form, ACE supports only boolean attributes (e.g., AtWork). Supporting non-boolean attributes, such as a user's location or speed is an obvious, but much needed extension. Third, ACE doesn't exploit temporal correlation across attributes. For instance, if a user's home and work are 10 minutes apart, knowing that a user is at home could signal that the user can't be at work for at least 10 minutes. Finally, the paper doesn't discuss ways to evaluate the goodness of the inferred rules and doesn't present a good sense of the limits of the approach.
The topic of continuous context sensing is very hot these days. This paper is an excellent example of top notch work in the area and I hope it will inspire others to tackle this important problem. Once solved, continuous context sensing is guaranteed to significantly enrich our everyday lives.
I agree with Alex's comments above. Unfortunately, occasional inaccuracies of ACE's context inference is fundamental because the absolute true value of a context attribute can be found by sensing the attribute, which ACE tries to avoid as much as possible. Note that even without ACE, typical machine learning-based context inference algorithms have some small inaccuracies. Thus, one way to think of ACE is to treat it as a new context inference algorithm that can give a high energy savings for a small additional inaccuracy. In our experiments, ACE is (~5%) more inaccurate than existing algorithms, but is 4x more energy-efficient. The trade-offs can be tuned.
The other limitations are not fundamental and can be addressed (discussed in the paper). ACE, in its current form, can handle non-Boolean attribute if it has a small number of discrete values. For example, if the 'Location' attribute has three values of 'Home', 'Work', and 'Outdoor', it can be replaced with three Boolean attributes 'AtHome?', 'AtWork?', and 'IsIndoor?'. Dealing with continuous attributes (such as GPS location or speed), however, would require extensions to ACE algorithms. Capturing temporal correlation would also require non-trivial extensions. In the paper, we briefly discuss how these can be done.
The strength of the current version of ACE is its simplicity. For example, it does not require applications to agree on the semantic meaning of context labels. Applications can simply register a new contexter that other applications are unaware of but they still benefit indirectly through correlations that the system might detect. One might envision extending ACE to be more intelligent---by incorporating semantic meanings of context attributes, temporal correlation of attributes, non-Boolean attributes, etc. Evaluating how useful such extensions are in practice is an interesting future work.