Различие в наличии функции активации сигмоида вместо линейной активации и использовании сигмоида в потере - PullRequest
2 голосов
/ 18 июня 2019

Я довольно новичок в функциях потерь, и у меня есть проблема двоичной классификации 800 (имеется в виду 800 нейронов на выходе, которые не затронуты друг другом - вероятность каждого равна 0 или 1). Сейчас смотрю на документацию от: https://www.tensorflow.org/api_docs/python/tf/nn/sigmoid_cross_entropy_with_logits

Кажется, что он использует "логиты", которые являются выходами сети с линейной функцией активации, а сигмоид (необходимый для двоичной классификации) применяется в функции потерь.

Я смотрю на функцию потерь для активации soft-max, и применяется аналогичный подход. Мне интересно, почему функция активации не добавляется к сетевым выходам, а функция потерь получает линейные выходы (логиты) и в функции потерь применяется активация.

Ответы [ 3 ]

1 голос
/ 18 июня 2019

Нет большой причины.Сигмоид используется в потере

  • , чтобы сэкономить вам один шаг в другом месте
  • , чтобы убедиться, что каждый вход в потерю нормализован, таким образом, между (0,1).

если вам не нужно это удобство (на самом деле это боль для вас), просто используйте другую заранее определенную потерю (tf.losses.log_loss) или сделайте ее для себя.:)

0 голосов
/ 18 июня 2019

Очень простое объяснение - это использование в выходных данных: сигмоид используется в основном для двоичной классификации, обрабатывая значения от 0 до 1 как вероятность первичного класса, а линейный - для задач регрессии.

0 голосов
/ 18 июня 2019

Наивное применение сигмоида / софтмакса и кросс-энтропии численно нестабильно. Это связано с exp в сигмовидной кишке и log в softmax. Вы можете столкнуться с проблемами с избыточным / недостаточным количеством памяти, которые могут привести к тому, что будут приняты log(0) (что приведет к -inf). Чтобы избежать этого, функции кросс-энтропии используют «более умную» формулировку, основанную непосредственно на логитах, используя тот факт, что log(exp(x)) == x. Вы должны всегда использовать эти функции, чтобы избежать численных проблем. Если вам нужны фактические вероятности в другом месте, вы все равно можете просто применить сигмоид / softmax в этих точках.

...