Вопрос или проблема
Книги по машинному обучению в общем описывают, что ошибка, рассчитанная для данной выборки $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)
\]
### Заключение
В заключение, при работе с нейронными сетями, имеющими несколько выходных нейронов, важно правильно понимать, как рассчитывается ошибка и какая функция потерь будет наиболее подходящей для нашей задачи. В многоклассовой классификации переход к векторным выходам и использование категориальной кросс-энтропии позволяет более точно оценивать качество модели. Следовательно, правильный выбор функции потерь и понимание ошибок играют ключевую роль в успешной разработке моделей машинного обучения.
Таким образом, знание различных аспектов расчета ошибок и функций потерь является необходимым для построения эффективных систем на основе нейронных сетей.