Обучение модели TensorFlow для регрессии, когда метки являются вероятностями

Я собираюсь обучить нейронную сеть (например, сеть с прямой связью), в которой на выходе будет просто действительное значение, представляющее вероятность (и, следовательно, в интервале [0, 1]). Какую функцию активации следует использовать для последнего уровня (т. е. выходного узла)?

Если я не использую никаких функций активации и просто вывожу tf.matmul(last_hidden_layer, weights) + biases, это может привести к некоторым отрицательным результатам, что неприемлемо, поскольку выходы являются вероятностями, и поэтому прогноз также должен быть вероятностью. Если я использую tf.nn.softmax или tf.nn.softplus, модель всегда возвращает 0 в тестовом наборе. Любое предложение?


person boomz    schedule 01.12.2016    source источник


Ответы (1)


Самый простой способ — просто использовать сигмовидную активацию в качестве вывода, так как это сожмет любой выходной диапазон в диапазон [0, 1]. Тогда для обучения можно использовать либо среднеквадратичную ошибку или аналогичную потерю, либо бинарную перекрестную энтропию. В общем случае бинарная перекрестная энтропия может работать лучше.

person Dr. Snoopy    schedule 01.12.2016
comment
Спасибо, Матиас. Это имеет смысл, но когда я использую сигмоид в качестве функции активации для последнего узла, все прогнозы становятся равными нулю. Есть идеи? - person boomz; 01.12.2016
comment
@boomz Не из-за того, что информации так мало, я думаю, что-то не так в вашей сети или обучении, надеюсь, вы не инициализируете веса до нуля :) - person Dr. Snoopy; 02.12.2016