learning operation