Облегчить проблему дисбаланса выборки при мультиклассификации

искусственный интеллект глубокое обучение

Эта статья была впервые опубликована на:Уокер ИИ

Мультиклассификация с использованием глубокого обучения является распространенной задачей как в производственной, так и в научной среде. В научно-исследовательской среде, будь то задачи серии 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, а лишь приведем его обобщенную формулу:

q(cj)=ezji=1neziq\left(c_{j}\right)=\frac{e^{z_{j}}}{\sum_{i=1}^{n} e^{z_{i}}}

В нейронной сети,zjz_{j}является выходом предыдущего слоя;q(cj)q\left(c_{j}\right)– форма распределения продукции этого слоя;i=1nezi\sum_{i=1}^{n} e^{z_{i}}находится в партииezie^{z_{i}}и.

1.3 Кросс-энтропия

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

H(p,q)=ip(ci)logq(ci)H(p, q)=-\sum_{i} p\left(c_{i}\right) \log q\left(c_{i}\right)

В нейронной сети,p(ci)p\left(c_{i}\right)- ожидаемое распределение выборки, обычно метки с горячим кодированием;q(ci)q\left(c_{i}\right)является выходом нейронной сети, который можно рассматривать как результат предсказания нейронной сети на выборке.

1.4 BER

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

BER(f)1Lyе[L]Pxy(yargmaxy'еyfy'(x))\operatorname{BER}(f) \doteq \frac{1}{L} \sum_{y \in[L]} \mathbb{P}_{x \mid y}\left(y \notin \operatorname{argmax}_{y^{\prime} \in y} f_{y^{\prime}}(x)\right)

в,ffвся нейронная сеть;fy'(x)f_{y^{\prime}}(x)означает, что входxx, выходy'y^{\prime}нейронная сеть;yargmaxy'еyfy'(x)y \notin \operatorname{argmax}_{y^{\prime} \in y} f_{y^{\prime}}(x)Представляет метки, ошибочно идентифицированные нейронной сетьюyy;Pxy\mathbb{P}_{x \mid y}– расчетная форма коэффициента ошибок;1L\frac{1}{L}для различных весов.

2. Основные выводы

Согласно идее статьи, сначала определите модель нейронной сети:

f*еargminf:xRLBER(f)f^{*} \in \operatorname{argmin}_{f:} x \rightarrow \mathbb{R}^{L} \text { BER }(f)

которыйf*f^{*}удовлетворитьBERНейросетевая модель состояния. Затем оптимизируйте эту модель нейронной сетиargmaxyе[L]fy*(x)\operatorname{argmax}_{y \in[L]} f_{y}^{*}(x), этот процесс эквивалентенargmaxyе[L]Pbal(yx)\operatorname{argmax}_{y \in[L]} \mathbb{P}^{\mathrm{bal}}(y \mid x), то есть с учетом обучающих данныхxxполучить предсказанные меткиyy, и будет предсказывать меткуyyОптимизация процесса выравнивания (умножается на их соответствующие веса). Сокращенно:

argmaxyе[L]fy*(x)=argmaxyе[L]Pbal(yx)=argmaxyе[L]P(xy)\operatorname{argmax}_{y \in[L]} f_{y}^{*}(x)=\operatorname{argmax}_{y \in[L]} \mathbb{P}^{\mathrm{bal}}(y \mid x)=\operatorname{argmax}_{y \in[L]} \mathbb{P}(x \mid y)

заPбал(yx)\mathbb{P}^{\text {bal }}(y \mid x), очевидноPбал(yx)P(yx)/P(y)\mathbb{P}^{\text {bal }}(y \mid x) \propto \mathbb{P}(y \mid x) / \mathbb{P}(y)P(y)\mathbb{P}(y)является меткой предшествующей;P(yx)\mathbb{P}(y \mid x)данные обученияxxУсловные вероятности предсказанных меток впоследствии. Объедините суть обучения в мультиклассовых нейронных сетях:

В соответствии с описанным выше процессом предполагается, что выходные логиты сети записываются как s*:s*:xRLs^{*}: x \rightarrow \mathbb{R}^{L},так какs*s^{*}нужно пройтиsoftmaxАктивационный слой, которыйq(ci)=es*i=1nes*q\left(c_{i}\right)=\frac{e^{s^{*}}}{\sum_{i=1}^{n} e^{s^{*}}}; так что не сложно придумать:P(yx)exp(sy*(x))\mathbb{P}(y \mid x) \propto \exp \left(s_{y}^{*}(x)\right). рекомбинацияPбал(yx)P(yx)/P(y)\mathbb{P}^{\text {bal }}(y \mid x) \propto \mathbb{P}(y \mid x) / \mathbb{P}(y),можетPбал(yx)\mathbb{P}^{\text {bal }}(y \mid x)Выражается как:

