55. Общий случай отнесения ошибок к компоненту комплексной системы
Ниже будут приведена последовательность шагов для соотнесения ошибок комплексной системы с ее конкретным модулем. Рассмотрим конвейер, состоящий из трех элементов A, B и C, где результат работы компонента A передается на вход B, а результат B на вход C.
Для каждой ошибки системы на валидационной выборке нужно проделать следующее:
- Попытаться вручную сформировать «идеальный» выходной сигнал из компонента A (например, «идеальный» фрагмент изображения кошки), и запустить модули B, C, подав им на вход «идеальный» результат компонента А. Если система теперь дает правильный результат, это означает, что выполни модуль A свою работу более качественно, общий вывод системы был бы правильным; таким образом, припишем эту ошибку компоненту А. Если система продолжает выдавать ошибку, то переходим к шагу 2.
- Нужно вручную изменить выход модуля B, сделав его «идеальным». Если алгоритм теперь дает правильный вывод, то приписываем ошибку этому модулю. В противном случае перейдите к шагу 3.
- Приписать ошибку компоненту C.
Теперь более сложный пример:
Автономный автомобиль управляется этим «конвейером». Как в этом случае произвести анализ ошибок по частям и выбрать модуль (модули) для приложения усилий?
Давайте обозначим модули системы следующим образом:
A: детектор автомобилей
B: детектор пешеходов
C: планировщик траектории
Применим описанную процедуру к этому случаю. Предположим, что во время тестового заезда на закрытом полигоне, появляется ситуация, когда автономная система слишком резко меняет направление движения автомобиля, не так, как это делает опытный водитель. У разработчиков систем автономного вождения такие ситуации обычно называют сценариями. В этом случае нужно сделать следующее:
- Вручную изменить вывод модуля A (детектора автомобилей), сделав его «идеальным» (например, войти в систему и прямо указать, где находятся другие автомобили). После этого запустить компоненты B, C, как и раньше, но на C (планировщик траектории) подать «идеально обнаруженные автомобили», вместо реального результата работы модуля A. Если теперь система планирует путь гораздо лучше, то это означает, что, если бы модуль A отработал качественнее, общий выход системы был бы лучше; Таким образом, нужно приписать эту ошибку компоненту А. В противном случае (проблема не исчезла) перейти к шагу 2.
- Идеально разметить пешеходов (вывод модуля B ), и подать на вход модулю С. Если система теперь работает так, как мы от нее ожидаем, то приписать ошибку модулю B. В противном случае перейдите к шагу 3.
- Приписать ошибку модулю C.
Компоненты конвейера системы машинного обучения нужно упорядочивать в соответствии с направленным ациклическим графом (DAG), что означает, что они должны отрабатывать в некотором фиксированном порядке слева направо, при этом следующий в графе компонент (компоненты) должен получать на вход только выходной сигнал более раннего компонента (компонентов). Пока можно представить порядок действия системы в виде A -> B -> C, что соответствует DAG, с анализом ошибок системы сложностей не возникнет. Если анализировать нашу систему в другой последовательности, поменяв местами А и В :
A: Детектор пешеходов (ранее было Детектор автомобилей)
B: Детектор автомобилей (ранее было Детектор пешеходов)
C: планировщик траектории
То результаты тестирования немного изменятся, но они останутся актуальными и все равно дадут хорошее понимание того, на чем нужно сосредоточить усилия.
56. Анализ ошибок комплексной обучающейся системы и сравнение с человеческим качеством
Анализ ошибок, совершаемых обучающимся алгоритмом, так же как использование науки о данных (data science) при анализе ошибок систем машинного обучения, производится для того, чтобы получить информацию, позволяющую наметить дальнейшие шаги в работе. По сути, анализ, раскладывающий ошибки сложной системы на ее компоненты, говорит нам, на каком элементе нужно сконцентрировать усилия для максимального повышения качества работы всей системы.
Рассмотрим сервис покупок на веб-сайте. Исследователю (data scientist) доступно много разных подходов к анализу данных. В результате анализа он может делать разнообразные выводы. Например, к чему приведет повышение цен на товары, о влиянии различных маркетинговых кампаний на доход, получаемый с клиента в течение всего времени пользования сайтом (lifetime value) и так далее. Из анализа данных можно извлечь гигантское количество полезных идей и не существует одного «правильного» подхода к работе с данными. Точно так же не существует единственного «правильного» способа проведения анализа ошибок. В этой книге собраны многие из наиболее распространенных подходов к диагностике разрабатываемой системы машинного обучения, но полного перечня таких подходов не существует и вы можете свободно экспериментировать и находить другие эффективные способы анализа ошибок, позволяющие совершенствовать обучаемые системы.
Давайте вернемся к разработке системы автономного вождения, в которой на выходе «детектора автомобилей» местоположение (и, возможно, скорость) ближайших автомобилей, а «детектора пешеходов» местоположение пешеходов. Эти два выхода поступают на вход «планировщика траектории», который определяет направление маневра автомобиля.
Для отладки этой системы, вместо строгого следования процедуре, описанной в предыдущей главе, можно подойти более неформально, задав следующие вопросы:
- Насколько «детектор автомобилей» хуже человека справляется с обнаружением других машин?
- Насколько «Детектор пешеходов» уступает способности человека видеть пешеходов?
- Насколько общее качество вождения системы отличается от человеческого качества управления автомобилем? Здесь человек должен управлять автомобилем, получая только выходные данные из двух предыдущих компонентов конвейера (а не изображения с камеры). Другими словами, необходимо сравнить решения, принимаемые компонентом «Планировщик траектории» с решениями человека, когда последний имеет на входе ту же информацию, что и «Планировщик».
Если при ответе на эти вопросы, становится ясно, что один из модулей системы справляется со своей задачей много хуже человека, то это хорошая подсказка к тому, чтобы сосредоточить свои усилия на повышении качества работы этого модуля.
Во многих случаях, когда нужно автоматизировать задачи, решаемые людьми, лучшим подходом к анализу ошибок может оказаться сравнение качества работы системы с качеством человека. Большинство предыдущих примеров исходили из этого неявного предположения. Если разрабатывается система машинного обучения, конечный результат работы которой или результаты ее промежуточных компонент превосходят возможности человека, то некоторые из описанных в этой книге подходов будут не применимы.
В этом заключается еще одно преимущество работы над автоматизацией задач, решаемых людьми — появляются мощные инструменты анализа ошибок, позволяющие более эффективно расставлять приоритеты в работе команды.
57. Неустранимые дефекты комплексной системы с применением машинного обучения
Как быть в том случае, когда каждый компонент конвейера, использующего машинное обучение, показывает качество не уступающее человеческому или близкое к нему, а результат всей системы сильно хуже человеческого?
Как правило это означает, что конвейер нуждается в перепроектировании. Анализ ошибок и в этом случае поможет принять верное решение.
Вернемся к автономному вождению:
В предыдущей главе был поставлен вопрос о том, соответствует ли качество каждого из трех компонентов человеческому. Предположим, что во всех трех случаях соответствует. Т. е.
- Компонент «Детектор автомобилей» имеет качество обнаружения других автомобилей по изображению с камеры равное (приблизительно) человеческому
- Компонент «Детектор пешеходов» не уступает человеческой способности обнаруживать пешеходов по изображениям с камеры.
- Если сравнить качество работы компонента «Планировщик траектории» с вождением человека, ориентирующегося по тем же сигналам, что имеются в распоряжении «Планировщика» , то результаты окажутся близкими.
Тем не менее, автономный автомобиль управляется значительно хуже, чем автомобиль, управляемый человеком. То есть водитель-человек по изображениям с камеры планирует траекторию движения автомобиля много лучше, чем это делает автоматическая система. Какой можно сделать вывод?
Единственный возможный в таких обстоятельствах вывод заключается в том, что проблема заключается не в работе конкретных модулей, а в ошибках при проектировании всей системы. «Планировщик траектории» работает настолько хорошо, насколько позволяют входные данные , но сами входные данные не содержат достаточно информации для принятия качественных решений. Разработчик должен задаться вопросом, какая другая информация, кроме выходных сигналов от компонентов конвейера, предшествующих «Планировщику» необходима, для качественного выбора траектории. Другими словами, какую еще информацию использует опытный водитель, дополнительно к имеющейся у автономной системы?
Например, появляется понимание, что водителю-человеку очень важно видеть полосу разметки на дороге. Это приводит к решению перепроектировать конвейер следующим образом:
Замечание автора: В приведенном примере с автономным вождением теоретически можно решить все проблемы, подав необработанное изображение с камеры сразу в компонент планирования траектории (перейти к «сквозному обучению»). Однако это нарушит принцип, согласно которому нужно искать наиболее простые решения, описанный в главе 51. По необработанному изображению придется решать крайне сложную задачу. Поэтому добавление компонента «Детектор разделительной полосы» является предпочтительнее — добавляется важная и ранее отсутствующая информация, при этом не создается модуля, слишком сложного для разработки и обучения.
Подытожим: если есть понимание, что система, состоящая из модулей, качество работы каждого из которых не уступает человеческому (всегда нужно помнить, что при таких сравнениях, мы предлагаем человеку решать задачи имея на входе ту же информацию, что и модули системы), но комплексная система сильно не дотягивает до человеческого исполнения, то нужно перепроектировать всю систему.