Эта статья была впервые опубликована на:Уокер ИИ
Мультиклассификация с использованием глубокого обучения является распространенной задачей как в производственной, так и в научной среде. В научно-исследовательской среде, будь то задачи серии NLP, CV или TTS, данные богаты и чисты. В реальной промышленной среде проблемы с данными часто становятся серьезной проблемой для практиков; общие проблемы с данными включают:
- Небольшой размер выборки данных
- Данные не имеют меток
- Данные не чистые, и есть много помех
- Распределение размера выборки между классами данных несбалансировано и т.д.
Кроме того, есть и другие проблемы, которые не перечислены по отдельности в этой статье. В ответ на четвертый вопрос выше Google опубликовал документ в июле 2020 года.《Обучение с длинным хвостом через логит-настройку》пройти через BER ( Balanced Error Rate ) Соответствующее рассуждение кросс-энтропийной функции преобразуется на основе исходной кросс-энтропийной, так что средняя точность классификации выше. В этой статье будут кратко интерпретированы основные выводы статьи и использованы keras Реализуется структура глубокого обучения, и, наконец, результаты проверяются с помощью простого эксперимента по классификации рукописных цифр Mnist. Эта статья будет интерпретироваться со следующих четырех аспектов:
- Базовые концепты
- основной вывод
- Код
- Результаты экспериментов
1. Основные понятия
В задаче множественной классификации, основанной на глубоком обучении, для получения лучшего эффекта классификации часто необходимо корректировать данные, структурные параметры нейронной сети, функцию потерь и параметры обучения, особенно перед лицом несбалансированные данные, сделайте больше настроек. в диссертации《Обучение с длинным хвостом через логит-настройку》Чтобы облегчить проблему низкой точности классификации низких категорий выборки, вызванную дисбалансом категорий, к функции потерь добавляется только предварительное знание меток для получения эффекта SOTA. Таким образом, для основных выводов в этой статье сначала кратко описаны четыре основные концепции: (1) длиннохвостое распределение, (2) softmax, (3) перекрестная энтропия, (4) BER.
1.1 Распределение с длинным хвостом
Если обучающие данные всех категорий отсортированы в порядке возрастания в соответствии с размером выборки каждой категории, а результаты сортировки отображаются на графике, обучающие данные с несбалансированными категориями будут показывать «голову» и «хвост». форме, как показано на следующем рисунке:
Категория с большим объемом выборки образует «голову», а категория с малым объемом выборки — «хвост», и проблема несбалансированности категорий весьма значительна.
1.2 softmax
Благодаря функции нормализации и простоте вывода softmax часто используется в качестве функции активации последнего слоя нейронной сети в задачах бинарной или множественной классификации для выражения результатов прогнозирования нейронной сети. В этой статье мы не будем вдаваться в подробности о softmax, а лишь приведем его обобщенную формулу:
В нейронной сети,является выходом предыдущего слоя;– форма распределения продукции этого слоя;находится в партиии.
1.3 Кросс-энтропия
В этой статье не делается слишком много выводов о функции кросс-энтропии.Подробности см. в соответствующей литературе по теории информации. В задачах с двумя или несколькими классами функция кросс-энтропии и ее варианты обычно используются в качестве функции потерь для оптимизации, и дается основная формула:
В нейронной сети,- ожидаемое распределение выборки, обычно метки с горячим кодированием;является выходом нейронной сети, который можно рассматривать как результат предсказания нейронной сети на выборке.
1.4 BER
BER — это среднее соответствующих коэффициентов ошибок прогнозирования положительных и отрицательных образцов в бинарной классификации; в задаче с несколькими классами это взвешенная сумма соответствующих коэффициентов ошибок каждого типа образцов, которая может быть выражена в виде в следующей форме (см. статью):
в,вся нейронная сеть;означает, что вход, выходнейронная сеть;Представляет метки, ошибочно идентифицированные нейронной сетью;– расчетная форма коэффициента ошибок;для различных весов.
2. Основные выводы
Согласно идее статьи, сначала определите модель нейронной сети:
которыйудовлетворитьBERНейросетевая модель состояния. Затем оптимизируйте эту модель нейронной сети, этот процесс эквивалентен, то есть с учетом обучающих данныхполучить предсказанные метки, и будет предсказывать меткуОптимизация процесса выравнивания (умножается на их соответствующие веса). Сокращенно:
за, очевидно,вявляется меткой предшествующей;данные обученияУсловные вероятности предсказанных меток впоследствии. Объедините суть обучения в мультиклассовых нейронных сетях:
В соответствии с описанным выше процессом предполагается, что выходные логиты сети записываются как s*:,так какнужно пройтиsoftmaxАктивационный слой, который; так что не сложно придумать:. рекомбинация,можетВыражается как:
Ссылаясь на приведенную выше формулу, оптимизация приведена в статьедве реализации:
(1) пройти, после входаПосле получения прогноза по всем слоям нейронной сети разделите на априорный. Этот метод уже применялся ранее и дал определенные результаты.
(2) пройти, после входаВычтите единицу после получения закодированных логитов через слой нейронной сети.. В статье используется этот подход.
В соответствии со второй идеей в статье прямо приводится обобщенная формула, называемая логит-корректирующими потерями:
Сравните с обычной перекрестной энтропией softmax:
По сути, смещение, связанное с предыдущей меткой, применяется к каждому выводу журнала (т. е. к результату до активации softmax).
3. Реализация кода
Идея реализации состоит в том, чтобы добавить априорное смещение к выходным логитам нейронной сети.. На практике, чтобы его было легко реализовать в предположении максимальной эффективности, примите поправочный коэффициент=1,=1. Тогда потери корректировки логита упрощаются до:
Реализация в рамках keras выглядит следующим образом:
import keras.backend as K
def CE_with_prior(one_hot_label, logits, prior, tau=1.0):
'''
param: one_hot_label
param: logits
param: prior: real data distribution obtained by statistics
param: tau: regulator, default is 1
return: loss
'''
log_prior = K.constant(np.log(prior + 1e-8))
# align dim
for _ in range(K.ndim(logits) - 1):
log_prior = K.expand_dims(log_prior, 0)
logits = logits + tau * log_prior
loss = K.categorical_crossentropy(one_hot_label, logits, from_logits=True)
return loss
4. Экспериментальные результаты.
бумага《Обучение с длинным хвостом через логит-настройку》Он сравнивает различные методы для повышения точности классификации распределения с длинными хвостами и использует различные наборы данных для тестирования. Производительность теста лучше, чем у существующих методов. Подробные экспериментальные результаты относятся к самой статье. Для того чтобы быстро проверить правильность реализации и эффективность метода, в данной работе проводится простой классификационный эксперимент с использованием множества рукописных цифр. Предыстория эксперимента такова:
\ | Подробности |
---|---|
Обучающие образцы | 0 ~ 4: 5000 листов/класс 5 ~ 9: 500 листов/класс |
проба | 0 ~ 9: 500/класс |
Рабочая среда | локальный процессор |
сетевая структура | Свертка + максимальный пул + полное подключение |
В вышеприведенном контексте проводятся сравнительные эксперименты, и в качестве стандартной мультиклассовой кросс-энтропии и кросс-энтропии с априорной используется стандартная кросс-энтропия.lossПод функцией производительность сети классификации. Принимая ту же эпоху = 60, экспериментальные результаты следующие:
\ | Стандартная мультиклассовая перекрестная энтропия | кросс-энтропия с априорным |
---|---|---|
Точность | 0.9578 | 0.9720 |
Схема обучения |
PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!