conclusions remarkable observation has been made repeatedly in recent yearstraining the same model to do several loosely connected tasks at the same time results in model that' better at each task for instancetraining the same neural machine-translation model to perform both english-to-german translation and french-to-italian translation will result in model that' better at each language pair similarlytraining an image-classification model jointly with an image-segmentation modelsharing the same convolutional baseresults in model that' better at both tasks this is fairly intuitivethere' always some information overlap between seemingly disconnected tasksand joint model has access to greater amount of information about each individual task than model trained on that specific task only currentlywhen it comes to model reuse across taskswe use pretrained weights for models that perform common functionssuch as visual feature extraction you saw this in action in in the futurei expect generalized version of this to be commonplacewe'll use not only previously learned features (submodel weightsbut also model architectures and training procedures as models become more like programswe'll begin to reuse program subroutines like the functions and classes found in human programming languages think of the process of software development todayonce an engineer solves specific problem (http queries in pythonfor instance)they package it as an abstractreusable library engineers who face similar problem in the future will be able to search for existing librariesdownload oneand use it in their own project in similar wayin the futuremetalearning systems will be able to assemble new programs by sifting through global library of high-level reusable blocks when the system finds itself developing similar program subroutines for several different tasksit can come up with an abstractreusable version of the subroutine and store it in the global library (see figure such process will implement abstractiona necessary component for achieving extreme generalization subroutine that' useful across different tasks and domains can be said to abstract some aspect of problem solving this definition of abstraction is similar to the notion of abstraction in software engineering these subroutines can be either geometric (deep-learning modules with pretrained representationsor algorithmic (closer to the libraries that contemporary software engineers manipulatelicensed to