Peter
Norvig
What Every Software Engineer
Should Know About Machine Learning
“How can we reinvent it
knowing that software
can play such an
important role.”
“How can we reinvent it
knowing that machine
learning can play such an
important role.”
New Classes
of
Applications
Visual
Object
Recognition
Traditional Software
vs
Machine Learning
Traditional Software
Machine Learning
Data
End-to-End Caption Writing
Human: Three different types of pizza on top of a stove.
Machine: Two pizzas sitting on top of a stove.
A couple of
giraffe
standing
next to each
other
A
reflectio
n of a
dog in a
side
view
mirror
A man
riding a
skateboard
Lack of Clear
Abstraction
Barriers
Non-Modularity:
Changing
Anything
Changes
Everything
Google Now
Time of travel:
23 minutes by bicycle
event = ExtractEvent(email.body)
trip = Travel(current.location, event.location, event.time)
CreateAlert(trip)
Nonstationarity
Feedback Loops
Privacy and SecurityPrivacy, Security, Fairness
Lack of Tooling
Data/Config Dependencies
Build / Test / Release Cycles
Mechanism Design
Utility Function Design
Scalable Oversight
Safe Exploration
Inattention Valley
“the worst … except all the
others that have been tried”

What Every Software Engineer Should Know About Machine Learning - Peter Norvig

Editor's Notes

  • #3 Marc Andressen said that software is eating the (business) world.
  • #4 We see it in the fortunes of these once-dominant companies.
  • #5 Now replaced with these software-driven competitors. Other companies: wal-mart, FedEx – are software networks that happen to have physical assets.
  • #6 But we see a lot of companies recently driven by machine learning technology. How is machine learning different from other software?
  • #7 But we see a lot of companies recently driven by machine learning technology. How is machine learning different from other software?
  • #10 This a typical inexpensive digital camera (or smart phone). It can detect faces with a green square. How was that done? Engineers analyzed the problem of finding faces and laboriously wrote code that said something like look first for vertical bright bands in an image that might be noses then look for horizontal dark bands that might be eyes, then looks for other general patterns associated with faces, including a certain range of skin shades They could afford to spend a few weeks or even a few months of engineer timefiddling with the code on this problem, because it was the only identification problem the camera had to do. This is Google Photos. It doesn’t just detect faces? It detects everything. It knows about hundreds of thousands of categories, objects, locations, adjectives, etc. Here it automatically classified my recent photos, making up category names.
  • #11 Not just flowers, but clematis. Note it got one wrong.
  • #12 We can even learn abstract concepts
  • #14 Programmer defines problem and solution Solution in form of explicit “if-then” rules Bugs occur when rules are wrong Plagued by complexity
  • #15 Programmer defines model, Data defines solution With enough data, generalizes well Bugs occur when model is poor fit or data is lacking Still plagued by complexity, but in different ways
  • #25 “Easy” to launch with some good results Hard to make improvements
  • #27 sands of time --- nonstationarity
  • #28 Altering behavior of the very users the system relies on :
  • #31 Everything changes over time Standard test cycle: pass tests and be done
  • #32 Harder than code dependencies; no automated tools System B uses some raw data, but also uses a score computed by System A. But the System A engineers periodically change their scoring algorithm, perhaps without even knowing that System B is consuming the scores. Feature A was incorrectly logged from 9/14 to 9/17. Feature B started 10/7. feature C logging format changed. Feature D is not available in production, so a substitute features D′ If feature Z is used, extra memory requiredy. Feature Q precludes the use of feature R because of latency constraints.
  • #33 Harder than code dependencies; no automated tools System B uses some raw data, but also uses a score computed by System A. But the System A engineers periodically change their scoring algorithm, perhaps without even knowing that System B is consuming the scores. Feature A was incorrectly logged from 9/14 to 9/17. Feature B started 10/7. feature C logging format changed. Feature D is not available in production, so a substitute features D′ If feature Z is used, extra memory requiredy. Feature Q precludes the use of feature R because of latency constraints.
  • #35 Everything changes over time Standard test cycle: pass tests and be done
  • #37 Everything changes over time Standard test cycle: pass tests and be done
  • #38 Everything changes over time Standard test cycle: pass tests and be done
  • #39 Everything changes over time Standard test cycle: pass tests and be done