Distributed Machine Learning and Gradient Optimization