Quantum computing for learning: Shaping reality both figuratively and literally

I’d like to document in snippets and thought-trains a little more of the story behind how my co-workers and I are trying to apply quantum computing to the field of intelligence and learning. I honestly think that this is the most fascinating and cool job in the world. The field of Artificial Intelligence (AI) – after a period of slowdown – is now once again exploding with possibility. Big data, large-scale learning, deep networks, high performance computing, bio-inspired architectures… There have been so many advancements lately that it’s kind of hard to keep up! Similarly, the work being done on quantum information processing here at D-Wave is ushering in a new computational revolution. So being a multi-disciplinary type and somewhat masochistic, I find it exciting to explore just how far we can take the union of these two fields.

Approximately 5 years ago, while working on my PhD at University, I started to have an interest in whether or not quantum computing could be used to process information in a brain-like way. I’m trying to remember where this crazy obsession came from. I’d been interested in brains and artificial intelligence for a while, and done a bit of reading on neural nets. Probably because one of my friends was doing a PhD that involved robots and I always thought it sounded super-cool. quantum_learning_1But I think that it was thinking about Josephson junctions that really got me wondering. Josephson junctions are basically switches. But they kind of have unusual ways of switching (sometimes when you don’t want them to). And because of this, I always thought that Josephson junctions are a bit like neurons. So I started searching the literature to find ways in which researchers had used these little artificial neurons to compute. And surprisingly, I found very little. There were some papers about how networks of Josephson junctions could be used to simulate neurons, but no-one had actually built anything substantial. I wrote a bit about this in a couple of old posts (from Physics and Cake blog):

I’d read about the D-Wave architecture and I’d been following the company’s progress for some time. After reading a little about the promise of Josephson junction networks, and the pitfalls of the endeavour (mostly because making the circuits reproducible is extremely difficult), I then began wondering whether or not the D-Wave processor could be used in this way. It’s a network of qubits made from Josephson junctions after all, and they’re connected together so that they talk to each other. Yeah, kind of like neurons really. Isn’t that funny. And hey, those D-Wave types have spent 8 years getting that network of Josephson junctions to behave itself. Getting it to be programmable, addressable, robust, and scalable. Hmm, scalable…. I particularly like that last one. Brains are like, big. Lotsa connections. And also, I thought to myself (probably over tea and cake), if the neurons are qubits, doesn’t that mean you can put them in superposition and entangled states? What would that even mean? Boy, that sounds cool. Maybe they would process information differently, and maybe they could even learn faster if they could be in combinations of states at the same time and … could you build a small one and try it out?

The train of thought continued.

From quantum physics to quantum brains

That was before I joined D-Wave. Upon joining the company, I got to work applying some of my physics knowledge to helping build and test the processors themselves. However there was a little part of me that still wanted to actually find ways to use them. Not too long after I had joined the company there happened to be a competition run internally at D-Wave known as ‘Apps Day’, open to everyone in the company, where people were encouraged to try to write an app for the quantum computer. Each candidate got to give a short presentation describing their app, and there were prizes at stake.
I decided to try and write an app that would allow the quantum computer to learn how to play the board game Go. It was called QUAGGA, named after an extinct species of zebra. As with similar attempts involving the ill-fated zebra, I too might one day try to resurrect my genetically-inferior code. Of course this depends on whether or not I ever understand the rules of Go well enough to program it properly🙂 Anyway… back to Apps Day. There were several entries and I won a runner-up prize (my QUAGGA app idea was good even though I hadn’t actually finished coding it or run it on the hardware). But the experience got me excited and I wanted to find out more about how I could apply quantum processing to applications, especially those in the area of machine learning and AI.

That’s why I moved from physics into applications development.

