Мультиметочная функция потери классификации - PullRequest
0 голосов
/ 17 мая 2018

Я видел во многих местах, что для классификации нескольких меток с использованием нейронных сетей одной полезной функцией потерь является двоичная кросс-энтропия для каждого из выходных узлов.

В Tensorflow это выглядит так:

cost = tf.nn.sigmoid_cross_entropy_with_logits()

Это дает массив с таким количеством значений, сколько у нас есть выходных узлов.

Мой вопрос , если эта функция стоимости будет усреднена по числувыходные узлы?Что в Tensorflow будет выглядеть так:

cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits())

Или каждая потеря обрабатывается независимо?

Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Для N меток в классификации с несколькими метками, на самом деле не имеет значения, суммируете ли вы потери для каждого класса или вычисляете среднюю потерю, используя tf.reduce_mean: градиент будет указывать в том же направлении.

Однако, если вы поделите сумму на N (это, по сути, и есть усреднение), это повлияет на скорость обучения в конце дня. Если вы не уверены, сколько будет меток в задаче классификации по нескольким меткам, возможно, будет проще использовать tf.reduce_mean, поскольку вам не придется перенастраивать вес этого компонента потерь по сравнению с другими компонентами потерь. и вам не нужно будет регулировать скорость обучения в количестве N изменений меток.

...