Экс-преподаватель msu.ai, специалист образовательного центра Института ИИ при... · 18 нояб 2021
Softmax - функция активации, как правило используемая при решении задачи классификации. То есть, когда необходимо отнести описанный объект к одному из нескольких классов. К примеру, когда мы хотим определить породу животного на изображении: это может быть чихуахуа, английский мастиф, французский бульдог, той-терьер или ещё кто-то. Пусть в нашем случае пород N, тогда нейронная сеть (до использования функции активации) вернёт нам N вещественных чисел.
Каждое из этих чисел как бы показывает, насколько сильно, по мнению нейронной сети, собака на изображении напоминает чихуахуа, английского мастифа, французского бульдога, той-терьера или же представителя другой породы (в общем случае - насколько сильно объект похож на представителя того или иного класса). Чем выше число, тем больше сходств объекта с классом видит нейронная сеть. Data scientist, получая эти значения, имеет два варианта дальнейших действий: использовать "hardmax" либо "softmax".
Hardmax подразумевает, что мы выбираем класс, которому соответствует наибольшее полученное число. Не умаляя общности допустим, что мы классифицируем изображения собак только по четырём классам: чихуахуа, английский мастиф, французский бульдог или той-терьер.
На определённом изображении (допустим, приложеном ниже) нейронная сеть возвращает нам следующие числа: [10, -5, -10, 9]. Hardmax сообщит, что изображение относится к классу "чихуахуа" с вероятностью 100%, а к каждому из остальных классов - с вероятностью в 0%. То есть, Hardmax([10, -5, -10, 9]) = [1, 0, 0, 0].
Однако, если мы присмотримся к полученным числам, то заметим, что число, соответствующее классу "чихуахуа", лишь немного больше числа, соответствующего "той-терьеру". То есть, наша нейросеть почти в равной мере относит собаку на изображении к каждому из классов (что говорит о, в некоторой мере, "неуверенности" нашей нейросети в своём ответе), однако по hardmax мы считаем, что изображение относится к классу "чихуахуа" с вероятностью 100%, а к классу "той-терьер" с вероятностью 0%! Нам хотелось бы делать более "умные" предсказания, учитывать в какой-то мере вероятности отношения картинки к каждому из классов, не так ли? Тут-то нам на помощь и приходит softmax!
Softmax - функция активации, которая обладает рядом замечательных свойств, среди которых в данном случае наиболее важным то, что сумма всех возвращаемых значений равняется одному. То есть, она принимает в себя N чисел, которые вернула нейросеть, после чего возвращает N чисел, располагающихся в промежутке (0; 1) и дающих в сумме единицу. Довольно похоже на вероятности, не так ли? Давайте посмотрим на результат применения softmax к нашим значениям: Softmax([10, -5, -10, 9]) = [0.731, 2*10^-7, 1.5*10^-9, 0.269].
Тут уже результаты сильнее соответствуют вероятностям.
Также softmax позволяет лучше обучать нейронные сети за счёт лучшего пропускания градиентов, нежели в hardmax.
Итого, softmax является прекрасной функцией активации, которая позволяет узнавать вероятности отношения объекта к тому или иному классу и при этом хорошо работает в нейросетях. Однако, данную функцию активации не стоит использовать в задачах кроме классификации.