Вас беспокоит платный доступ? Нажмите здесь, чтобы обойти его.

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

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

Если вы новичок в машинном обучении, возможно, вы не пытались углубиться и понять математику, лежащую в основе «.fit ()», но по мере взросления и натыкания на все более сложные задач, становится важным понимать математику или, по крайней мере, интуицию, лежащую в основе математики, чтобы эффективно применять правильную технику в нужном месте.

Когда я только начинал, я тоже был виноват в том же. Я буду рассматривать «кросс-категориальную энтропию» как функцию потерь в нейронной сети и считаю само собой разумеющимся, что это некоторая магическая функция потерь, которая работает с мультиклассовыми метками. Я буду рассматривать «энтропию» как один из критериев расщепления в Дереве решений и просто экспериментирую с ней, не понимая, что это такое. Но по мере того, как я повзрослел, я решил уделять больше времени пониманию основ, и это очень помогло мне понять мою интуицию. Это также помогло понять, как популярные фреймворки глубокого обучения, PyTorch и Tensorflow, по-разному реализуют различные функции потерь и решают, когда что использовать.

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

Теория информации

В начале 20 века компьютерные ученые и математики всего мира столкнулись с проблемой. Как количественно оценить информацию? Давайте рассмотрим два предложения ниже:

  • Завтра будет дождь
  • Завтра будет сильный дождь

Мы, люди, интуитивно понимаем, что оба предложения передают разный объем информации. Второй гораздо информативнее первого. Но как это измерить? Как вы выразите это на языке математики?

Представляем Клода Э. Шеннона с его основополагающей статьей «Математическая теория коммуникации» [1]. Шеннон представил качественную и количественную модель коммуникации как статистический процесс. Среди множества других идей и концепций он представил информационную энтропию и концепцию «бита» - фундаментальной единицы измерения информации.

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

  • Информация считается последовательностью символов, которая должна передаваться через среду, называемую каналом.
  • Энтропия - это величина неопределенности в строке символов с учетом некоторой информации о распределении символов.
  • Бит - это единица информации или последовательность символов.
  • Передать 1 бит информации означает снизить неопределенность получателя на 2

Энтропия

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

Есть коробка со 100 шарами четырех разных цветов - синего, красного, зеленого и желтого. Допустим, в коробке по 25 шаров каждого цвета. передатчик выбирает шар из контейнера наугад и передает эту информацию в приемник. В нашем примере предположим, что передатчик находится в Индии, а приемник - в Австралии. А также предположим, что мы находимся в начале 20 века, когда телеграфия была одним из основных способов междугородной связи. Особенность сообщений Telegram заключается в том, что они взимаются пословно, поэтому вам нужно быть осторожным с тем, что вы отправляете, если у вас ограниченный бюджет (сейчас это может показаться неважным, но я уверяю вас, что будет). Добавим лишь одно ограничение в формулировку - нельзя передать через телеграмму собственно слово синий. У вас нет 26 символов английского языка, а вместо них всего два символа - 0 и 1.

Теперь давайте посмотрим, как мы будем кодировать четыре ответа. Я уверен, что все вы знакомы с двоичной системой счисления. Итак, если у нас есть четыре результата, мы можем получить уникальные коды, используя длину кода, равную двум. Мы используем это, чтобы присвоить код каждому из наших четырех результатов. Это кодирование с фиксированной длиной.

Еще один способ подумать об этом - уменьшить неопределенность. Мы знаем, что все четыре исхода одинаково вероятны (каждый имеет вероятность 1/4). А когда мы передаем информацию о цвете выбранного шара, мы уменьшаем неопределенность на 4. Мы знаем, что 1 бит может уменьшить неопределенность на 2, а для уменьшения неопределенности на 4 нам нужны два бита.

Математически, если у нас есть M символов в используемом нами коде, нам потребуется log₂M битов для кодирования информации.

Какое среднее количество битов мы будем использовать для отправки информации?

Средние и ожидаемые значения

Что такое средний? В мире вероятности среднее или среднее - это ожидаемое значение распределения вероятностей.

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

Если все исходы равновероятны, P (x) = 1 / N, где N - количество возможных результатов. И в этом случае ожидаемое значение становится простым средним.

Давайте немного изменим настройку нашего примера. Вместо того, чтобы иметь равное количество цветных шаров, теперь у нас есть 25 синих шаров, 50 красных шаров, 13 зеленых шаров и 12 желтых шаров. Этот пример намного лучше объясняет остальные концепции, и, поскольку теперь вы знаете, каково ожидаемое значение распределения вероятностей, мы можем следовать этому соглашению.

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

Но является ли текущая схема кодирования наиболее оптимальной? Вот где на сцену выходит кодирование переменной длины. Давайте посмотрим на три разные схемы кодирования переменных.

Теперь, когда мы знаем, как рассчитать ожидаемое значение длины битов, давайте рассчитаем его для трех схем. Тот, у которого наименьшая длина битов, должен быть самым экономичным, не так ли?

Схема кодирования 1:

Мы используем 1 бит для синего и красного и по 2 бита для зеленого и желтого.

Схема кодирования 2:

Мы используем 1 бит для синего, 2 бита для красного и по 3 бита для зеленого и желтого.

Схема кодирования 3:

Мы используем 2 бита для синего, 1 бит для красного и по 3 бита для зеленого и желтого.

Схема кодирования 1 - очевидный выбор, верно? Вот где кодирование переменной длины становится сложным. Если мы возьмем мяч из коробки, и он будет синим. Поэтому мы отправляем 0 в Австралию в качестве сообщения. И прежде, чем Австралия получила возможность прочитать сообщение, мы взяли еще один мяч, и он был зеленым. Итак, мы отправляем 10 в Австралию. Теперь, когда Австралия просматривает очередь сообщений, они увидят там 010. Если бы это был код фиксированной длины, мы бы знали, что каждые n символов есть разрыв. Но в отсутствие этого 010 можно интерпретировать как синий, зеленый или синий, красный, синий. Вот почему код должен быть однозначно декодируемым. Код называется однозначно декодируемым, если две разные строки символов никогда не приводят к одной и той же кодированной битовой строке. Это приводит к сценарию, в котором вам нужно отпустить несколько кодов после каждого добавляемого вами дополнительного символа. У Криса Олаха есть отличный блог [2], объясняющий эту концепцию.

Остается схема кодирования 2 и 3. Обе они однозначно декодируемы. Единственная разница между ними заключается в том, что в схеме 2 мы используем 1 бит для синего и 2 бита для красного. Схема 2 обратная. И мы знаем, что получение красного мяча из коробки гораздо более вероятно, чем синего мяча. Таким образом, имеет смысл использовать меньшую длину для красного шара, и поэтому ожидаемое значение длины битов для схемы 3 меньше, чем 2.

Теперь вам может быть интересно, почему нас так беспокоит ожидаемая длина битов. Эта ожидаемая длина битов наилучшей возможной схемы кодирования называется энтропией Шеннона или просто энтропией. Есть только одна неполная часть. Как рассчитать оптимальное количество бит для данной задачи?

Легкий ответ - -log₂p (x).

Распространяя его на все распределение вероятностей P, берем математическое ожидание:

В нашем примере это выглядит так:

Для тех, кому интересно узнать, как мы пришли к формуле, читайте дальше.

Математика

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

Одно из свойств однозначно декодируемых кодов - это свойство префикса. Никакое кодовое слово не должно быть префиксом другого кодового слова. Это означает, что каждый раз, когда вы выбираете код меньшей длины, вы отпускаете все возможные коды с этим кодом в качестве префикса. Если мы возьмем 01 в качестве кода, мы не сможем использовать 011 или 01001 и т. Д. Таким образом, выбор каждого кода связан с расходами. Цитата из блога Криса Олаха:

Стоимость покупки кодового слова длины 0 равна 1, все возможные кодовые слова - если вы хотите иметь кодовое слово длины 0, у вас не может быть другого кодового слова. Стоимость кодового слова длины 1, такого как «0», составляет 1/2, потому что половина возможных кодовых слов начинается с «0». Стоимость кодового слова длины 2, такого как «01», составляет 1/4, потому что четверть всех возможных кодовых слов начинается с «01». Как правило, стоимость кодовых слов уменьшается экспоненциально с увеличением длины кодового слова.

Блог Криса Олаха [2]

И эта стоимость может быть определена как

где L - длина сообщения. Обращая уравнение, получаем:

Теперь, какова стоимость? Наши расходы пропорциональны тому, насколько конкретный результат должен быть закодирован. Итак, мы тратим P (x) на конкретную переменную x. Следовательно, стоимость = P (x). (Чтобы лучше понять эту стоимость, прочтите Блог Криса Олаха [2])

Перекрестная энтропия

В нашем примере теперь в Австралии также есть коробка с такими же четырьмя цветными шарами. Но распределение шаров другое, как показано ниже (обозначается q).

Теперь Австралия хочет провести те же эксперименты, что и Индия, и вернуть выбранный ими мяч. Они решили использовать ту же схему кодирования, которая была установлена ​​ранее для осуществления связи.

Поскольку схема кодирования получена из исходного распределения, длина битов для каждого результата такая же, как и раньше. Например,

Но что изменилось, так это частота использования различных сообщений. Итак, теперь цвет шара, который рисует Австралия, будет зеленым в 50% случаев и так далее. Схема кодирования, которую мы разработали для первого варианта использования (от Индии до Австралии), не оптимизирована для второго варианта использования (от Австралии до Индии).

Это перекрестная энтропия, которую формально можно определить как:

где p (x) - вероятность распределения, которое использовалось для создания схемы кодирования, а q (x) - вероятность распределения, которое их использует.

Перекрестная энтропия всегда равна или больше энтропии. В лучшем случае исходное и целевое распределения точно такие же, и в этом случае перекрестная энтропия становится энтропией, потому что мы можем заменить q (x) на p (x). В терминах машинного обучения мы можем сказать, что предсказанное распределение равно p (x), а основное истинное распределение - q (x). Таким образом, чем больше похоже предсказанное и истинное распределение, тем ближе будут энтропия и перекрестная энтропия.

Дивергенция Кульбака-Лейблера

Теперь, когда мы поняли энтропию и перекрестную энтропию, мы в состоянии понять еще одну концепцию с пугающим названием. Название настолько пугающее, что даже практикующие называют его дивергенцией KL вместо настоящей дивергенции Кульбака-Лейблера. Этот монстр из глубин теории информации - довольно простая и легкая для понимания концепция.

KL Дивергенция измеряет, насколько одно распределение отличается от другого. В нашем примере мы используем схему кодирования, которую мы использовали для связи из Индии в Австралию, чтобы также выполнить обратную связь. В машинном обучении это может быть попытка приблизить истинное распределение (p) с предсказанным распределением (q). Но при этом мы тратим больше бит, чем необходимо для отправки сообщения. Или у нас есть некоторые потери, потому что мы приближаем p к q. Эта потеря информации называется расхождением KL.

Следует отметить два ключевых свойства дивергенции KL:

  1. К.Л. Дивергенция неотрицательна. т.е. это всегда ноль или положительное число.
  2. К.Л. Дивергенция несимметрична. т.е. KL Дивергенция от p к q не равна KL Расходимость q к p. И поэтому это не совсем расстояние.

KL (P || Q) можно интерпретировать следующим образом:

  • Расхождение от Q к P
  • Относительная энтропия P относительно Q
  • Насколько хорошо Q приближается к P

Математика

Давайте посмотрим, как мы приходим к формуле, которая улучшит наше понимание расхождения KL.

По нашей интуиции мы знаем, что KL (P || Q) - это информация, теряемая при приближении P к Q. Что бы это было?

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

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

Мы знаем ожидаемую ценность битов, когда используем схему кодирования в Австралии. Это перекрестная энтропия Q w.r.t. P (где P - прогнозируемое распределение, а Q - истинное распределение).

Теперь есть некоторая неэффективность, поскольку мы используем схему кодирования, разработанную для другого распределения вероятностей. Какой здесь идеальный случай? Прогнозируемое распределение равно истинному распределению. Это означает, что мы будем использовать схему кодирования, разработанную для Q для отправки сообщений. И это не что иное, как энтропия Q.

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

Это также должно дать вам некоторую интуицию относительно того, почему эта метрика не симметрична.

Примечание. Мы обсуждали весь блог, предполагая, что X, случайная величина, является дискретной переменной. Если это непрерывная переменная, просто замените ∑ на ∫, и формулы снова заработают.

Приложения в глубоком обучении

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

Категориальная потеря перекрестной энтропии

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

По сути, softmax преобразует необработанные логиты в вероятности. А поскольку теперь у нас есть вероятности, мы можем вычислить перекрестную энтропию, как мы рассмотрели ранее.

С точки зрения машинного обучения формула кросс-энтропии:

где N - количество выборок, C - количество классов, y - истинная вероятность, а y_hat - предсказанная вероятность. В типичном случае y будет горячим представлением целевой метки (с нулями повсюду и единицей для правильной метки).

Перекрестная энтропия и логарифм правдоподобия

Вероятность против правдоподобия

Выражаясь нетехническим языком, «правдоподобие» взаимозаменяемо с «вероятностью». Но в статистике и, соответственно, в машинном обучении это имеет другое значение. В очень краткой форме «Вероятность» - это когда мы говорим о результатах, а «Вероятность» - это гипотеза.

Возьмем пример нормального распределения со средним значением 30 и стандартным отклонением 2,5. Мы можем найти вероятность того, что выпавшее из распределения значение равно 32.

Теперь давайте обратим ситуацию и посмотрим, что мы не знаем основного распределения. У нас просто есть наблюдения, полученные из распределения. В таком случае мы все еще можем рассчитать вероятность, как до принятия определенного распределения.

Теперь мы находим вероятность того, что конкретное наблюдение описывается предполагаемыми параметрами. И когда мы максимизируем эту вероятность, мы придем к параметрам, которые лучше всего подходят оттянутым образцам. Это вероятность.

Обобщить:

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

Математика

где N - количество выборок, а f - функция, которая дает вероятность y для заданных ковариат x и параметров.

Когда мы имеем дело с вышеуказанным термином продукта, возникают две трудности:

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

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

Перекрестная энтропия = логарифм правдоподобия

Давайте рассмотрим q как истинное распределение, а p как прогнозируемое распределение. y - это цель для образца, а x - входные функции.

Базовое распределение истинности, как правило, представляет собой быстрое представление возможных меток.

Для образца xᵢ, yᵢ перекрестная энтропия равна:

где Y - это набор всех меток

Член q (y | xᵢ) равен нулю для всех элементов Y, кроме yᵢ и 1 для yᵢ. Таким образом, срок сократился до:

где yᵢ - правильная метка для образца.

Подводя итоги по всем N выборкам,

что является не чем иным, как отрицательным значением логарифмической вероятности. Таким образом, максимизация логарифмической вероятности эквивалентна минимизации перекрестной энтропии.

Потеря бинарной кросс-энтропии

В двоичной классификации нейронная сеть имеет только один выход, обычно проходящий через сигмоидный слой. Сигмоидный слой, показанный ниже, сжимает логиты до значения от 0 до 1.

Следовательно, выход сигмовидного слоя действует как вероятность события. Таким образом, если у нас есть два класса, 0 и 1, по мере увеличения уверенности сети относительно того, что образец является «1», выход сигмовидного слоя также становится ближе к 1, и наоборот.

Двоичная перекрестная энтропия (BCE) - это функция потерь, специально разработанная для двоичной классификации. Давайте начнем с формулы, а затем попытаемся провести параллели с тем, что мы уже узнали.

Хотя на первый взгляд формула может показаться незнакомой, это всего лишь частный случай кросс-энтропии, который мы рассмотрели ранее. В отличие от выходных данных с несколькими классами, у нас есть только один выход, который находится между 0 и 1. Поэтому, чтобы применить формулу кросс-энтропии, мы синтетически создаем два выходных узла, один с y, а другой с 1-лет (мы знаем из законов вероятности, что в бинарном исходе вероятности в сумме равны 1) и суммируем перекрестную энтропию всех исходов.

Потеря дивергенции Кульбака-Лейблера

Мы знаем, что KL Дивергенция не симметрична. Если p - это прогнозируемое распределение, а q - истинное распределение, есть два способа рассчитать расхождение KL.

