Как рассчитывается ошибка с несколькими выходными нейронами в нейронной сети?

Вопрос или проблема

Книги по машинному обучению в общем описывают, что ошибка, рассчитанная для данной выборки $i$, определяется следующим образом:

$e_i = y_i – \hat{y_i}$

Где $\hat{y}$ — это целевой выход, а $y$ — это фактический выход, получаемый сетью. Таким образом, рассчитывается функция потерь $L$:

$L = \frac{1}{2N}\sum^{N}_{i=1}(e_i)^2$

Вышеуказанный сценарий объясняется для проблемы бинарной классификации/регрессии. Теперь предположим, что у нас есть сеть MLP с $m$ нейронами на выходном слое для задачи многоклассовой классификации (обычно по одному нейрону на класс).

Что меняется в приведённых выше уравнениях? Поскольку теперь у нас есть несколько выходов, и $e_i$, и $y_i$ должны быть вектором?

Вы смешиваете различные концепции:

  • $L = \frac{1}{2N}\sum^{N}_{i=1}(e_i)^2$ используется только для задач регрессии, а не для бинарной классификации, потому что MSE хорошо подходит, когда распределение целевых данных нормальное
  • Вы можете использовать последнюю формулу для бинарной классификации, но она будет работать очень плохо, потому что распределение ваших целевых данных — это распределение Бернулли, а не нормальное. Помните, что выбор правильной формулы подразумевает предварительное предположение о распределении целевых данных. По этой причине правильной формулой является бинарная кросс-энтропия (также известная как отрицательная логарифмическая правдоподобие Бернулли) $$ L = – \sum_i y_i \log \hat{y_i} (1 – y_i) \log(1 – \hat{y_i}) $$
  • Для задачи многоклассовой классификации существует обобщенная формула бинарной кросс-энтропии, называемая категориальной кросс-энтропией. Если $\hat{y}$ — это вектор из C элементов, по одному для каждого класса, а истинный класс $y$ закодирован как целое число (например, 0, 1, 2 …), то потери составляют $$ L = – \sum_i \log(\hat{y_i}[y]) $$

Ответ или решение

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

### Основы расчета ошибки в нейронных сетях

Для простоты, предполагая, что у нас есть аутпуты и целевые метки на уровне выборки, можно ввести понятие ошибки для каждой нейронной сети. В бинарной классификации ошибка для одного образца \( i \) вычисляется как:

\[
e_i = y_i – \hat{y_i}
\]

где \( y_i \) — истинный выход, а \( \hat{y_i} \) — предсказанный выход. В случае регрессии, чаще всего применяется функция потерь, такая как среднеквадратичная ошибка (MSE):

\[
L = \frac{1}{2N} \sum_{i=1}^N (e_i)^2
\]

где \( N \) — общее число выборок.

### Многоклассовая классификация

При переходе к многоклассовой классификации с \( m \) выходными нейронами, ситуация изменяется. Для каждого класса определенный выход нейронной сети соответствует вероятности принадлежности данного образца к этому классу. В этом случае как истинные, так и предсказанные выходы становятся векторами:

– \( \hat{y} \) — вектор, содержащий вероятности принадлежности к каждому из классов.
– \( y \) — вектор, который обычно представляет собой “one-hot” кодирование истинного класса. То есть, если у нас 3 класса, и истинный класс — второй, то \( y \) будет равен \( [0, 1, 0] \).

#### Расчет ошибки

В этом контексте ошибка для выборки \( i \) будет рассчитываться как:

\[
e_i = y_i – \hat{y_i}
\]

где \( e_i \) становится вектором ошибок. Далее, для вычисления потерь в многоклассовой классификации рекомендуется использовать категориальную кросс-энтропию (categorical crossentropy):

\[
L = -\sum_{j=1}^{m} y_j \log(\hat{y_j})
\]

где \( m \) — общее количество классов, а \( j \) — индекс текущего класса.

### Различия в функциях потерь

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

\[
L = -\left( y \log(\hat{y}) + (1 – y) \log(1 – \hat{y}) \right)
\]

### Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...