Source: https://web.stanford.edu/~jduchi/projects/DuchiHaSi10_colt.pdf