15 Одновременная оценка нескольких идей во время анализа ошибок
У вашей команды есть несколько идей, как улучшить определитель кошек в вашем приложении:
- Решить проблему с тем, что ваш алгоритм относит собак к кошкам
- Решить проблему с тем, что ваш алгоритм распознает больших диких кошек (львов, пантер, т. п.) как домашних
- Улучшить работу системы на нечетких изображениях
- …
Можно оценить все эти идеи одновременно. Обычно я создаю специальную таблицу и заполняю ее для примерно 100 случаев ошибочной классификации валидационной (dev) выборки. Так же я делаю краткие комментарии, которые могут помочь мне вспомнить конкретные примеры в последствие. Для иллюстрации этого процесса, давайте рассмотрим сводную таблицу, которую вы могли бы создать из небольшого набора примеров вашей валидационной (dev) выборки
Изображение | Собаки | Большие кошки | Нечеткие | Комментарии |
---|---|---|---|---|
1 | х | Питбуль необычного цвета | ||
2 | ||||
3 | х | х | Лев; фотография сделана в зоопарке в дождливый день | |
4 | х | Пантера за деревом | ||
Доля (%) | 25% | 50% | 50% |
Изображение 3 в приведенной таблице относится и к большим кошкам и к нечетким. Таким образом, из-за того, что мы можем отнести одно изображение к нескольким категориям ошибок, суммарные проценты в нижней строчке не ограничиваются 100%.
Несмотря на то, что в начале работы вы можете сформировать определенный набор категорий для ошибок (Собаки, Большие кошки, Нечеткие изображения) в процессе ручного отнесения ошибок классификации к этим категориям, возможно вы решите добавить новые типы ошибок. Например, предположим, вы рассмотрели дюжину изображений и решили, что много ошибок сделаны классификатором на изображениях из Инстаграмма, на которые наложены цветовые фильтры. Вы можете переделать таблицу, добавить в нее столбец «Инстаграмм» и заново классифицировать ошибки с учетом этой категории. Рассматривая вручную примеры, на которых ошибается алгоритм и задавая себе вопрос как вы, как человек, смогли правильно разметить изображение, вы сможете увидеть новые категории ошибок и, возможно, вдохновиться на поиск новых решений.
Наиболее полезными категориями ошибок будут те, по которым у вас есть идея для улучшения системы. Например, добавление категории «Инстаграмм» будет наиболее полезным, если у вас есть идея, как убрать фильтры и восстановить изначальное изображение. Но вы не должны ограничивать себя только теми категориями ошибок, для которых у вас есть рецепт их устранения; целью процесса анализа ошибок является развитие вашей интуиции при выборе наиболее перспективных направлений сосредоточения усилий.
Анализ ошибок это итеративный процесс. Не переживайте, если вы его начнете, не придумав ни одной категории. После просмотра пары изображений, у вас появятся несколько идей для категоризации ошибок. После ручной категоризации нескольких изображений, возможно, вам захочется добавить новые категории и пересмотреть ошибки классификации в свете вновь добавленных категорий и так далее.
Предположим, что вы закончили анализ ошибок из 100 ошибочно классифицированных примеров валидационной выборки и получили следующее:
Изображение | Собаки | Большие кошки | Нечеткие | Комментарии |
---|---|---|---|---|
1 | Х | Питбуль необычного цвета | ||
2 | Х | |||
3 | Х | Х | Лев; фотография сделана в зоопарке в дождливый день | |
4 | Х | Пантера за деревом | ||
… | … | … | … | … |
Доля (%) | 8% | 43% | 61% |
Теперь вы знаете, что работа над проектом по устранению ошибочной классификации собак, как кошек, в лучшем случае устранит 8% ошибок. Работа над Большими кошками или над Нечеткими изображениями поможет избавиться от существенно большего количества ошибок. Поэтому вы можете выбрать одну из этих двух категорий и сфокусироваться на них. Если в вашей команде достаточно людей для одновременной работы по нескольким направлениям, вы можете попросить нескольких инженеров заняться большими кошками, сконцентрировав усилия остальных на нечетких изображениях.
Анализ ошибок не дает жесткой математической формулы, указывающей вам какой задаче необходимо назначить самый высокий приоритет. Вы также должны соотносить прогресс, получаемый в результате работы над различными категориями ошибок и усилия, которые необходимо затратить на эту работу.
16 Очистка валидационной и тестовой выборок от неправильно маркированных примеров
Производя анализа ошибок, вы можете заметить, что некоторые примеры в вашей валидационной выборке неправильно маркированы (отнесены не к тому классу). Когда я говорю «ошибочно маркированные», я имею ввиду, что изображения уже были неправильно классифицированы при их разметке человеком, прежде чем алгоритм это обнаружил. То есть при разметке примера (х, у) для у было указано неправильное значение. Например, предположим некоторые изображения, на которых нет кошек ошибочно размечены, как содержащие кошек и наоборот. Если вы подозреваете, что доля ошибочно размеченных примеров значительная, добавьте соответствующую категорию для отслеживания неверно размеченных примеров:
Изображение | Собаки | Большие кошки | Нечеткие | Ошибка в разметке | Комментарии |
---|---|---|---|---|---|
… | … | … | … | … | … |
98 | Х | Ошибочно размечена, как имеющая кошку на заднем плане | |||
99 | Х | ||||
100 | Х | Нарисованная кошка (не настоящая) | |||
Доля (%) | 8% | 43% | 61% | 6% |
Нужно ли исправлять неверную размеченные данные в вашей валидационной выборке? Напомню, что задачей использования валидационной выборки является помощь вам в быстрой оценке алгоритмов, чтобы вы могли решить, является ли алгоритм А лучше, чем В. Если доля валидационной выборки, которая размечена неправильно, мешает вам сделать такое суждение, тогда имеет смысл потратить время для исправления ошибок в разметке валидационной выборке.
Например, представьте, что точность, которую показывает ваш классификатор следующая:
- Общая точность на валидационной выборке…………..90% (10% общая ошибка)
- Ошибка, связанная с ошибками разметки……………..0.6% (6% от общей ошибки на валидационной выборке)
- Ошибка, связанная с другими причинами………...9.4% (94% от общей ошибки на валидационной выборке)
Здесь, погрешность в 0.6% в следствии неправильной маркировки может быть недостаточно значительной по отношению к 9.4% ошибки, которые вы могли бы улучшить. Ручное исправление ошибок разметки валидационной выборки не будет лишним, но ее исправление не является критически важным так как не принципиально, составляет ли реальная общая ошибка вашей системы 9.4% или 10%
Предположим, вы улучшаете кошачий классификатор и достигли следующих показателей точности:
- Общая точность на валидационной выборке…………..98% (2% общая ошибка)
- Ошибка, связанная с ошибками разметки……………..0.6% (30% от общей ошибки на валидационной выборке)
- Ошибка, связанная с другими причинами………...1.4% (70% от общей ошибки на валидационной выборке)
30% вашей ошибки приходится на неправильную маркировку изображений валидационной выборки, эта доля вносит весомый вклад в общую ошибку при оценке точности вашей системы. В данном случае стоит заняться улучшением разметки валидационной выборки. Устранение неверно размеченных примеров поможет вам выяснить к чему ближе ошибки вашего классификатора к 1.4% или к 2%. Между 1.4 и 2 значительная относительная разница.
Не редко бывает так, что неверно размеченные изображения валидационной или тестовой выборки начинают обращать на себя ваше внимание только после того, как ваша система улучшится настолько, что доля ошибки, связанная с неправильными примерами, вырастит относительно общей ошибки на этих выборках.
Последующая глава объясняет, как вы можете улучшить категории ошибок, таких как Собаки, Большие кошки и Нечеткие в процессе работы над улучшением алгоритмов. В этой главе вы узнали, что вы можете уменьшать ошибку, связанную с категорией «Ошибки в разметке» и повышать качество путем улучшения разметки данных.
Независимо от того, какой подход вы примените для разметки валидационной выборки, не забудьте применить его же к разметке тестовой выборки, таким образом ваша валидационная и тестовая выборки будут иметь одно и тоже распределение. Применяя один и тот же подход к валидационной и тестовой выборкам вы предупредите проблему, которую мы обсуждали в Главе 6, когда ваша команда оптимизирует качество работы алгоритма на валидационной выборке, и позднее понимает, что это качество оценивалось на базе отличающейся от валидационной тестовой выборки.
Если вы решили улучшить качество разметки, рассмотрите возможность двойной проверки. Проверьте как разметку примеров, которые ваши система классифицировала неправильно, так и разметку примеров, которые классифицируются правильно. Возможно, что оба и первоначальная разметка и ваш обучающийся алгоритм ошиблись на одном и том же примере. Если вы исправите только разметку тех примеров, на которых ваша система ошиблась в классификации, вы можете привнести систематическую ошибку в вашу оценку. Если вы возьмете 1000 примеров валидационной выборки, и если ваш классификатор показывает точность 98.0%, проще проверить 20 примеров, которые были классифицированы неправильно, чем 980 правильно классифицированных примеров. Из-за того, что на практике проще проверить только неправильно классифицированные примеры, в некоторых случаях в валидационные выборки может закрасться систематическая ошибка. Такая ошибка допустима, если вы заинтересованы только в разработке приложений, но это будет проблемой, если вы планируете использовать ваш результат в академической исследовательской статье или нуждаетесь в измерениях точности работы алгоритма на тестовой выборке полностью освобожденных от систематической ошибки.
17 Если у вас большая валидационная выборка, разделите ее на две подвыборки, и рассматривайте только одну из них
Предположим у вас большая валидационная выборка, состоящая из 5000 примеров на которых доля ошибок составляет 20%. Таким образом, ваш алгоритм неправильно классифицирует порядка 1000 валидационных изображений. Ручная оценка 1000 изображений потребует долгого времени, поэтому мы можем решить не использовать их всех для целей анализа ошибок.
В этом случае, я бы однозначно разделил валидационную выборку на две подвыборки, за одной из которых вы будете наблюдать, а за другой нет. Вы скорее переобучатись на той части, которую вы будете вручную анализировать. Вы можете использовать ту часть, которую вы не не используете для ручного анализа, для настройки параметров моделей.
Давайте продолжим наш пример, описанный выше, в котором алгоритм неправильно классифицировал 1000 примеров из 5000 составляющих валидационную выборку. Представьте, что вы хотите взять 100 ошибок для анализа (10% от всех ошибок валидационной выборки). Нужно случайным образом выбрать 10% примеров из валидационной выборки и составить из них «Валидационную выборку глазного яблока » ( Eyeball dev set), мы их так назвали для того, чтобы все время помнить, что мы изучаем эти примеры при помощи собственных глаз.
Замечание переводчика: с моей точки зрения определение «выборка глазного яблока» звучит совсем не благозвучно (особенно с точки зрения русского языка). Но при всем уважении к Эндрю (и принимая во внимание, что ничего лучше я не придумал), оставлю это опредление
(Для проекта по распознаванию речи, в котором вы будете прослушивать аудио клипы, возможно вы бы вместо этого названия использовали что-то вроде «валидационная выборка для ушей»). Таким образом Валидационная выборка глазного яблока состоит из 500 примеров, в которых должно быть порядка 100 неправильно классифицированных. Вторая подвыборка валидационной выборки, которую мы назовем Валидационной выборкой черного ящика (Blackbox dev set), будет состоять из 4500 примеров. Вы можете использовать «Подвыборку черного ящика» для автоматической оценки качества работы классификаторов, измеряя по ней их доли ошибок. Вы так же можете использовать эту подвыборку для выбора между алгоритмами или для настройки гиперпараметров. Однако, вы должны избегать рассмотрения примеров этой подвыборки вашими глазами. Мы используем термин «Черный ящик» потому что мы будем использовать подвыборку, его составляющую, как «черный ящик»
прим. переводчика: т. е. Объект структура которого нам не известна для оценки качества классификаторов.
Зачем мы явно разделяем валидационную выборку на «Подвыборку глазного яблока» и «Подвыборку черного ящика»? Поскольку с какого-то момента вы будете все лучше чувствовать (понимать) примеры в «Подвыборке глазного яблока», повысится вероятность, что вы переобучитесь на этой подвыборке. Для отслеживания этого переобучения вам поможет «Подвыборка черного ящика». Если вы видите, что качество алгоритмов на «Выборке глазного яблока» растет существенно быстрее, чем производительность на «Выборке Черного ящика», по-видимому вы переобучились на «Глазном яблоке». В таком случае вам возможно потребуется отбросить имеющуюся подвыборку «Глазного яблока» и создать новую, перенеся больше примеров из «Черного ящика» в «Глазное яблоко» или взяв новую порцию размеченных данных.
Таким образом разбиение валидационной выборки на «Подвыборку глазного яблока» и «Подвыборку черного ящика» позволяет вам увидеть момент, когда процесс ручного анализа ошибок приведет вас к переобучению на подвыборке глазного яблока.
Автор: alexey_nichnikov