Since then the team I joined has been looking into applying quantum technology to various areas of machine learning, in a bid to unite two fields which I have a really strong feeling are made for each other. I’ve tried to analyse where this hunch originates from. The best way to describe it is that I really want to create models of machine intelligence and creativity that are bio-inspired. quantum_learning_2 To do that I believe that you have to take inspiration from the mammalian brain, such as its highly parallel, hierarchical arrangement of substructures. And I just couldn’t help but keep thinking: D-Wave’s processors are highly parallel systems with qubits that can be in one of two states (similar to firing or not firing neurons) with connections between them that can be inhibitory or excitory. Moreover, like the brain, these systems, are INCREDIBLY energy efficient because they are designed to do parallel processing. Modern CPUs are not – hence why brain simulations and machine learning programs take so much energy and require huge computer clusters to run. I believe we need to explore many different hardware and software architectures if we want to get smarter about intelligent computing and closer to the way our own minds work. Quantum circuits are a great candidate in that hunt for cool brain-like processing in silicon.

So what on earth happened here? I’d actually found a link between my two areas of obsession interest and ended up working on some strange joint project that combined the best of both worlds. Could this be for real? I kept thinking that maybe I wanted to believe so badly I was just seeing the machine-learning messiah in a piece of quantum toast. However, even when I strive to be truly objective, I still find a lot of evidence that the results of this endeavour could be very fruitful.

Our deep and ever-increasing understanding of physics (including quantum mechanics) is allowing us to harness and shape the reality of the universe to create new types of brains. This is super-cool. However, the thing I find even cooler is that if you work hard enough at something, you may discover that several fascinating areas are related in a deeper way than you previously understood. Using this knowledge, you can shape the reality of your own life to create a new, hybrid project idea to work on; one which combines all the things you love doing.

Embracing Disruption: Lessons from building the first quantum computer

Here’s an article written about disruptive technology in Canada featuring a case study of the impact D-Wave could have on future innovation in healthcare:

Embracing disruption: Lessons from building the first quantum computer

From the article:
“Many health experts believe that in the next five to ten years, quantum computing will radically improve the ability to understand, treat and cure diseases.”

Hack the wha…?

What’s the new blog format all about?

We wanted to introduce you to the wild and wonderful world of programming quantum computers. We’re not just physicists and engineers who are interested in quantum mechanics; that’s our day job. By night (and sometimes on weekends) we are multiverse hackers.

So what is hacking the multiverse all about? Well, we love to code and program computers. But we happen to also work for D-Wave, so we get to program quantum computers. That’s pretty cool in itself. But what’s even cooler is what we’re programming them to do.

D-Wave machines can be applied to many problems, but the main area we’re looking at is known as Machine Learning. This is the discipline of how to get computers to learn things from the data that we give them. That data can either be fed to the system by hand, or the system can gather data on its own by interaction with the real world through sensors and connections to networks of information.

Why are quantum computers good at learning? Well, in a nutshell, the architecture of the QC systems we are building is much more like a brain than a regular ‘Von Neumann style’ computer, in terms of both the physical layout of the memory elements, and in the way that the processors use quantum mechanics to help find a good solution to a problem.

The new blog format will describe the programming, what the computers are made of, how they operate, and how they the quantum mechanics to solve problems in much more detail. There’ll be a small group of us blogging regularly about our explorations in designing, building, and programming quantum computers to do cool and useful stuff.

Quantum mechanics is no longer just for physicists… it’s now for software developers too. Enjoy!

A question about matrices

I have been thinking about ways to construct interesting adiabatic algorithms for tasks other than optimization. One of the areas I have been looking is in quantum simulation and in particular in calculating energy eigenvalues & eigenvectors of quantum systems.

Here is a question I was looking at earlier today that I don’t know the answer to, maybe you can help. Here is my question.

Assume you are given two 2^n x 2^n Hermitian matrices H_1 and H_2. What are the resource costs for determining if all the eigenvalues of H_1 and H_2 are the same, ie. they both have the same spectrum? Note that we don’t need to know what the eigenvalues actually are, just whether the two matrices have the same eigenvalues. One way to do it is to (a) diagonalize  H_1 and H_2, (b) sort each list of eigenvalues, and (c) compare them one by one. This is exponential in n. I’m sure there must be a much better way to do this. Anyone have any helpful hints?

Here is a thought. If there exists an invertible matrix P such that H_1 = P^{-1} H_2 P then H_1 and H_2 have the same eigenvalues. I think the phrase commonly used for these are similar matrices. So given two matrices is there an efficient way to check whether such a P exists?