Neural Task Programming: Learning to Generalize Across Hierarchical Tasks | Synapse