Функция активации 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 с обратным распространением (сердце нейронных сетей)!
Использованная литература: