Основные:

В этой статье мы рассмотрим:

  • Получение функции softmax для полиномиальных (многоклассовых) задач классификации, начиная с простой логистической регрессии
  • Использование функции активации softmax в выходном слое глубокой нейронной сети для представления категориального распределения по меткам классов и получение вероятностей каждого входного элемента, принадлежащего метке
  • Построение надежного ансамблевого классификатора нейронной сети с агрегацией выходных данных softmax с использованием функционального API Keras

Ссылки на другие мои статьи:

  1. Глубокий перенос ядра и гауссовские процессы
  2. Пользовательские функции потери тензорного потока
  3. Случайные леса
  4. Климатический анализ

Введение:

Во многих случаях при использовании моделей нейронных сетей, таких как обычные сети с прямой связью и сверточные сети для задач классификации по некоторому набору меток классов, возникает вопрос, можно ли интерпретировать выходные данные, например y = [ 0,02, 0, 0,005, 0,975], как вероятность того, что некоторые входные данные находятся в классе, равном соответствующим значениям компонентов y в выходной вектор. Переходим сразу к длинному ответу: нет, если у вас нет слоя softmax в качестве выходного слоя и вы не тренируете сеть с помощью функции кросс-энтропийных потерь. Этот момент важен, потому что он иногда опускается в онлайн-источниках и даже в некоторых учебниках, касающихся классификации с помощью нейронных сетей. Мы рассмотрим, как выводится функция softmax в контексте полиномиальной логистической регрессии и как ее применить к ансамблю глубоких моделей нейронных сетей для надежной классификации.

Получение функции Softmax:

Вкратце, категориальное распределение - это мультиклассовое обобщение распределения Бернулли. Распределение Бернулли - это дискретное распределение вероятностей, которое моделирует результат одного эксперимента или одно наблюдение случайной величины с двумя исходами (например, результат одного подбрасывания монеты). Категориальное распределение естественным образом расширяет распределение Бернулли на эксперименты с более чем двумя результатами.

Теперь простая классификация логистической регрессии (т. Е. Логистическая регрессия только для двух классов или результатов) предполагает, что выходные данные Yᵢ (i являются индексом выборки данных ), обусловленный входными параметрами x , распределен по Бернулли:

функция связи, связывающая логарифмические шансы результатов Бернулли с линейным предиктором, является логит-функцией:

Если мы возведем в степень обе части приведенного выше уравнения и немного изменим порядок, в правой части (RHS) мы получим знакомую логистическую функцию:

Один из способов получения обобщенной логистической функции или функции softmax для полиномиальной логистической регрессии состоит в том, чтобы начать с наличия одного логит-связанного линейного предиктора для каждого класса K плюс некоторый коэффициент нормализации, чтобы гарантировать, что общая сумма вероятностей по всем классам равно одному. Эта результирующая система уравнений K представляет собой систему логлинейных вероятностных моделей:

Термин ln (Z) в приведенной выше системе уравнений представляет собой (логарифмический) коэффициент нормализации, а Z известна как статистическая сумма. Поскольку мы имеем дело с полиномиальной регрессией, эта система уравнений дает вероятности, которые категорично распределены: Yᵢ | x ~ Категориальный (p ).

Возглавляя обе стороны и накладывая ограничение:

дает

Правая часть приведенного выше уравнения называется мерой Гиббса и связывает функцию softmax со статистической механикой. Затем решение для Z дает:

И, наконец, система уравнений принимает следующий вид:

Отношение на правой стороне каждого уравнения - это функция softmax. В общем, функция softmax определяется как:

для j = 1… K. Мы видим, что функция softmax нормализует K -мерный вектор z произвольных вещественных значений в K -мерный вектор σ (z), сумма компонентов которого равна 1 (другими словами, вектор вероятности), а также предоставляет средневзвешенное значение каждого zⱼ относительно совокупности zⱼ таким способом, который преувеличивает различия (возвращает значение, близкое к 0 или 1), если zⱼ сильно отличаются друг от друга с точки зрения масштаба, но возвращает среднее значение, если zⱼ имеют относительно одинаковый масштаб . Желательно, чтобы модель классификатора изучала параметры, которые задают первое условие, а не второе (т.е. решающий или нерешительный).

Наконец, так же, как функция logit является функцией связи для простой логистической регрессии, а логистическая функция является обратной функцией logit, мультиномиальная функция logit является функцией связи для полиномиальной логистической регрессии, а softmax можно рассматривать как обратную функцию полиномиальная логит-функция. Обычно в полиномиальной логистической регрессии максимальная апостериорная оценка (MAP) используется для нахождения параметров β для каждого класса k.

