Communication-Efficient Optimization Algorithms for Decentralized Machine Learning