20 Систематические и случайные: Два основных источника ошибок
Предположим, ваша тренировочная, валидационная и тестовая выборки имеют одно и то же распределение. Тогда нужно брать больше данных для обучения, это только улучшит качество работы алгоритма, верно ли это?
Несмотря на то, что получение большего количества данных не может повредить работе, к сожалению, новые данные не всегда помогают настолько, насколько можно ожидать. В некоторых случаях работа по получению дополнительных данных может оказаться пустой тратой усилий. Как принять решение — в каких случаях добавлять данные, а когда не стоит об этом беспокоиться.
В машинном обучении присутствуют два главных источника ошибок: систематические и случайные (Variance) (дисперсионные). Понимание того, что они из себя представляют поможет вам решить — нужно ли добавлять еще данные, так же поможет выбрать тактику по улучшению качества работы классификатора.
замечание переводчика Variance переводится, как дисперсия или отклонение. Но я буду использовать не «дисперсию» или «дисперсионную ошибку», а более свойственное русскоязычной технической литературе определение «случайной ошибки». К тому же дисперсия в теории вероятностей и статистике имеет очень конкретный математический смысл и формальное выражение, которое еще дальше от значения, вкладываемого в это понятие автором.
Предположим, вы надеетесь построить кошачий распознователь, имеющий 5% ошибок. На текущий момент ошибка вашего классификатора на тренировочной выборке 15%, на валидационной выборке 16%. В таком случае добавление тренировочных данных вряд ли поможет существенно увеличить качество. Вы должны сконцентрироваться на других изменениях системы. В действительности, добавление большего количества примеров в вашу тренировочную выборку только усложнит для вашего алгоритма получение хорошего результата на этой выборке (почему так получается будет объяснено в следующих главах).
Если доля ваших ошибок на тренировочной выборке составляет 15% (что соответствует точности 85%), но вашей целью является доля ошибок в 5% (95% точность), тогда прежде всего нужно улучшить качество работы вашего алгоритма на тренировочной выборке. Качество работы алгоритма на валидационной / тестовой выборках обычно хуже, чем качество его работы на выборке для обучения (на тренировочной выборке). Нужно понимать, что те подходы, которые привели вас к точности, не превышающей 85% на примерах, с которыми ваш алгоритм знаком, не позволят получить точность в 95% на примерах, которые этот алгоритм даже не видел.
Предположим, как указано выше, доля ошибок вашего алгоритма составляет 16% (точность составляет 84%) на валидационной выборке. Мы должны разбить ошибку в 16% на два компонента:
- Первый, доля ошибок алгоритма на тренировочной выборке. В данном примере это 15%. Мы неофициально называть его систематической ошибкой.
- Второй, насколько хуже алгоритм работает на валидационной (или тестовой) выборке, чем на тренировочной. В нашем примере, на 1% хуже на валидационной выборке, чем на тренировочной. Будем так же неофициально считать его случайной ошибкой алгоритма.
замечание автора В статистике присутствует более точное определение для систематической и случайной ошибок, но нас это не должно тревожить. Грубо говоря, будем считать, что систематическая ошибка — это ошибка вашего алгоритма на вашей тренировочной выборке, когда вы имеете очень большую тренировочную выборку. Случайная ошибка — это насколько хуже алгоритм работает на тестовой выборке по сравнению с тренировочной при тех же настройках параметров. Если использовать среднеквадратичную ошибку, то можно записать формулы, определяющие эти две величины и доказать, что общая ошибка равна сумме случайных и систематических погрешностей. Но для наших целей улучшения алгоритмов в задачах машинного обучения, достаточно неформального определения случайной и систематической ошибок.
Некоторые изменения при обучении алгоритма влияют на первый компонент ошибки — на систематическую ошибку ( bias ) и улучшают выполнение алгоритма на тренировочной выборке. Некоторые изменения влияют на второй компонент — на случайную ошибку ( variance ) и помогают лучше обобщить работу алгоритма на валидационную и тестовую выборки.
замечание автора: Так же есть некоторые подходы, которые одновременно уменьшают систематическую и случайные ошибки, внося существенные изменения в архитектуру системы. Но их, как правило, сложнее найти и реализовать
Для выбора наиболее эффективных изменений, которые нужно внести в систему, крайне полезно понимать, как каждый из этих двух компонентов ошибки влияет на общую ошибку системы.
Развитие интуиции в понимании, какой вклад в ошибку вносит Систематическая ошибка, а какой Случайная, поможет вам эффективно выбирать пути улучшения вашего алгоритма.
21 Примеры Случайных и Систематических ошибок
Рассмотрим нашу задачу по классификации кошек. Идеальный классификатор (например, человек) может достичь превосходного качества выполнения этой задачи.
Предположим, что качество работы нашего алгоритма следующее:
- Ошибка на тренировочной выборке = 1%
- Ошибка на валидационной выборке = 11%
Какая проблема у этого классификатора? Применив определения из предыдущей главы, мы оценим систематическую оценку в 1% и случайную в 10% (=11% — 1%). Таким образом, у нашего алгоритма большая случайная ошибка. Классификатор имеет очень низкую ошибку на тренировочной выборке, но не может обобщить результаты обучения на валидационную выборку. Другими словами, мы имеем дело с переобучением (overfitting).
Теперь рассмотрим такую ситуацию:
- Ошибка на тренировочной выборке = 15%
- Ошибка на валидационной выборке = 16%
Тогда мы оценим систематическую ошибку в 15% и случайную в 1%. Этот классификатор плохо обучился на тренировочной выборке, при этом его ошибка на валидационной выборке чуть больше, чем на тренировочной. Таким образом этот классификатор имеет большую систематическую ошибку, но маленькую случайную. Можно сделать вывод, что этот алгоритм недообучился (underfitting).
Еще рассмотрим такое распределение ошибок:
- Ошибка на тренировочной выборке = 15%
- Ошибка на валидационной выборке = 30%
В этом случае систематическая ошибка 15% и случайная тоже 15%. У данного классификатора высокие и систематическая и случайные ошибки: он плохо работает на тренировочной выборке, имея высокую систематическую ошибку, и его качество на валидационной выборке намного хуже, чем на тренировочной, т.е. случайная ошибка тоже большая. Данный случай трудно описать в терминах переобучения/недообучения, этот классификатор одновременно и переобучился и недообучился.
И наконец рассмотрим такую ситуацию:
- Ошибка на тренировочной выборке = 0.5%
- Ошибка на валидационной выборке = 1%
Это отлично работающий классификатор, у него низкие и случайная и систематическая ошибки. Поздравим инженеров с достижением прекрасного результата!
22 Сравнение с оптимальной долей ошибок
В нашем примере по распознаванию кошек, идеальной долей ошибок является уровень, доступный «оптимальному» классификатору и этот уровень близок к 0%. Человек, рассматривающий картинку почти всегда способен распознать, присутствует ли на картинке кошка или нет и мы можем надеяться, что рано или поздно машина будет делать это так же хорошо.
Но есть и более сложные задачи. Например, представьте, что вы разрабатываете систему распознавания речи, и обнаружили, что 14% аудио записей имеют столько фонового шума или настолько неразборчивую речь, что даже человек не может разобрать, что там было сказано. В этом случае даже самая «оптимальная» система распознавания речи может иметь ошибку в районе 14%.
Допустим в приведенной задаче по распознаванию речи наш алгоритм достиг следующих результатов:
- Ошибка на тренировочной выборке = 15%
- Ошибка на валидационной выборке = 30%
Качество работы классификатора на тренировочной выборке уже близко к оптимальному, имеющему долю ошибок в 14%. Таким образом, в данном случае у нас не так много возможностей для уменьшения систематической ошибки (улучшения работы алгоритма на тренировочной выборке). Однако, не получается обобщить работу этого алгоритма на валидационную выборку, поэтому есть большое поле для деятельности по уменьшению случайной ошибки.
Этот случай похож на третий пример из предыдущей главы, в которой ошибка на тренировочной выборке так же равна 15% и ошибка на валидационной выборке 30%. Если оптимальная доля ошибки находится около 0%, тогда ошибка на тренировочной выборке в 15% дает большое пространство для работ по улучшению алгоритма. При таком предположении, усилия, направленные на уменьшение систематической ошибки в работе алгоритма могут быть весьма плодотворны. Но если оптимальная доля ошибок классификации не может быть ниже 14%, то аналогичная доля ошибок алгоритма на тренировочной выборке (т. е. в районе 14-15%) говорит о том, что возможности по уменьшению систематической ошибки практически исчерпаны.
Для задач, в которых оптимальная доля ошибок классификации существенно отличается от нуля, можно предложить более подробную структуризацию ошибок. Продолжим рассматривать приведенный выше пример с распознаванием речи, общая ошибка в 30% на валидационной выборке может быть разложена на следующие составные части (таким же образом можно анализировать ошибки на тестовой выборке):
- Оптимальная систематическая ошибка (unavoidable bias): 14%. Представим, мы решили, что даже возможно наилучшая система распознавания речи в мире, будет иметь долю ошибки в 14%. Мы будем говорить об этом, как о «неустранимой» (unavoidable) части систематической ошибки обучающегося алгоритма.
- Устранимая систематическая ошибка (Avoidable bias): 1%. Эта величина рассчитывается как разница между долей ошибки на тренировочной выборке и оптимальной долей ошибки.
замечание автора: Если данная величина получилась отрицательной, таким образом, ваш алгоритм на тренировочной выборке показывает меньшую ошибку, чем «оптимальная». Это означает, что вы переобучились на тренировочной выборке, ваш алгоритм запомнил примеры (и их классы) тренировочной выборки. В этом случае вы должны сосредоточиться на методах уменьшения случайной ошибки, а не на дальнейшем уменьшении систематической ошибки.
- Случайная ошибка (Variance): 15%. Разница между ошибками на тренировочной выборке и на валидационной выборке
Соотнеся это с нашими прежними определениями, систематическая ошибка и устранимая систематическая ошибка связаны следующим образом:
Систематическая ошибка = Оптимальная систематическая ошибка ( «unavoidable bias» ) + устранимая систематическая ошибка ( «avoidable bias» )
замечание автора: Эти определения выбраны для лучшего объяснения, как можно улучшить качество работы обучающегося алгоритма. Эти определения отличаются от формальных определений систематической и случайной ошибок, принятых в статистике. Технически то, что я определяю, как «Систематическая ошибка» следовало бы назвать «ошибкой, которая заложена в структуре данных, (ее нельзя выявить и устранить)» и «Устранимая систематическая ошибка» нужно определить, как «систематическую ошибку обучающегося алгоритма, которая превышает оптимальную систематическую ошибку».
Устранимая систематическая ошибка (avoidable bias) показывает, насколько хуже качество вашего алгоритма на тренировочной выборке, чем качество «оптимального классификатора».замечание автора
Основная идея случайной ошибки (variance) остается прежней. В теории мы всегда можем уменьшить случайную ошибку практически до нуля, тренируясь на достаточно большой тренировочной выборке. Таким образом любая случайная ошибка является «устранимой» (avoidable) при наличие достаточно большой выборки, поэтому не может быть такого понятия, как «неустранимая случайная ошибка» (unavoidable variance).
Рассмотрим еще один пример, в котором оптимальная ошибка составляет 14% и мы имеем:
- Ошибка на тренировочной выборке = 15%
- Ошибка на валидационной выборке = 16%
В предыдущей главе классификатор с такими показателями мы оценивали, как классификатор с высокой систематической ошибкой, в текущих условиях мы скажем, что «устранимая систематическая ошибка» (avoidable bias) составляет 1%, и случайная ошибка составляет порядка 1%. Таким образом, алгоритм уже работает достаточно хорошо и почти нет резервов для улучшения качества его работы. Качество работы данного алгоритма всего на 2% ниже оптимального.
Из этих примеров понятно, что знание величины неустранимой ошибки полезно для принятия решения о дальнейших действиях. В статистике оптимальную долю ошибки называют так же ошибкой Байеса ( Bayes error rate ).
Как узнать размер оптимальной доли ошибки? Для задач, с которыми хорошо справляется человек, таких как распознавание изображений или расшифровка аудио клипов, можно попросить асессоров разметить данные, а потом измерить точность человеческой разметки на тренировочной выборке. Это даст оценку оптимальной доли ошибок. Если вы работаете над проблемой, с которой сложно справиться даже человеку (например, предсказать, какой фильм рекомендовать или какую рекламу показать пользователю), в этом случае довольно тяжело оценить оптимальную долю ошибок.
В разделе «Сравнение с человеческим уровнем качества» (Comparing to Human-Level Performance, главы с 33 по 35), я буду более подробно обсуждать процесс сравнения качества работы обучающегося алгоритма с уровнем качества, которого может достигнуть человек.
В последних главах, вы узнали, как оценивать устранимые / неустранимые систематическую и случайную ошибки, анализируя долю ошибок классификатора на тренировочной и валидационной выборках. В следующей главе будет рассмотрено, как вы можете использовать выводы из такого анализа для принятия решения о том, сконцентрироваться на методах, уменьшающих систематическую ошибку или на методах, которые уменьшают случайную ошибку. Подходы к борьбе с систематической ошибкой сильно отличаются от подходов к уменьшению случайной ошибки, поэтому техники, которые вы должны применять в вашем проекте для улучшения качества, сильно зависят от того, что является проблемой на настоящий момент — высокая систематическая или высокая случайная ошибка.
Читайте дальше!
Продолжение следует...
Автор: alexey_nichnikov