How do all the algorithms around us learn to do their jobs?