Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

3.4 Softmax-регрессия

В разделе 3.1 мы ввели линейную регрессию. Затем в разделе 3.2 мы реализовали её с нуля, а в разделе 3.3 — кратко, с помощью высокоуровневого API фреймворка.

Регрессия подходит для задач, в которых нужно предсказать сколько: например, цену, по которой продастся дом, число побед бейсбольной команды или количество дней пребывания пациента в больнице.

Но нас также интересуют задачи классификации. В них спрашивают не «сколько», а «какой»:

  • попадёт ли письмо в папку «Спам»?
  • подпишется ли пользователь на сервис или нет?
  • на изображении осёл, собака, кошка или курица?
  • какой фильм пользователь, скорее всего, посмотрит дальше?

Специалисты по машинному обучению употребляют слово «классификация» для двух близких, но различных задач:

  1. нас интересует только «жёсткая» категория — к какому классу относится пример;
  2. нас интересует «мягкая» категория — вероятность принадлежности примера каждому классу.

Граница между ними часто размыта. Одна из причин в том, что даже если нас интересует только жёсткая категория, мы всё равно нередко используем модели, которые выдают мягкие категории.

3.4.1 Задача классификации

Начнём с задачи классификации изображений. Пусть каждый вход — полутоновое изображение размером . Значение каждого пикселя мы запишем одним числом, поэтому каждому изображению соответствуют четыре признака . Кроме того, будем считать, что каждое изображение относится к одному из классов: «кошка», «курица» или «собака».

Теперь нужно выбрать способ записи меток. Есть два очевидных варианта. Самая прямая идея — взять , где целые числа соответствуют классам . Это эффективный способ хранения такой информации на компьютере. Если между классами есть естественный порядок — например, при предсказании возрастной группы — то имеет смысл свести задачу к регрессии и сохранить этот порядок.

Но в общей задаче классификации порядок классов не связан с их смыслом. К счастью, статистики давно придумали простой способ записи категориальных данных: прямое кодирование (one-hot encoding). Это вектор, размерность которого равна числу классов. Компонента, соответствующая классу, равна 1, а все остальные компоненты равны 0. В нашем примере метка — трёхмерный вектор: соответствует «кошке», — «курице», — «собаке»:

3.4.2 Архитектура сети

Чтобы оценить условные вероятности для всех возможных классов, нужна модель с несколькими выходами — по одному на каждый класс. Чтобы решить задачу классификации линейной моделью, нужно столько аффинных функций, сколько выходов: каждый выход имеет собственную аффинную функцию. В нашем примере четыре признака и три возможных класса, поэтому понадобятся 12 скалярных весов (с индексами у ) и 3 скалярных смещения (с индексами у ). Для каждого входа вычислим три ненормированных предсказания (логиты) , и :

Этот процесс вычисления можно изобразить в виде нейронной сети (рис. 3.4.1). Как и линейная регрессия, softmax-регрессия — однослойная нейронная сеть. Поскольку каждый из выходов , и зависит от всех входов , , и , выходной слой softmax-регрессии тоже является полносвязным.

Рис. 3.4.1. Softmax-регрессия — однослойная нейронная сеть

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

3.4.3 Затраты параметров полносвязных слоёв

Как мы увидим в следующих главах, полносвязные слои встречаются в глубоком обучении повсеместно. Однако, как следует из названия, полносвязный слой «полностью» связан со входами и может содержать очень много обучаемых параметров. Точнее, для полносвязного слоя с входами и выходами число параметров составляет . На практике это число может оказаться непомерно большим. К счастью, стоимость преобразования входов в выходов можно снизить до , где гиперпараметр можно задавать гибко, чтобы найти баланс между экономией параметров и качеством модели (Zhang et al., 2021).

3.4.4 Операция softmax

Теперь оптимизируем параметры так, чтобы максимизировать вероятность наблюдаемых данных. Чтобы получить предсказание, зададим правило выбора, например: взять метку с наибольшей вероятностью.

Мы хотим, чтобы выход модели можно было понимать как вероятность принадлежности классу , а в качестве предсказания выбирать класс с наибольшим значением . Например, если , и равны 0.1, 0.8 и 0.1 соответственно, то мы предсказываем класс 2, в нашем примере — «курицу».

