Pull to refresh

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

Reading time3 min
Views1.7K
Original author: Andrew Ng

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


Анализ ошибок по частям


53. Анализ ошибок по частям


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


Давайте вернемся к нашему примеру классификатора сиамских кошек:



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


Применение анализа ошибок по частям, подразумевает, что мы пытаемся для каждой ошибки определить, следствием работы какого модуля (или иногда нескольких) составной системы она является. Например, система неправильно определяет, что на изображении нет сиамского кота (y = 0), несмотря на то, что он на ней изображен и правильная метка y = 1.


image!


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


image


Это означает, что классификатор породы пытается определить породу по фрагменту:


image


В этом случае классификатор породы правильно классифицирует это изображение, как не содержащее сиамскую кошку. Классификатору на вход поступила куча камней и он справедливо присвоил ей класс y = 0. Если бы человека попросили найти на этой картинке сиамского кота, он бы тоже уверено ответил, что его там нет и присвоил бы этому изображению класс y = 0. Таким образом, можно четко отнести эту ошибку к результату работы детектора кошек. Обратный пример, детектор кошек выбрал следующий фрагмент, как содержащий кошку:


image


в этом случае детектор кошек справился с работой, в отличие от «определителя породы». Допустим, вы проанализировали 100 неправильно классифицированных изображений из валидационной выборки и обнаружили, что 90 ошибок допущены детектором кошек, и только 10 «определителем породы». Исходя из этого результата можно обоснованно сконцентрироваться на улучшении «детектора кошек».


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


54. Соотнесение ошибок с модулем «конвейера»


Продолжим рассматривать наш пример:


image


Пусть наш детектор кошек выдал вот такой фрагмент:


image


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


image


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


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


1. В нашем примере нужно заменить фрагмент, который вырезает детектор кошек на фрагмент, вырезанный вручную



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


Другими словами, проводится эксперимент, в котором «определителю породы» на вход подается «идеальный» фрагмент.


Рассмотрим оба возможных варианта:


  • Случай 1: Даже получив «идеальный» фрагмент, «определитель породы» по-прежнему неправильно выдает y = 0. В этом случае, очевидно, проблема с классификатором породы кошек.
  • Случай 2: на идеально вырезанном фрагменте «классификатор породы» правильно возвращает y = 1. Таким образом, если бы детектор кошек дал более качественный фрагмент, то общий вывод системы был бы правильным. В этом случае приписываем ошибку «детектору кошек».

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


продолжение

Tags:
Hubs:
Total votes 3: ↑3 and ↓0+3
Comments0

Articles