# Эндрю Ын: «Несоответствие данных — третья большая проблема после смещения и дисперсии»

Источник: https://www.youtube.com/watch?v=2BH49JG_sTs
Канал: DeepLearning.AI
Опубликовано: 25.08.2017

---

В современном машинном обучении часто возникают ситуации, когда данные для обучения и данные для реального использования распределены по-разному. Эндрю Ын, основатель DeepLearning.AI, объясняет, как адаптировать классический анализ смещения (bias) и дисперсии (variance) к условиям несоответствия данных. Ключевым инструментом в этом процессе становится введение нового проверочного набора — training-dev set.

## 📉 Проблема смешивания двух факторов ошибки
[[JUMP:0:00]]

Традиционный анализ смещения и дисперсии позволяет разработчику расставить приоритеты в работе над алгоритмом. Однако, как отмечает Эндрю Ын, привычные методы перестают работать, если обучающая выборка (training set) и проверочная выборка (dev set) взяты из разных распределений [0:00]. 

В качестве примера Ын приводит классификатор кошек, где уровень ошибки человека близок к 0%, что принимается за прокси для ошибки Байеса [0:12]. В классическом сценарии, если ошибка на обучении составляет 1%, а на проверочном наборе — 10%, диагноз однозначен: алгоритм страдает от высокой дисперсии и плохо обобщает данные [0:40]. 

Однако в условиях несоответствия данных (mismatched data) этот вывод может быть ошибочным. По мнению автора, разрыв в 9% может объясняться не плохой работой алгоритма, а тем, что проверочный набор просто намного сложнее для классификации [1:07]. Например, обучающие изображения могут быть четкими и в высоком разрешении, а проверочные — размытыми снимками с мобильных телефонов [1:20].

Основная сложность анализа заключается в том, что при переходе от обучения к проверке меняются сразу два фактора:

*   Алгоритм сталкивается с данными, которые он не видел в процессе обучения [1:34].
*   Распределение самих данных становится иным [1:47].

Из-за этого невозможно сразу определить, какая часть из 9% ошибки вызвана неспособностью нейросети обобщать знания (дисперсия), а какая — объективными различиями в типах данных [2:01].

## 🛠️ Введение Training-Dev набора
[[JUMP:2:15]]

Для того чтобы разделить эффекты дисперсии и несоответствия данных, Эндрю Ын предлагает использовать новый инструмент — **training-dev set** [2:28].

Процесс формирования выборок выглядит следующим образом:

1.  Берется исходный обучающий набор и случайно перемешивается.
2.  Из него выделяется небольшая часть, которая становится набором training-dev [3:11].
3.  Нейросеть обучается только на оставшейся части основного обучающего набора.

Важнейшее условие: наборы training и training-dev имеют **одинаковое распределение**, но нейросеть «не видит» training-dev в процессе обучения (метод обратного распространения ошибки на нем не запускается) [3:24]. Теперь, имея показатели на обучении, на training-dev и на dev-наборе, можно точно диагностировать проблему [3:37].

## 🧪 Четыре сценария анализа ошибок
[[JUMP:3:55]]

Эндрю Ын выделяет несколько типичных ситуаций, основанных на разнице показателей ошибок (при условии, что ошибка человека — 0%):

**1. Проблема высокой дисперсии (Variance)**

*   Ошибка обучения: 1%
*   Ошибка на training-dev: 9%
*   Ошибка на dev-наборе: 10%
В этом случае алгоритм плохо работает даже на данных из того же распределения, которые он просто не видел раньше [4:39]. Это классическая проблема переобучения [5:06].

**2. Проблема несоответствия данных (Data Mismatch)**

*   Ошибка обучения: 1%
*   Ошибка на training-dev: 1.5%
*   Ошибка на dev-наборе: 10%
Здесь алгоритм отлично справляется с новыми данными из того же распределения (разрыв всего 0.5%), но резко теряет в качестве на проверочном наборе. По словам Ына, это означает, что модель научилась хорошо распознавать специфическое распределение обучающих данных, но оно не соответствует тому, что действительно важно для финальной задачи [5:50].

**3. Высокое смещение (Avoidable Bias)**

*   Ошибка обучения: 10%
*   Ошибка на training-dev: 11%
*   Ошибка на dev-наборе: 12%
Если ошибка на обучении значительно выше человеческого уровня (в примере — 10% против 0%), это свидетельствует о проблеме «избегаемого смещения» (avoidable bias) [6:51]. Алгоритм в принципе не справляется с задачей распознавания [7:04].

**4. Комбинированные проблемы (Bias + Mismatch)**

*   Ошибка обучения: 10%
*   Ошибка на training-dev: 11%
*   Ошибка на dev-наборе: 20%
В данном примере присутствуют сразу две беды: высокое смещение (разрыв между 0% и 10% на обучении) и серьезное несоответствие данных (скачок с 11% до 20% при переходе к dev-набору) [7:48].

## 📊 Матрица общего анализа и аномалии
[[JUMP:8:02]]

Для систематизации анализа Эндрю Ын предлагает рассматривать пять ключевых показателей:

*   **Human level error** (уровень человека).
*   **Training set error** (ошибка на обучении).
*   **Training-dev set error** (ошибка на новых данных из того же распределения).
*   **Dev set error** (ошибка на проверочном наборе).
*   **Test set error** (ошибка на тестовом наборе) [8:15].

Разница между dev и test-наборами показывает степень «переобучения под проверочный набор». Если этот разрыв велик, автору кажется разумным увеличить размер проверочного набора [9:24].

Ын также упоминает парадоксальные случаи, с которыми он сталкивался в задачах по распознаванию речи [10:42]. Иногда ошибка на проверочном наборе оказывается **ниже**, чем на обучающем (например, 7% на обучении и 6% на проверке) [10:15]. Это происходит, если обучающие данные объективно сложнее (например, записи с сильным шумом), чем данные в проверочном наборе [10:56]. 

Чтобы визуализировать это, можно построить таблицу, где по одной оси будут типы данных (общие задачи распознавания речи и специфические данные, например, из зеркала заднего вида автомобиля), а по другой — способы оценки (человек, модель на обученных данных, модель на новых данных) [12:33].

Такой детальный анализ позволяет увидеть, например, что для людей данные из автомобиля (6% ошибки) сложнее, чем обычная речь (4% ошибки) [16:07]. По мнению Ына, заполнение всей таблицы полезно не всегда, но часто дает дополнительные инсайты в сложных проектах [16:34].

## 🚀 Как бороться с несоответствием данных?
[[JUMP:17:16]]

В завершение лекции Эндрю Ын признает, что использование данных из разных распределений — это мощный способ увеличить обучающую выборку и повысить общую производительность системы [17:16]. Однако это создает новую проблему, отличную от смещения и дисперсии.

«Буду честен: на данный момент не существует очень систематических способов борьбы с несоответствием данных», — констатирует автор [17:29]. Тем не менее, есть определенные техники и подходы, которые могут помочь минимизировать этот эффект, и их обсуждению Ын обещает посвятить следующее видео [18:08].