Why do we have to train a model from scratch every time?
Disclosure: I am a product manager on Google Cloud Platform.


  [...] why does everyone have to repeat the effort of learning the same things?
  
  If Google has already learned cats, or if someone already has a program to recognize handwritten digits, can this knowledge be shared and re-used? Or is it just a matter of paying for them?


You don't have to rebuild these machine learning models from scratch; you can reuse prebuilt machine learning algorithms, e.g., Google Cloud provides the following hosted APIs as a service:


Google Cloud Vision API to recognize images and provide text labels
Google Cloud Speech API to convert speech to text
Google Cloud Natural Language API to understand language, find entities, etc.
and more...


You can put these APIs together to build interesting applications, e.g.,


build a smart Raspberry Pi bot with Cloud Vision and Speech APIs (video presentation; blog post + video overview)