Можно ли напрямую считать ненормированные предсказания искомыми вероятностями? Нет, по двум причинам. Во-первых, сумма выходов линейного слоя ничем не ограничена, и она не обязана равняться 1. Во-вторых, в зависимости от входа выходы могут быть отрицательными. Это нарушает базовые аксиомы вероятности, о которых шла речь в разделе 2.6.

Чтобы интерпретировать выход как вероятности, нужно гарантировать, что на любых данных выход неотрицателен и в сумме равен 1. Кроме того, нужна целевая функция, которая побуждает модель точно оценивать вероятности. Например, среди всех примеров, для которых классификатор выдаёт вероятность 0.5, половина должна действительно принадлежать предсказанному классу. Это свойство называется калибровкой (calibration).

Функция softmax делает именно это. Её предложил в 1959 году социолог Дункан Люс на основе теории моделей выбора (choice model). Softmax преобразует ненормированные предсказания в неотрицательные числа с суммой 1, сохраняя при этом дифференцируемость. Для этого сначала каждое ненормированное предсказание возводится в экспоненту (это гарантирует неотрицательность), а затем каждый результат делится на сумму всех результатов (это гарантирует, что сумма равна 1):

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

Хотя softmax — нелинейная функция, выход softmax-регрессии по-прежнему определяется аффинным преобразованием входных признаков. Поэтому softmax-регрессия — это линейная модель (linear model).

3.4.5 Векторизация для минибатчей

Чтобы повысить эффективность вычислений и полностью загрузить GPU, векторные вычисления обычно выполняют на минибатчах. Пусть прочитан батч примеров с размерностью признаков (числом входов) и размером батча , а число выходных классов равно . Тогда признаки минибатча , веса , смещение . Векторная запись softmax-регрессии выглядит так:

По сравнению с обработкой одного примера за раз векторизация минибатча ускоряет умножение матрицы на матрицу . Поскольку каждая строка соответствует одному примеру, операцию softmax можно выполнять построчно (rowwise): для каждой строки сначала берём экспоненты всех элементов, а затем нормируем их суммой. В формуле (3.4.2) сложение выполняется по правилу broadcasting. Минибатч ненормированных предсказаний и выходных вероятностей — это матрицы размера .

3.4.6 Функция потерь

Далее нам нужна функция потерь, которая измеряет качество предсказаний. Мы будем использовать оценку максимального правдоподобия — тот же подход, что и в линейной регрессии (раздел 3.1.3).

3.4.6.1 Логарифмическое правдоподобие

Функция softmax даёт вектор , который можно интерпретировать как «условную вероятность каждого класса при заданном входе ». Например, . Пусть весь набор данных содержит примеров, где пример с индексом состоит из вектора признаков и вектора-метки прямого кодирования . Сравним предсказания с истинными значениями:

По принципу максимального правдоподобия мы максимизируем , что эквивалентно минимизации отрицательного логарифма правдоподобия:

где для любой метки и предсказания модели функция потерь имеет вид:

Функция потерь (3.4.3) обычно называется кросс-энтропийной потерей (cross-entropy loss), как будет показано ниже. Поскольку — прямое кодирование вектора длины , все слагаемые, кроме одного, обращаются в нуль. Все — предсказанные вероятности, поэтому их логарифмы никогда не превышают 0. Значит, если модель правильно предсказывает истинную метку, то есть , потери уже нельзя уменьшить. Однако на практике этого часто не добиться. Например, в наборе данных могут встречаться шумные метки (некоторые примеры размечены ошибочно), или входные признаки могут не содержать достаточно информации для идеальной классификации каждого примера.

3.4.6.2 Softmax и его производные

Поскольку softmax и связанная с ним функция потерь встречаются очень часто, полезно понимать, как они вычисляются. Подставим (3.4.1) в потерю (3.4.3) и воспользуемся определением softmax:

Найдём производную по произвольному ненормированному предсказанию :

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

3.4.6.3 Кросс-энтропийная потеря

