Improving And Understanding Self-Supervised Learning Algorithms