I have just spent an enjoyable week on a research visit at Microsoft Research Cambridge, one of Microsoft’s ten worldwide research labs. It was founded in 1997 and is dedicated to conducting both basic and applied research in computer science and software engineering.
I’ve been working with Andrew Fitzgibbon, a principal researcher in computer vision at MSR (we bumped into each other at an EPSRC event last October). We’ve been looking at applications of a technique known as superoptimisation to problems in machine learning. My PhD research developed a superoptimising framework to generate provably optimal code sequences using Answer Set Programming, a declarative programming language based on the answer set semantics of logic programming. I still think there is a lot of interesting research to be done in superoptimisation.
Some of the potential research ideas that we have been throwing around include using superoptimisation to optimise common machine learning expressions, such as automatic differentiation and symbolic matrix algebra (whilst worrying about auto sparsity, numerical stability and code complexity). Maybe even looking at aspects of auto parallelisation…lots of things to think about!
I would highly recommend motivated computer science PhD students to apply for an internship at MSR; I have colleagues in the Programming Principles and Tools and Machine Learning and Perception research groups, but check out the other groups for intersecting research interests. MSR is a fine place to be, an invigorating research environment; it is also situated in rather illustrious company, on the same site as the University of Cambridge’s Computer Laboratory, Whittle Laboratory and Cavendish Laboratory (where I had an interesting lunch on Friday). I look forward to going back over the next few months.