Первый называется дивергенцией вперед KL. Это показывает, насколько предсказанное отклоняется от истинного распределения. Второй называется обратная дивергенция KL. Он показывает, насколько истинное распределение отличается от предсказанного.

В обучении с учителем мы используем прямую дивергенцию KL, потому что можно показать, что максимизация прямой дивергенции KL эквивалентна максимизации кросс-энтропии (которую мы подробно рассмотрим в разделе математики), а кросс-энтропию намного проще вычислить. И по этой причине кросс-энтропия предпочтительнее KL. ​​Дивергенция - это наиболее простые варианты использования. Вариационные автоэнкодеры и GAN - это несколько областей, где дивергенция KL снова становится полезной.

Обратный KL-дивергенция используется в обучении с подкреплением и поощряет оптимизацию, чтобы найти режим распределения, тогда как Forward KL делает то же самое для среднего. Для получения более подробной информации о дивергенции прямого и обратного KL, прочтите блог Дибьи Гоша [3]

Математика

Мы знаем, что дивергенция KL - это разница между кросс-энтропией и энтропией.

Следовательно, наша потеря кросс-энтропии по N образцам составляет:

Теперь цель оптимизации - минимизировать эти потери, изменив параметры, которые параметризуют прогнозируемое распределение p. Поскольку H (q) - энтропия истинного распределения, не зависящая от параметров, ее можно рассматривать как константу. И при оптимизации мы знаем, что константа несущественна и ее можно игнорировать. Таким образом, Убыток становится:

Итак, чтобы подвести итог, мы начали с потери перекрестной энтропии и доказали, что минимизация перекрестной энтропии эквивалентна минимизации дивергенции KL.

Реализация в популярных фреймворках глубокого обучения

То, как эти потери реализованы в популярных фреймворках глубокого обучения, таких как PyTorch и Tensorflow, немного сбивает с толку. Особенно это актуально для PyTorch.

PyTorch

  • Binary_cross_entropy - ожидает, что логиты будут переданы через сигмовидный слой перед вычислением потерь.
  • Binary_cross_entropy_with_logits - ожидает, что необработанные выходные данные или логиты будут переданы в потерю. Реализация потерь применяет сигмоид внутри
  • Cross_entropy - ожидает логитов на входе и применяет softmax (технически log softmax) перед вычислением потери энтропии.
  • Nll_loss - это простая потеря вероятности отрицательного журнала. Ожидается, что логиты будут переданы через слой softmax перед вычислением потерь.
  • Kl_div - ожидает, что логиты будут переданы через слой softmax перед вычислением потерь.

Tensorflow 2.0 / Керас

Все потери Tensorflow 2.0 по умолчанию ожидают вероятности в качестве входных данных, то есть логиты будут переданы через Sigmoid или Softmax перед подачей в потери. Но они предоставляют параметр from_logits, для которого установлено значение True, будут принимать логиты и выполнять преобразование в вероятности внутри.

  • BinaryCrossentropy - вычисляет потери BCE для y_true и y_pred. y_true и y_pred - одномерные тензоры - одно значение для каждой выборки.
  • Категориальная кроссентропия - вычисляет перекрестную энтропию для y_true и y_pred. y_true - быстрое представление меток, а y_pred - многомерный тензор - количество значений классов для каждой выборки
  • SparseCategoricalCrossentropy - вычисляет перекрестную энтропию для y_true и y_pred. y_true - одномерный тензор - одно значение для каждой выборки - и y_pred - многомерный тензор - # значений классов для каждой выборки
  • KLDivergence - вычисляет KL-дивергенцию от y_pred до y_true. Это исключение в том смысле, что всегда ожидаются вероятности в качестве входных данных.

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

использованная литература

  1. Шеннон, C.E. (1948), «Математическая теория коммуникации», Bell System Technical Journal, 27, стр. 379–423 и 623–656, июль и октябрь 1948 года.
  2. Крис Олах, Визуальная информация, colah.github.io
  3. Дибья Гош, Дивергенция KL для машинного обучения, http://www.dibyaghosh.com

Первоначально опубликовано на http://deep-and-shallow.com 9 января 2020 г.