Self-learning system