Какую функцию потери я должен использовать для двоичного обнаружения в обнаружении лица / не лица в CNN?
11
Я хочу использовать глубокое обучение для обучения двоичному обнаружению лица / лица, какую потерю я должен использовать, я думаю, что это SigmoidCrossEntropyLoss или Hinge-loss .
Это правильно, но мне также интересно, должен ли я использовать softmax, но только с двумя классами?
В общем, когда у вас есть проблема, когда образец может принадлежать только одному классу из набора классов, вы устанавливаете последний слой как слой софт-макс. Это позволяет интерпретировать результаты как вероятности. При использовании слоя soft-max кросс-энтропия, как правило, работает очень хорошо, потому что логарифмический термин в кросс-энтропии отменяет плато, присутствующее в функции soft-max, и, следовательно, ускоряет процесс обучения (думайте о точках далеко от в сигмовидной функции).0
В вашем случае у вас есть задача двоичной классификации, поэтому ваш выходной слой может быть стандартным сигмоидом (где выходные данные представляют собой вероятность того, что тестовый образец является лицом). Потеря, которую вы бы использовали, была бы бинарной кросс-энтропией. С помощью этой настройки вы можете представить себе логистическую регрессию на последнем слое вашей глубокой нейронной сети.
Не могли бы вы пролить свет на логистическую регрессию на последнем уровне DNN? Я прочитал посты, но не вижу смысла sigmoid(как активация последнего слоя). Спасибо
bit_scientist
2
Вы можете определенно использовать softmax только с 2 классами «Face» и «Not Face» и интерпретировать вывод softmax как показатель достоверности, что является хорошей функцией, чтобы получить некоторую интуицию о вашей глубокой сети.
Попробуйте как 2-х классную softmax, так и бинарную потерю шарнира. Недавно была опубликована статья Deep Learning с использованием линейных опорных векторных машин, использующая SVM вместо классификатора softmax поверх глубоких сетей, и там есть некоторые многообещающие результаты.
Обычно логарифмическая потеря была бы предпочтительным выбором, используемым в комбинации только с одной единицей вывода. Логарифмическая потеря также называется бинарной кросс-энтропией, потому что это частный случай кросс-энтропии, работающей только на двух классах.
Теоретически, softmax с 2 классами может быть переписан как сигмоид, следовательно, не должно быть разницы в результатах между ними. Практически, как упоминалось в @dontloo, количество параметров в выходном слое будет двойным (не уверен, может ли это привести к каким-либо проблемам с перенастройкой), и, конечно, у вас будет 2 балла для двух классов (Face и Non_Face).
sigmoid
(как активация последнего слоя). СпасибоВы можете определенно использовать softmax только с 2 классами «Face» и «Not Face» и интерпретировать вывод softmax как показатель достоверности, что является хорошей функцией, чтобы получить некоторую интуицию о вашей глубокой сети.
Попробуйте как 2-х классную softmax, так и бинарную потерю шарнира. Недавно была опубликована статья Deep Learning с использованием линейных опорных векторных машин, использующая SVM вместо классификатора softmax поверх глубоких сетей, и там есть некоторые многообещающие результаты.
источник
Обычно логарифмическая потеря была бы предпочтительным выбором, используемым в комбинации только с одной единицей вывода. Логарифмическая потеря также называется бинарной кросс-энтропией, потому что это частный случай кросс-энтропии, работающей только на двух классах.
источник
Теоретически, softmax с 2 классами может быть переписан как сигмоид, следовательно, не должно быть разницы в результатах между ними. Практически, как упоминалось в @dontloo, количество параметров в выходном слое будет двойным (не уверен, может ли это привести к каким-либо проблемам с перенастройкой), и, конечно, у вас будет 2 балла для двух классов (Face и Non_Face).
источник