Semi-Stochastic Gradient Descent Methods