Что такое функция Softmax?
В этой статье мы рассмотрим функцию Softmax и ее роль в нейронных сетях. Обычно он используется на выходном слое нейронной сети многоклассовой классификации для прогнозирования метки класса для данного входного сигнала.
Краткое содержание статьи следующее. Начнем с обоснования необходимости функции softmax в нейронных сетях. Затем мы рассмотрим некоторые альтернативы, такие как линейные и сигмовидные функции и векторную нормализацию, и почему они не работают по назначению. Затем мы детализируем функцию Softmax и обрисуем некоторые ее свойства. Наконец, мы завершаем, связывая это с первоначальной целью многоклассовой классификации.
Мотивация: зачем нужна функция Softmax
проблема многоклассовой классификации влечет за собой присвоение метки класса данному входу среди более чем двух возможных классов (это называется двоичной классификацией). Модели машинного обучения достигают этого путем оценки вероятности того, что каждый из классов является правильной меткой для входных данных. Затем в качестве прогноза выбирается метка с наибольшей вероятностью. Таким образом, нейронная сеть глубокого обучения также должна выводить вероятности для каждой метки класса.
Потребность в выделенном выходном слое в нейронных сетях возникает потому, что обычно процесс обучения заставляет предпоследний слой выдавать действительные необработанные выходные данные произвольного масштаба. Они не являются вероятностными и поэтому не очень подходят для прогнозирования.
Как и любой слой, выходной слой также состоит из узлов. Стандартный подход — иметь по одному узлу для каждого класса. Таким образом, если имеются к потенциальные классы, то выходной слой классификационной нейронной сети также будет иметь к узлы.
Функция активации по определению определяет выходные данные узла нейронной сети. Поэтому выходной слой нейронной сети многоклассовой классификации должен использовать функцию активации, которая удовлетворяет следующим свойствам.
- Каждый узел должен выводить вероятность от 0 до 1, которую затем можно интерпретировать как вероятность принадлежности входных данных соответствующему классу.
- Сумма выходных данных всех узлов должна быть равна 1. Это гарантирует, что мы учитываем все классы, которым могут принадлежать входные данные.
Рис. 1: Нейронная сеть многоклассовой классификации с k = 3. |
Рис. 1 иллюстрирует эти требования для нейронной сети 3-го класса. Входной слой, показанный желтым цветом, зависит от конкретного ввода. Есть несколько скрытых слоев зеленого цвета, которые преобразуют входные данные в выходной слой, вектор из трех значений вероятности. Метка, соответствующая наивысшему значению, является прогнозируемым классом. Необработанный результат предпоследнего слоя нейронной сети не является допустимым вектором вероятности. В случае сверточных нейронных сетей, которые обычно используются для классификации изображений, скрытые слои выполняют свертки, а специальный выходной слой оценивает вероятности. Другие архитектуры нейронных сетей также используют аналогичный выходной уровень.
Альтернативы функции Softmax и почему они не работают
Учитывая вышеуказанные требования к активации, мы рассмотрим некоторые альтернативные линейные и нелинейные функции активации в нейронных сетях и узнаем, почему они не работают для выходного слоя нейронных сетей с многоклассовой классификацией.
- Функция линейной активации — это функция идентичности: выходной сигнал такой же, как и входной. Выходной слой может получать произвольные входные данные, включая отрицательные значения, от скрытых слоев. Взвешенная сумма таких входных данных никогда не будет удовлетворять вышеуказанным требованиям. Следовательно, функция линейной активации не является хорошим выбором для выходного слоя.
- Функция активации сигмовидной кишки, использует S-образную логистическую функцию для масштабирования выходных данных до значений от 0 до 1. Это удовлетворяет первому требованию, но имеет следующие проблемы. Значения каждого из k узлов рассчитываются независимо. Поэтому мы не можем гарантировать выполнение второго требования. Более того, значения, близкие друг к другу, сжимаются из-за нелинейного характера логистической функции. Сигмовидная функция активации идеально подходит для двоичной классификации, где есть только один выход (вероятность одного класса), а порог принятия решения можно настроить с помощью кривой RoC. Этот подход использует логистическая регрессия для бинарных классификаторов. Следует также отметить, что гиперболический тангенс, функция tanh, также является логистической функцией и имеет те же проблемы при использовании на выходном уровне сети.
- Стандартная нормализация включает деление входных данных узла на сумму всех входных данных, чтобы получить выходные данные узла. Например, на рис. 1 средневзвешенное значение входных данных трех розовых выходных узлов равно s1, s2 и s3 соответственно. Соответствующие выходные данные трех узлов со стандартной нормализацией будут следующими.
Легко проверить, что нормализация обеспечивает выполнение обоих вышеуказанных требований. Но с этой функцией есть две проблемы. Во-первых, стандартная нормализация не инвариантна по отношению к постоянным смещениям. Другими словами, добавление константы с к каждому из входов с1, с2 и s3 существенно изменятся результаты. Учитывать с1 = 0, с2 = 2 и с3 = 4. Это приводит к р1 = 0, р2 = 1/3 и р3 = 2/3. Рассмотрим случай, когда с1, с2 и s3 масштабируются на 100: с1 = 0, с2 = 102, и с3 = 104. Это могло произойти по разным причинам, например, из-за масштабированной версии входных данных или параметров модели. Полученные вероятности равны р1 = 0, р2 = 0,4951и р3 = 0,5048. Относительная разница между вероятностями уменьшается пропорционально постоянному смещению. Во-вторых, если входные данные узла равны 0, как это имеет место для первого узла, выходная вероятность также равна 0. В некоторых приложениях может потребоваться сопоставить входные данные 0 с небольшой, но отличной от 0 вероятностью. Обратите внимание, что отрицательные значения проблематичны при стандартной нормализации.
Активация Софтмакс
Активация softmax для узла я определяется следующим образом.
Каждый из к узлы слоя softmax мультиклассификационной нейронной сети будут активированы с помощью этой функции: с_и обозначает средневзвешенное значение входных данных для i-го узла. Все входные данные проходят через экспоненциальную функцию, а затем нормализуются. Функция преобразует вектор входных данных в выходной слой к узлы в вектор к вероятности. Обратите внимание, что вектор входных данных может содержать и отрицательные значения.
В приведенном выше примере, где с1 = 0, с2 = 2 и с3 = 4, соответствующие вероятности вычисляются следующим образом.
Выходные значения гарантированно удовлетворяют вышеуказанным требованиям: значения будут вероятностями от 0 до 1. Их сумма также будет равна 1 по конструкции. Будучи нелинейной функцией, результирующее распределение вероятностей имеет тенденцию смещаться в сторону больших значений: с2 и s3 отличаются в 2 раза, но соответствующие п2 и п3 существенно различаются.
Функцию Softmax можно интерпретировать как многоклассовую логистическую регрессию. Выходной вектор к Вероятности представляют собой полиномиальное распределение вероятностей, где каждый класс представляет измерение распределения. Далее мы рассмотрим некоторые свойства функции softmax.
Некоторые свойства функции активации Softmax
- Функция softmax инвариантна к постоянным смещениям.. Как указано выше, основная проблема стандартной нормализации заключается в том, что функция softmax не инвариантна к постоянным смещениям. Функция Softmax, с другой стороны, выдает тот же результат, когда средневзвешенные входные данные узлов изменяются на постоянное значение.
- Активация softmax и функции сигмовидной кишки тесно связаны. В частности, мы получаем сигмовидную функцию, когда у нас есть два входа для активации Softmax, и один из них установлен на 0. В приведенном ниже выводе мы отправляем вектор (x, 0) в функцию softmax. Первый результат — сигмовидная функция.
- Связь с argmax: функция argmax возвращает индекс максимального элемента из списка чисел. Его можно использовать для прогнозирования метки класса на основе вектора вероятностей, выдаваемого слоем softmax. Его также можно использовать в качестве функции активации внутри нейронной сети. К сожалению, функция argmax не является дифференцируемой и поэтому не может быть использована в процессе обучения. Softmax является дифференцируемой функцией и, следовательно, обеспечивает процесс обучения. Функцию softmax можно интерпретировать как мягкую аппроксимацию функции argmax, которая принимает сложное решение, подбирая индекс. С другой стороны, функция softmax присваивает вероятность, пропорциональную рангу входных данных. Вероятность можно использовать для принятия мягкого решения вместо жесткого выбора индекса.
- Производные функции softmax. Давайте посмотрим на производную функции softmax. Сначала мы рассмотрим частную производную функцию p_i по отношению к s_i. Его можно вывести из элементарного исчисления следующим образом.
Эта производная максимальна, когда p_i равно 0,5 и существует максимальная неопределенность. Если нейронная сеть очень достоверна, когда p_i близко к 0 или 1, производная стремится к 0. Интерпретация следующая. Если вероятность, связанная с классом i, уже очень высока, то небольшое изменение входных данных не приведет к существенному изменению вероятности, тем самым делая выходное значение устойчивым к небольшим изменениям входных данных.
Далее мы рассмотрим функцию частной производной по отношению к s_j, другим перекрестным элементам входного вектора.
Эта производная максимальна, когда p_i и p_j равны 0,5. Это происходит, когда все остальные метки задачи многоклассовой классификации имеют нулевую вероятность и модель пытается выбрать между двумя классами. Более того, отрицательный знак подразумевает, что уверенность в метке класса i уменьшается по мере увеличения взвешенного входа в s_j.
Роль в многоклассовой классификации
Далее мы замыкаем цикл на конечной цели: многоклассовой классификации с использованием нейронных сетей. Веса нейронной сети настраиваются путем минимизации функции потерь. Функция активации softmax позволяет этот процесс следующим образом.
Давайте рассмотрим случай трех классов, как показано на рис. 1. Вместо того, чтобы однозначно обозначать входные значения как с1, с2 и с3, мы используем горячее кодирование для присвоения меток: класс c1 становится (1,0,0), c2 становится (0, 1, 0), а c3 становится (0, 0, 1). Учитывая, что наша нейронная сеть имеет выходной слой из 3 узлов, эти метки преобразуются в оптимальные выходные векторы для входных массивов. Входной сигнал, принадлежащий классу c3, должен создавать ожидаемый выходной вектор (0, 0, 1).
Давайте возьмем пример выше, где активированный softmax выходной слой выдал выходные данные (0,0159, 0,1173, 0,8668), как показано выше. Ошибка между ожидаемым и прогнозируемым выходными векторами определяется количественно с помощью функция перекрестных энтропийных потерь и он используется для обновления весов сети.
Заключение
В этой статье мы рассмотрели необходимость соответствующей функции активации для выходного слоя модели глубокого обучения с многоклассовой классификацией. Затем мы обрисовали, почему альтернативные математические функции, такие как сигмовидные функции и функция активации Таня, не работают хорошо. Затем была подробно описана функция активации Softmax. Экспоненциальная операция, за которой следует нормализация, гарантирует, что выходной слой создает действительный вектор вероятности, который можно использовать для прогнозирования метки класса. Учитывая свои свойства, активация softmax является одним из самых популярных вариантов выходного слоя классификаторов на основе нейронных сетей.
Рекомендации
Лопес, Осваль Антонио Монтесинос и др. Многомерные статистические методы машинного обучения для геномного прогнозирования. Спрингер Природа, 2022.
Сайто, Коки. Глубокое обучение с основ: Python и глубокое обучение: теория и реализация. Пакт Паблишинг, ООО, 2021.
Севак, Мохит и др. Практические сверточные нейронные сети: реализация передовых моделей глубокого обучения с использованием Python. ООО «Пакт Паблишинг», 2018.