Pull to refresh

Перевод книги Эндрю Ына «Страсть к машинному обучению» Главы 20 — 27

Reading time15 min
Views14K

предыдущие главы


20 Смещение и разброс: Два основных источника ошибок


замечание переводчика До изменения, данная глава называлась "Систематические и случайные: Два основных источника ошибок", т. е. я использовал термины "случайной ошибки" и "систематической ошибки" для перевода bias и variance. Однако, форумчанин робот@Phaker в комментарии справедливо заметил, что в области машинного обучения в русскоязычной терминологии для данных терминов закрепляются понятия "смещение" и "разброс". Я посмотрел работы К.В. Воронцова, который заслужено является одним из авторитетов в области машинного обучения в России и ресурсы профессионального сообщества, и согласился с замечанием робот@Phaker. Несмотря на то, что с моей точки зрения, между "смещением" (bias) и "разбросом" (variance) при обучении алгоритмов и "систематической ошибкой" и "случайной ошибкой" физического эксперимента существует глубокая содержательная аналогия, кроме того они одинаково выражаются математически, все же правильно использовать устоявшиеся в данной области термины. Поэтому я переработал перевод данной и последующих глав, заменив "Систематическую и Случайные ошибки" на "Смещение и Разброс" и буду придерживаться этого подхода в дальнейшем.


Предположим, ваша тренировочная, валидационная и тестовая выборки имеют одно и то же распределение. Тогда нужно брать больше данных для обучения, это только улучшит качество работы алгоритма, верно ли это?


Несмотря на то, что получение большего количества данных не может повредить работе, к сожалению, новые данные не всегда помогают настолько, насколько можно ожидать. В некоторых случаях работа по получению дополнительных данных может оказаться пустой тратой усилий. Как принять решение — в каких случаях добавлять данные, а когда не стоит об этом беспокоиться.


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


Предположим, вы надеетесь построить кошачий распознователь, имеющий 5% ошибок. На текущий момент ошибка вашего классификатора на тренировочной выборке 15%, на валидационной выборке 16%. В таком случае добавление тренировочных данных вряд ли поможет существенно увеличить качество. Вы должны сконцентрироваться на других изменениях системы. В действительности, добавление большего количества примеров в вашу тренировочную выборку только усложнит для вашего алгоритма получение хорошего результата на этой выборке (почему так получается будет объяснено в следующих главах).


Если доля ваших ошибок на тренировочной выборке составляет 15% (что соответствует точности 85%), но вашей целью является доля ошибок в 5% (95% точность), тогда прежде всего нужно улучшить качество работы вашего алгоритма на тренировочной выборке. Качество работы алгоритма на валидационной / тестовой выборках обычно хуже, чем качество его работы на выборке для обучения (на тренировочной выборке). Нужно понимать, что те подходы, которые привели вас к точности, не превышающей 85% на примерах, с которыми ваш алгоритм знаком, не позволят получить точность в 95% на примерах, которые этот алгоритм даже не видел.


Предположим, как указано выше, доля ошибок вашего алгоритма составляет 16% (точность составляет 84%) на валидационной выборке. Мы должны разбить ошибку в 16% на два компонента:


  • Первый, доля ошибок алгоритма на тренировочной выборке. В данном примере это 15%. Мы неофициально называть его смещением (bias).
  • Второй, насколько хуже алгоритм работает на валидационной (или тестовой) выборке, чем на тренировочной. В нашем примере, на 1% хуже на валидационной выборке, чем на тренировочной. Будем так же неофициально считать его разбросом (variance) алгоритма.

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


