В предыдущем посте мы объяснили, как нейронные сети работают для прогнозирования непрерывной ценности (например, цены дома) на основе нескольких характеристик. Один из вопросов, который мы получили, заключается в том, как нейронные сети могут кодировать концепции, категории или классы. Например, как нейронные сети могут преобразовать количество пикселей в ответ "правда / ложь", независимо от того, есть ли на изображении кошка?

Во-первых, вот несколько наблюдений:

  • Проблема бинарной классификации - это проблема с ответом «да / нет». Вот некоторые примеры: На этой картинке изображен кот? Это спам в электронной почте? Это приложение вирус? Это вопрос?
  • Проблема с множественной классификацией - это проблема с несколькими категориями в качестве ответа, например: какой это тип транспортного средства (автомобиль / автобус / грузовик / мотоцикл)?
  • Любую задачу множественной классификации можно преобразовать в серию двоичных классификаций. (например: это машина, да или нет? Это автобус, да или нет? и т. д.)

Основная идея классификации в нейронных сетях заключается в преобразовании концепций, категорий и классов в вероятности принадлежности к этим концепциям, категориям или классам.

Это означает, что кошка на 100% кошка. Собака на 100% собака. Автомобиль на 100% состоит из автомобиля и т. Д. Каждая независимая концепция сама по себе является измерением в концептуальном пространстве. Так, например, мы можем сказать:

  • Кошка - это: 100% «кошка», 0% «собака», 0% «автобус», 0% «машина». [1; 0; 0; 0]
  • Автомобиль - это: 0% «кошка», 0% «собака», 0% «автобус», 100% «машина». [0; 0; 0; 1]
  • Да - это 100% «да», 0% «нет» - ›[1; 0]

Векторизованное представление категории тогда равно 1 в измерении, представляющем эту категорию, и 0 в остальном. Эта схема называется горячим кодированием.

Благодаря этой идее у нас появился новый способ кодирования категорий в классические многомерные векторы. Однако эти векторы обладают некоторыми особыми свойствами, поскольку они должны представлять вероятности или уровень достоверности принадлежности к этим категориям:

  • Длина вектора определяет количество категорий, которые может поддерживать нейронная сеть.
  • Каждое измерение должно быть ограничено от 0 до 1.
  • Сумма по вектору всегда должна быть 1.
  • Выбранная категория - это категория с наивысшим значением / уровнем достоверности (arg max).

Так, например, если мы получим в качестве вывода [0,6, 0,1, 0,2, 0,1] [кошка, собака, автобус, машина], мы можем сказать, что нейронная сеть классифицировала это изображение как кошку с уровнем достоверности 60%.

Слой Softmax

При разработке нейронных сетей для задач классификации, чтобы сохранить свойства векторов вероятности на последнем слое, существует специальная активация, называемая softmax.

Что делает softmax, так это то, что он берет любой вектор чисел, возводит все в степень, а затем делит каждый элемент на сумму экспоненты.

[2; 1; 0.1] - ›экспонента [7.3; 2,7; 1.1] - ›сумма 11,1 -› конечный вектор [0,66; 0,24; 0.1] (который является вектором вероятности).

Мы легко можем проверить следующие свойства:

  • Каждый компонент находится в диапазоне от 0 до 1, поскольку экспонента не может быть отрицательной, а деление суммы не может быть больше единицы.
  • Сумма вывода всегда равна 1.
  • Сохраняется порядок: чем выше начальный балл, тем выше вероятность.
  • Важна относительная оценка друг друга. Например, если у нас есть эти 2 вектора: [10; 10; 10] или [200; 200; 200], они оба будут преобразованы в одинаковые [1/3; 1/3; 1/3] вероятность.

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

Это происходит от теории информации и энтропии Шеннона. Поскольку фактические выходы y равны 0 или 1, потеря накапливается из-за неуверенности сети в известных категориях.

  • Если сеть очень уверена - ›вероятность правильного класса будет близка к 1 -› лог будет близок к 0 - ›без потерь -› без обратного распространения - ›без обучения!
  • Если сеть не очень уверена - ›вероятность класса будет близка к 0,5 (полное колебание) -› потеря журнала будет максимальна - ›Большая потеря -› Большая возможность учиться с использованием обратного распространения.

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

Если мы объединим эти 2 этапа в один слой, логарифмическая и экспоненциальная функции как бы уравняют друг друга, и мы сможем получить тот же конечный результат с гораздо меньшими вычислительными ресурсами. Вот почему во многих фреймворках и библиотеках нейронных сетей есть функция softmax-log-loss, которая намного более оптимальна, чем разделение двух функций.

Если вам понравилось читать, подпишитесь на нас в: Facebook, Twitter, LinkedIn