Improved Gradient-Based Optimization Over Discrete Distributions