Self-directed Machine Learning