What does the Adam optimizer actually adapt to?