Некоторые изменения при обучении алгоритма влияют на первый компонент ошибки — на смещение ( 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%. Разница между ошибками на тренировочной выборке и на валидационной выборке

Соотнеся это с нашими прежними определениями, смещение и устранимое смещение связаны следующим образом:


Смещение (bias) = Оптимальное смещение ( «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), я буду более подробно обсуждать процесс сравнения качества работы обучающегося алгоритма с уровнем качества, которого может достигнуть человек.


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


Читайте дальше!


23 Устранение смещения и разброса


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


  • Если у вас большое устранимое смещение (avoidable bias), увеличьте сложность вашей модели (например, увеличьте вашу нейронную сеть, добавив слоев или (и) нейронов)
  • Если у вас большой разброс, добавьте примеров в вашу тренировочную выборку

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


На практике увеличение размера модели в конечном счете вызовет вычислительные сложности, так как обучение очень больших моделей происходит медленно. Также вы можете исчерпать лимит доступных для обучения данных. (Даже во всем Интернете количество изображений с кошками конечно!)


Различные архитектуры моделей алгоритмов, например, различные архитектуры нейронных сетей, будут давать различные значения для смещения и разброса, применительно к вашей задаче. Вал недавних исследований в области глубинного обучения позволил создать большое количество инновационных архитектур моделей нейронных сетей. Таким образом, если вы используете нейронные сети, научная литература может быть прекрасным источником для вдохновения. Также имеется большое количество отличных реализаций алгоритмов в открытых источниках, например на GitHub. Однако, результаты попыток использовать новые архитектуры существенно менее предсказуемые, чем приведенная выше простая формула — увеличивайте размер модели и добавляйте данные.


Увеличение размера модели обычно уменьшает смещение, но оно же может вызвать увеличение разброса, также возрастает риск переобучения. Однако, проблема переобучения встает только тогда, когда вы не используете регуляризацию. Если включить хорошо спроектированный метод регуляризации в модель, обычно удается безопасно увеличить размер модели, не допустив переобучения.


Предположим, вы применяете глубокое обучение, используя L2 регуляризацию или dropout (Замечание переводчика: про Dropout можно почитать, например, здесь: https://habr.com/company/wunderfund/blog/330814/), используя параметры регуляризации, безупречно работающие на валидационной выборке. Если вы увеличите размер модели, обычно качество работы вашего алгоритма остается таким же или вырастает; его существенное снижение маловероятно. Единственная причина, из-за которой приходится отказываться от увеличения размера модели — большие вычислительные издержки.


24 Компромисс между смещением и разбросом


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


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


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


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


Если удачно подобрать архитектуру модели, хорошо соответствующую задаче, можно одновременно уменьшить и смещение и разброс. Но выбор такой архитектуры может оказаться сложной задачей.


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


25 Подходы к уменьшению устранимого смещения


Если ваш обучающийся алгоритм страдает большим устранимым смещением, вы можете попробовать следующие подходы:


  • Увеличение размеров модели (такие, как количество нейронов и слоев): этот подход уменьшает смещение, таким образом у вас появляется возможность лучше подгонять алгоритм к тренировочной выборке. Если вы обнаружили, что при этом увеличивается разброс, используйте регуляризацию, которая обычно устраняет увеличение разброса.
  • Модифицируйте входящие признаки, основываясь на идеях, пришедших при анализе ошибок. Предположим анализ ошибок побудил вас создать новые дополнительные признаки, которые помогают алгоритму избавиться от определенной категории ошибок (в следующих главах мы обсудим этот аспект). Эти новые признаки могут помочь как со смещением, так и с разбросом. В теории добавление новых признаков может увеличить разброс; но если такое случится, вы всегда можете использовать регуляризацию, которая, как правило, помогает справиться с увеличением разброса.
  • Уменьшение или отказ от регуляризации (L2 регуляризация, L1 регуляризация, Dropout): этот подход уменьшает устранимое смещение, однако, приводит к росту разброса.
  • Модификация архитектуры модели (например, архитектуры нейронной сети) чтобы она больше подходила для вашей задачи: Этот подход влияет как на разброс, так и на смещение

Один не очень полезный метод:


  • Добавление данных в тренировочную выборку: Этот подход помогает уменьшать разброс, но обычно не оказывает существенного воздействия на смещение.

26 Анализ ошибок на тренировочной выборке


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


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


Например, предположим вы разрабатываете систему распознавания речи для какого-то приложения и собрали тренировочную выборку аудио клипов от волонтеров. Если ваша система не работает хорошо на тренировочной выборке, вы можете рассмотреть возможность прослушивания набора, состоящего из 100 примеров, на которых алгоритм отработал плохо для того, чтобы понять основные категории ошибок на тренировочной выборке. Аналогично анализу ошибок на валидационной выборке, вы можеет посчитать ошибки в разрезе категорий:


Аудио клип Громкий фоновый шум Пользователь говорил слишком быстро Слишком далеко от микрофона Комментарии
1 Х Шум от автомобиля
2 Х Х Ресторанный шум
3 Х Х Пользователь кричит через комнату
4 Х Шум кафе
% от общего кол-ва 75% 25% 50%

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


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


27 Подходы к уменьшению разброса


Если ваш алгоритм страдает от большого разброса, вы можете попробовать следующие подходы:


  • Добавить больше данных в тренировочную выборку: Это наиболее простой и реализуемый путь к уменьшению разброса, он работает до тех пор, пока у вас есть возможность существенно увеличивать количество используемых данных и имеется достаточно вычислительных мощностей для их обработки.
  • Добавить регуляризацию (L1 регуляризация, L2 регуляризация, dropout): этот подход уменьшает разброс, но увеличивает смещение.
  • Добавить раннюю остановку (т. е. остановить градиентный спуск раньше, базируясь на значении ошибки на валидационной выборке): Эта техника уменьшает разброс, но увеличивает смещение. Ранняя остановка сильно напоминает метод регуляризации, поэтому некоторые авторы относят ее к регуляризации.
  • Отбор признаков для уменьшения количества/типов входящих признаков: Этот подход может помочь с проблемой разброса, но также может увеличить смещение. Незначительное уменьшение количества признаков (скажем, с 1000 признаков до 900) вряд ли окажет большой эффект на смещение. Существенное уменьшение (скажем от 1000 признаков до 100 или 10 кратное уменьшение) более вероятно окажет существенный эффект, эффект будет увеличиваться до тех пор, пока вы не исключите слишком много полезных признаков. В современном глубинном обучении, когда данных много, происходит отход от тщательного отбора признаков, и сегодня мы скорее всего возьмем все признаки, которые у нас есть и будем на них обучать алгоритм, давая возможность алгоритму самому решить, какие из них использовать, базируясь на большом количестве обучающих примеров. Однако, если ваша тренировочная выборка маленькая, отбор признаков может оказаться очень полезным.
  • Уменьшение размера (сложности) модели (такие как количество нейронов / слоев). Используйте с осторожностью! Этот подход может уменьшить разброс и одновременно, возможно, увеличит смещение. Однако, я бы не стал рекомендовать этот подход для уменьшения разброса. Добавление регуляризации обычно приводит к лучшему качеству классификации. Преимуществом уменьшения размера модели является уменьшение вашей потребности в вычислительных мощностях и таким образом ускоряется процесс тренировки моделей. Если увеличение скорости тренировки моделей будет полезным, тогда нужно рассмотреть вариант с уменьшением размера модели. Однако, если вашей задачей является только уменьшение разброса и вы не испытываете дефицита вычислительных мощностей, лучше рассмотреть возможности дополнительной регуляризации.

Здесь я привожу два дополнительных тактических приема, повторяя сказанное в предыдущих главах, применительно к уменьшению смещения:


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

продолжение

Tags:
Hubs:
Total votes 18: ↑17 and ↓1+16
Comments3

Articles