Кросс-энтропия и классификатор нейронных сетей ансамбля

Теперь, когда мы увидели, откуда взялась функция softmax, пришло время использовать их в наших моделях классификаторов нейронных сетей. Функция потерь, которая должна быть минимизирована на нейронных сетях, оборудованных выходным слоем softmax, - это кросс-энтропийная потеря:

где y - истинная метка для некоторой итерации i, а ŷ - вывод нейронной сети на итерации i. Эта функция потерь фактически аналогична той, которая используется для простой и полиномиальной логистической регрессии. Общее определение функции кросс-энтропии:

Перекрестная энтропия между p и q определяется как сумма информационной энтропии распределения p, где p - некоторое лежащее в основе истинное распределение (в данном случае будет категориальное распределение истинных меток классов) и расхождение Кульбака – Лейблера распределения q, которое является нашей попыткой при приближении p и p самого . Оптимизация этой функции минимизирует информационную энтропию p (дает более определенные результаты в p), в то же время минимизируя расстояние между p и q.

Теоретическая трактовка использования softmax в нейронных сетях в качестве активации выходного слоя дана в статье Bridle. Суть статьи заключается в том, что использование выходного слоя softmax с выходом скрытого слоя нейронной сети в качестве каждого zⱼ,, обученного с потерей кросс-энтропии, дает апостериорное распределение (категориальное распределение) по меткам классов . В общем, глубокие нейронные сети могут значительно превосходить простую и полиномиальную логистическую регрессию за счет невозможности обеспечить статистическую значимость функций / параметров, что является очень важным аспектом вывода или выяснения того, какие функции влияют на результат классификация. Полная нейронная сеть оптимизируется с использованием надежного оптимизатора по выбору; RMSprop обычно является хорошим началом.

Итак, теперь мы создадим классификатор нейронной сети с глубокой прямой связью, используя Функциональный API Keras, и проведем некоторую классификацию вин. Мы будем использовать ансамблевую модель из нескольких нейронных сетей, чтобы дать нам надежную классификацию (на практике это то, что вы должны делать, отклонения в прогнозах отдельных нейронных сетей из-за случайной инициализации и обучения стохастическому градиенту должны быть усреднены для получения хороших результатов. ). Выходные данные модели ансамбля должны давать вектор вероятностей того, что некоторый тестовый пример будет принадлежать каждому классу, то есть категориальное распределение по меткам классов.

Одним из способов агрегирования результатов каждой отдельной модели нейронной сети является использование softmax на выходе ансамбля, чтобы дать окончательную вероятность. Чтобы автоматически определить оптимальный вес окончательного усреднения softmax, мы добавим еще один слой, «склеивающий» выходы каждой отдельной нейронной сети в ансамбле. Схема архитектуры представлена ​​ниже.

Каждая модель обучения будет отличаться от окончательного агрегированного вывода softmax в обратном направлении. Мы можем объединить каждую из подсетей вместе, используя слой конкатенации-слияния Keras . Слой конкатенации объединяет выходные тензоры из каждой подсети и позволяет оптимизатору оптимизировать объединенную модель. Чтобы упростить наше обучение, каждая модель обучения будет обучаться на одном и том же наборе данных. Можно использовать загрузочные подмножества, но это усложняет обучение, поскольку нам пришлось бы обучать каждую подсеть индивидуально на ее собственном входе и целевой паре, в то же время замораживая обновления обучения для остальных моделей обучения.

По результатам обучения видно, что марочные вина не подходят нашему ансамблевому классификатору. Кроме того, выбор функций не так уж и важен для нашей модели, поскольку она достаточно хорошо изучает набор данных, используя все функции. Потери на обучение и проверку становятся небольшими, порядка 10 ^ -5 и 10 ^ -3 соответственно после 200 эпох, и это указывает на то, что наша модель нейронной сети ансамбля хорошо справляется с подгонкой данных и прогнозированием на тестовом наборе. Вероятности выхода составляют почти 100% для правильного класса и 0% для остальных.

Вывод:

В этой статье мы вывели активацию softmax для полиномиальной логистической регрессии и увидели, как применить ее к классификаторам нейронных сетей. Важно помнить, что нужно быть осторожным при интерпретации выходных данных нейронной сети как вероятностей. Затем мы построили классификатор нейронной сети ансамбля, используя функциональный API Keras. В любом случае, получайте удовольствие от запуска кода и, как всегда, не стесняйтесь спрашивать меня о чем угодно.