Optimization metric in Generative Adversarial Networks The paper on GANs contains the following excerpt:

Early in learning, when $G$ is poor, $D$ can reject samples
  with high confidence because they are clearly different from the
  training data. In this case, $\log(1 − D(G(z)))$ saturates. Rather than
  training $G$ to minimize $\log(1 − D(G(z)))$ we can train $G$ to maximize $\log D(G(z))$. This objective function results in the same fixed point of
  the dynamics of $G$ and $D$ but provides much stronger gradients early in
  learning.

I was hoping for some clarification on why using the new metric fixes the saturation problem. Doesn't the exact same problem still exist? $G$ is poor so $D$ can still reject samples with a high confidence because they are clearly different from the training data.
 A: Let us have a look at the log function's graph. As you can see below, the function log(x) becomes 0 when x=1 and is negative between 0 and 1. Notice that the function increases steeply(high value of slope) as you move from 0 to 1 and the rate of growth(slope) decreases thereafter.

$D(x)$ represents the probability that x came from the data rather than being generated by G. At the start of training, the generator is producing random data which is clearly different from the original data distribution. The discriminator can identify this easily and hence $D(G(z))$ is very close to 0 (discriminator having high confidence that this is fake). If we use $\log(1 − D(G(z)))$ in the objective function, then this value is close to 0 i.e. log(1) and hence there won't be a strong gradient propagating to the generator. On the other hand, $\log D(G(z))$ will have very high absolute values(see the graph) and hence provide a strong gradient update. As training progresses and $\log D(G(z))$ gets closer to 0.5 the size of gradient update reduces just as we would want it to be. The saturation problem is fixed because the log(x) values for numbers closer to 0 change much more sharply than for numbers closer to 1. 
