У нас есть следующие функции потерь, которые нам необходимо минимизировать (или min-max, если вы так называете sh).
- generator_loss = -log ( Генерируемые метки)
- criminator_loss = -log (real_labels) - журнал (1 - генерируемые метки)
, где real_output
= настоящие метки и fake_output
= генерируемые метки.
Теперь, имея это в виду, давайте посмотрим, что представляет собой фрагмент кода в документации TensorFlow:
real_loss = cross_entropy(tf.ones_like(real_output), real_output)
оценивается как - real_loss = -1 * log (real_output) - ( 1 - 1) * log (1 - real_output) = -log (real_output)
fake_loss = cross_entropy(tf.zeros_like(fake_output),fake_output)
оценивается как - fake_loss = -0 * log (fake_output) - (1 - 0) * log (1 - fake_output) = -log (1 - fake_output)
total_loss = real_loss + fake_loss
оценивается как - total_loss = -log (real_output) - log (1 - fake_output)
Очевидно, мы получаем функцию потерь для дискриминатора в мини-игре, которую мы хотим минимизировать.