Хабрахабр

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

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

У вашей команды есть несколько идей, как улучшить определитель кошек в вашем приложении:

  • Решить проблему с тем, что ваш алгоритм относит собак к кошкам
  • Решить проблему с тем, что ваш алгоритм распознает больших диких кошек (львов, пантер, т. п.) как домашних
  • Улучшить работу системы на нечетких изображениях

Обычно я создаю специальную таблицу и заполняю ее для примерно 100 случаев ошибочной классификации валидационной (dev) выборки. Можно оценить все эти идеи одновременно. Для иллюстрации этого процесса, давайте рассмотрим сводную таблицу, которую вы могли бы создать из небольшого набора примеров вашей валидационной (dev) выборки Так же я делаю краткие комментарии, которые могут помочь мне вспомнить конкретные примеры в последствие.

Изображение

Собаки

Большие кошки

Нечеткие

Комментарии

1

х

Питбуль необычного цвета

2

3

х

х

Лев; фотография сделана в зоопарке в дождливый день

4

х

Пантера за деревом

Доля (%)

25%

50%

50%

Таким образом, из-за того, что мы можем отнести одно изображение к нескольким категориям ошибок, суммарные проценты в нижней строчке не ограничиваются 100%. Изображение 3 в приведенной таблице относится и к большим кошкам и к нечетким.

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

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

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

Предположим, что вы закончили анализ ошибок из 100 ошибочно классифицированных примеров валидационной выборки и получили следующее:

Изображение

Собаки

Большие кошки

Нечеткие

Комментарии

1

Х

Питбуль необычного цвета

2

Х

3

Х

Х

Лев; фотография сделана в зоопарке в дождливый день

4

Х

Пантера за деревом

Доля (%)

8%

43%

61%

Работа над Большими кошками или над Нечеткими изображениями поможет избавиться от существенно большего количества ошибок. Теперь вы знаете, что работа над проектом по устранению ошибочной классификации собак, как кошек, в лучшем случае устранит 8% ошибок. Если в вашей команде достаточно людей для одновременной работы по нескольким направлениям, вы можете попросить нескольких инженеров заняться большими кошками, сконцентрировав усилия остальных на нечетких изображениях. Поэтому вы можете выбрать одну из этих двух категорий и сфокусироваться на них.

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

Когда я говорю «ошибочно маркированные», я имею ввиду, что изображения уже были неправильно классифицированы при их разметке человеком, прежде чем алгоритм это обнаружил. Производя анализа ошибок, вы можете заметить, что некоторые примеры в вашей валидационной выборке неправильно маркированы (отнесены не к тому классу). Например, предположим некоторые изображения, на которых нет кошек ошибочно размечены, как содержащие кошек и наоборот. То есть при разметке примера (х, у) для у было указано неправильное значение. Если вы подозреваете, что доля ошибочно размеченных примеров значительная, добавьте соответствующую категорию для отслеживания неверно размеченных примеров:

Изображение

Собаки

Большие кошки

Нечеткие

Ошибка в разметке

Комментарии

98

Х

Ошибочно размечена, как имеющая кошку на заднем плане

99

Х

100

Х

Нарисованная кошка (не настоящая)

Доля (%)

8%

43%

61%

6%

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

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

  • Общая точность на валидационной выборке…………..90% (10% общая ошибка)
  • Ошибка, связанная с ошибками разметки……………..0.6% (6% от общей ошибки на валидационной выборке)
  • Ошибка, связанная с другими причинами………...9.4% (94% от общей ошибки на валидационной выборке)

6% в следствии неправильной маркировки может быть недостаточно значительной по отношению к 9. Здесь, погрешность в 0. Ручное исправление ошибок разметки валидационной выборки не будет лишним, но ее исправление не является критически важным так как не принципиально, составляет ли реальная общая ошибка вашей системы 9. 4% ошибки, которые вы могли бы улучшить. 4% или 10%

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

  • Общая точность на валидационной выборке…………..98% (2% общая ошибка)
  • Ошибка, связанная с ошибками разметки……………..0.6% (30% от общей ошибки на валидационной выборке)
  • Ошибка, связанная с другими причинами………...1.4% (70% от общей ошибки на валидационной выборке)

В данном случае стоит заняться улучшением разметки валидационной выборки. 30% вашей ошибки приходится на неправильную маркировку изображений валидационной выборки, эта доля вносит весомый вклад в общую ошибку при оценке точности вашей системы. 4% или к 2%. Устранение неверно размеченных примеров поможет вам выяснить к чему ближе ошибки вашего классификатора к 1. 4 и 2 значительная относительная разница. Между 1.

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

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

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

Проверьте как разметку примеров, которые ваши система классифицировала неправильно, так и разметку примеров, которые классифицируются правильно. Если вы решили улучшить качество разметки, рассмотрите возможность двойной проверки. Если вы исправите только разметку тех примеров, на которых ваша система ошиблась в классификации, вы можете привнести систематическую ошибку в вашу оценку. Возможно, что оба и первоначальная разметка и ваш обучающийся алгоритм ошиблись на одном и том же примере. 0%, проще проверить 20 примеров, которые были классифицированы неправильно, чем 980 правильно классифицированных примеров. Если вы возьмете 1000 примеров валидационной выборки, и если ваш классификатор показывает точность 98. Такая ошибка допустима, если вы заинтересованы только в разработке приложений, но это будет проблемой, если вы планируете использовать ваш результат в академической исследовательской статье или нуждаетесь в измерениях точности работы алгоритма на тестовой выборке полностью освобожденных от систематической ошибки. Из-за того, что на практике проще проверить только неправильно классифицированные примеры, в некоторых случаях в валидационные выборки может закрасться систематическая ошибка.

Таким образом, ваш алгоритм неправильно классифицирует порядка 1000 валидационных изображений. Предположим у вас большая валидационная выборка, состоящая из 5000 примеров на которых доля ошибок составляет 20%. Ручная оценка 1000 изображений потребует долгого времени, поэтому мы можем решить не использовать их всех для целей анализа ошибок.

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

eye

Представьте, что вы хотите взять 100 ошибок для анализа (10% от всех ошибок валидационной выборки). Давайте продолжим наш пример, описанный выше, в котором алгоритм неправильно классифицировал 1000 примеров из 5000 составляющих валидационную выборку. Нужно случайным образом выбрать 10% примеров из валидационной выборки и составить из них «Валидационную выборку глазного яблока » (​ Eyeball dev set), мы их так назвали для того, чтобы все время помнить, что мы изучаем эти примеры при помощи собственных глаз.

Но при всем уважении к Эндрю (и принимая во внимание, что ничего лучше я не придумал), оставлю это опредление Замечание переводчика: с моей точки зрения определение «выборка глазного яблока» звучит совсем не благозвучно (особенно с точки зрения русского языка).

Таким образом Валидационная выборка глазного яблока состоит из 500 примеров, в которых должно быть порядка 100 неправильно классифицированных. (Для проекта по распознаванию речи, в котором вы будете прослушивать аудио клипы, возможно вы бы вместо этого названия использовали что-то вроде «валидационная выборка для ушей»). Вы можете использовать «Подвыборку черного ящика» для автоматической оценки качества работы классификаторов, измеряя по ней их доли ошибок. Вторая подвыборка валидационной выборки, которую мы назовем Валидационной выборкой черного ящика (Blackbox dev set), будет состоять из 4500 примеров. Однако, вы должны избегать рассмотрения примеров этой подвыборки вашими глазами. Вы так же можете использовать эту подвыборку для выбора между алгоритмами или для настройки гиперпараметров. переводчика: т. Мы используем термин «Черный ящик» потому что мы будем использовать подвыборку, его составляющую, как «черный ящик»
прим. Объект структура которого нам не известна для оценки качества классификаторов. е.

image

Поскольку с какого-то момента вы будете все лучше чувствовать (понимать) примеры в «Подвыборке глазного яблока», повысится вероятность, что вы переобучитесь на этой подвыборке. Зачем мы явно разделяем валидационную выборку на «Подвыборку глазного яблока» и «Подвыборку черного ящика»? Если вы видите, что качество алгоритмов на «Выборке глазного яблока» растет существенно быстрее, чем производительность на «Выборке Черного ящика», по-видимому вы переобучились на «Глазном яблоке». Для отслеживания этого переобучения вам поможет «Подвыборка черного ящика». В таком случае вам возможно потребуется отбросить имеющуюся подвыборку «Глазного яблока» и создать новую, перенеся больше примеров из «Черного ящика» в «Глазное яблоко» или взяв новую порцию размеченных данных.

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

Теги
Показать больше

Похожие статьи

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть