Learning To Generalize In Dynamic Environments