Reinforcement learning and self learning systems