argmaxyе[L]Pбал(yx)=argmaxyе[L]exp(sy*(x))/P(y)=argmaxyе[L]sy*(x)lnP(y)\operatorname{argmax}_{y \in[L]} \mathbb{P}^{\text {bal }}(y \mid x)=\operatorname{argmax}_{y \in[L]} \exp \left(s_{y}^{*}(x)\right) / \mathbb{P}(y)=\operatorname{argmax}_{y \in[L]} s_{y}^{*}(x)-\ln \mathbb{P}(y)

Ссылаясь на приведенную выше формулу, оптимизация приведена в статьеPбал(yx)\mathbb{P}^{\text {bal }}(y \mid x)две реализации:

(1) пройтиargmaxyе[L]exp(sy*(x))/P(y)\operatorname{argmax}_{y \in[L]} \exp \left(s_{y}^{*}(x)\right) / \mathbb{P}(y), после входаxxПосле получения прогноза по всем слоям нейронной сети разделите на априорныйP(y)\mathbb{P}(y). Этот метод уже применялся ранее и дал определенные результаты.

(2) пройтиargmaxyе[L]sy*(x)lnP(y)\operatorname{argmax}_{y \in[L]} s_{y}^{*}(x)-\ln \mathbb{P}(y), после входаxxВычтите единицу после получения закодированных логитов через слой нейронной сети.lnP(y)\ln \mathbb{P}(y). В статье используется этот подход.

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

(y,f(x))=logefy(x)+тlogчисло Пиyy'е[L]efy'(x)+тlogчисло Пиy'=log[1+y'y(число Пиy'число Пиy)тe(fy'(x)fy(x))]\ell(y, f(x))=-\log \frac{e^{f_{y}(x)+\tau \cdot \log \pi_{y}}}{\sum_{y^{\prime} \in[L]} e^{f_{y^{\prime}}(x)+\tau \cdot \log \pi_{y^{\prime}}}}=\log \left[1+\sum_{y^{\prime} \neq y}\left(\frac{\pi_{y^{\prime}}}{\pi_{y}}\right)^{\tau} \cdot e^{\left(f_{y^{\prime}}(x)-f_{y}(x)\right)}\right]

Сравните с обычной перекрестной энтропией softmax:

(y,f(x))=log[y'е[L]efy'(x)]fy(x)=log[1+y'yefy'(x)fy(x)]\ell(y, f(x))=\log \left[\sum_{y^{\prime} \in[L]} e^{f_{y^{\prime}}(x)}\right]-f_{y}(x)=\log \left[1+\sum_{y^{\prime} \neq y} e^{f_{y^{\prime}}(x)-f_{y}(x)}\right]

По сути, смещение, связанное с предыдущей меткой, применяется к каждому выводу журнала (т. е. к результату до активации softmax).

3. Реализация кода

Идея реализации состоит в том, чтобы добавить априорное смещение к выходным логитам нейронной сети.log(число Пиy'число Пиy)т\log \left(\frac{\pi_{y^{\prime}}}{\pi_{y}}\right)^{\tau}. На практике, чтобы его было легко реализовать в предположении максимальной эффективности, примите поправочный коэффициентт\tau=1,число Пиy'\pi_{y^{\prime}}=1. Тогда потери корректировки логита упрощаются до:

(y,f(x))=logefy(x)+тlogчисло Пиyy'е[L]efy'(x)+тlogчисло Пиy'=log[1+y'ye(fy'(x)fy(x)logчисло Пиy)]\ell(y, f(x))=-\log \frac{e^{f_{y}(x)+\tau \cdot \log \pi_{y}}}{\sum_{y^{\prime} \in[L]} e^{f_{y^{\prime}}(x)+\tau \cdot \log \pi_{y^{\prime}}}}=\log \left[1+\sum_{y^{\prime} \neq y} e^{\left(f_{y^{\prime}}(x)-f_{y}(x)-\log \pi_{y}\right)}\right]

Реализация в рамках 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] и обсудите с ходоками!