Self Supervised Learning Algorithms