I saw Peter Norvig give a great general-audience talk on AI at Berkeley when I was there last month. A few notes from his talk.
- “We have always prioritized fast and cheap over safety and privacy — maybe this time we can make better choices.”
- He briefly showed a demo where, given values of a polynomial, a machine can put together a few lines of code that successfully computes the polynomial. But the code looks weird to a human eye. To compute some quadratic, it nests for-loops and adds things up in a funny way that ends up giving the right output. So has it really ”learned” the polynomial? I think in computer science, you typically feel you’ve learned a function if you can accurately predict its value on a given input. For an algebraist like me, a function determines but isn’t determined by the values it takes; to me, there’s something about that quadratic polynomial the machine has failed to grasp. I don’t think there’s a right or wrong answer here, just a cultural difference to be aware of. Relevant: Norvig’s description of “the two cultures” at the end of this long post on natural language processing (which is interesting all the way through!)
- Norvig made the point that traditional computer programs are very modular, leading to a highly successful debugging tradition of zeroing in on the precise part of the program that is doing something wrong, then fixing that part. An algorithm or process developed by a machine, by contrast, may not have legible “parts”! If a neural net is screwing up when classifying something, there’s no meaningful way to say “this neuron is the problem, let’s fix it.” We’re dealing with highly non-modular complex systems which have evolved into a suboptimally functioning state, and you have to find a way to improve function which doesn’t involve taking the thing apart and replacing the broken component. Of course, we already have a large professional community that works on exactly this problem. They’re called therapists. And I wonder whether the future of debugging will look a lot more like clinical psychology than it does like contemporary software engineering.