Optimization Algorithms For Machine Learning