Функция активации Softmax

За гранью.

Функция активации softmax используется в задачах классификации для вывода вероятностей для каждого класса. Допустим, мы хотим предсказать, является ли изображение кошкой, собакой или крысой. Это проблема классификации 3 классов.

Функция softmax в основном принимает набор значений и сжимает их до значений от 0 до 1, так что сумма отдельных выходов равна 1. (0,7 + 0,2 + 0,1 = 1 на изображении выше). Поскольку сумма выходных данных равна единице, мы можем назвать это распределением вероятностей.

Как описано на изображении выше, модель принимает входные данные X, которые здесь, в нашем примере, представляют собой кошку, собаку или крысу, и выдает 0,7, 0,2 и 0,1 в качестве баллов для соответствующих классов. Как теперь измерить, насколько хорошо наша модель предсказала эти значения?

Ответ кроется в концепции перекрестной энтропии (обозначенной как D (y ^, y) на изображении выше).

Перекрестная энтропия по существу измеряет расстояние между двумя распределениями вероятностей. Здесь наше первое распределение вероятностей - это прогнозируемая оценка [0,7,0,2,0,1]. Какое у нас второе распределение вероятностей?

Предположим, что правильный ответ - кошка. Наша переменная y - это переменная с горячим кодированием с 1 в месте индекса истинного класса.

Примечание: имейте в виду, что здесь мы берем только одно изображение.

Если бы изображение было собакой, наш y был бы [0,1,0]. Если бы это была крыса [0,0,1]. Но в данном случае, поскольку это собака, это [1,0,0].

Таким образом, этот вектор [1,0,0] оказывается нашим вторым распределением вероятностей.

p (x) - это истинное распределение вероятностей, равное [1,0,0], а q (x) - наши предсказанные вероятности , который в данном случае равен [0.7,0.2,0.1].

Мы можем записать это как - (1 * log (0.7) + 0 * log (0.2) + 0 * log (0.1)). Обратите внимание, как мы умножаем log (0,2) и log (0,1) на 0 ?. Следовательно, мы можем игнорировать эти значения. Это значение потерь нейронной сети. Но почему бревно?

Наша цель - максимально приблизиться к истинному распределению. Это означает, что если бы наше прогнозируемое распределение было [1,0,0], наши потери были бы - (1 * log (1)). Но что такое журнал (1)?

Вы правильно догадались. Это ноль.

Предположим на секунду, что наша сеть предсказала [0,2,0,7,0,1]. Наша перекрестная энтропия / потеря теперь становится -1 * log (0,2). Обратите внимание, как между 0 и 1 на графике выше значение log (x) сильно отрицательно? Таким образом, -log (0.2) будет очень положительным значением. По сути, это то, что мы хотим. Модель предсказала с очень низкой вероятностью (0,2), что на изображении изображена собака. Таким образом, мы наказываем его большими потерями, чтобы он учился. Думайте о функции потерь (здесь перекрестная энтропия) как о строгом учителе, который наказывает ученика (нейронную сеть), если он говорит неправильные вещи.

Я надеюсь, что я достаточно ясно изложил здесь свое объяснение. Ожидайте вскоре статьи о реализации softmax с обратным распространением (сердце нейронных сетей)!

Использованная литература: