The science of training devices or software to perform a task and improve its capabilities by feeding it data and information so it can improve performance over time is called: