A Top Down Approach to Machine Learning