Теперь рассмотрим ситуацию, когда наблюдается не один исход, а целое распределение исходов. Метку можно записать в той же форме, что и раньше, только теперь это вектор вероятностей, например , а не бинарный вектор . Потерю определяем формулой (3.4.3): она представляет собой ожидаемое значение потерь по всем распределениям меток. Эта потеря называется кросс-энтропийной потерей (cross-entropy loss) и относится к самым распространённым функциям потерь в задачах классификации. Чтобы её понять, введём основы теории информации. Подробности можно найти в разделе приложения о теории информации.

3.4.7 Основы теории информации

Теория информации (information theory) изучает кодирование, декодирование, передачу информации и её наиболее краткое представление.

3.4.7.1 Энтропия

Центральная идея теории информации — количественно оценить информационное содержание данных. В теории информации эта величина называется энтропией (entropy) распределения и вычисляется по формуле:

Одна из основных теорем теории информации гласит: чтобы закодировать данные, случайно извлечённые из распределения , нужно как минимум «нат» (nat). «Нат» — аналог бита, только логарифм берётся по основанию , а не 2. Таким образом, один нат равен бита.

3.4.7.2 Информационное содержание

Какая связь между сжатием и предсказанием? Представим поток данных, который мы хотим сжать. Если каждый следующий элемент легко предсказать, такой поток легко сжать. Крайний пример: если все элементы потока одинаковы, поток очень скучен — мы всегда знаем следующий элемент, поэтому передавать ничего не нужно. Событие «следующий элемент — это XX» не несёт никакой информации.

Но если мы не можем полностью предсказать каждое событие, то иногда будем «удивляться». Клод Шеннон предложил измерять степень этого удивления информационным содержанием . Это величина для наблюдения события , которому приписана (субъективная) вероятность . Чем меньше вероятность события, тем сильнее удивление и тем больше его информационное содержание. Энтропия, определённая формулой (3.4.4), — это математическое ожидание информационного содержания при условии, что назначенные вероятности точно соответствуют процессу порождения данных.

3.4.7.3 Повторный взгляд на кросс-энтропию

Если представить энтропию как «степень удивления того, кто знает истинные вероятности», то что такое кросс-энтропия? Кросс-энтропия от к обозначается . Её можно понимать как «ожидаемое удивление наблюдателя с субъективными вероятностями , когда он видит данные, порождённые вероятностями ». Кросс-энтропия минимальна при . В этом случае кросс-энтропия от к равна .

Итак, кросс-энтропийную цель классификации можно рассматривать двумя способами: (i) максимизация правдоподобия наблюдаемых данных; (ii) минимизация удивления, необходимого для передачи метки.

3.4.8 Предсказания модели и их оценка

После обучения softmax-регрессии для любого примера можно предсказать вероятность каждого выходного класса. Обычно в качестве итогового класса берут класс с наибольшей предсказанной вероятностью. Если предсказание совпадает с фактическим классом (меткой), то оно верно. В дальнейших экспериментах качество модели мы будем оценивать по точности (accuracy) — отношению числа правильных предсказаний к общему числу предсказаний.

Резюме

  • Операция softmax преобразует вектор в распределение вероятностей.
  • Softmax-регрессия подходит для задач классификации: она использует распределение вероятностей по классам, которое даёт операция softmax.
  • Кросс-энтропия — хорошая мера различия между двумя распределениями вероятностей: она показывает, сколько битов нужно для кодирования данных при использовании модели.

Упражнения

  1. Углубимся в связь между экспоненциальным семейством и softmax.
    1. Вычислите вторую производную функции кросс-энтропийной потери softmax .
    2. Вычислите дисперсию распределения, заданного , и сравните её со второй производной из предыдущего пункта.
  2. Предположим, что три класса имеют одинаковую вероятность, то есть вектор вероятностей равен .
    1. Какие проблемы возникнут, если попытаться построить для них двоичный код?
    2. Постройте более удачный код. Подсказка: что будет, если кодировать два независимых наблюдения? Что будет, если закодировать наблюдений совместно?
  3. Название softmax на самом деле не совсем точно описывает введённое отображение (хотя многие в глубоком обучении используют именно это название). Настоящий softmax определяется как .
    1. Докажите, что .
    2. Докажите, что выполняется при .
    3. Докажите, что для выполняется .
    4. Как выглядел бы soft-min?
    5. Обобщите это на случай более чем двух чисел.

Обсуждение