Machine Learning

“Техническая стратегия для инженеров-разработчиков искусственного интеллекта в эпоху глубокого обучения”

“Жажда машинного обучения” структурирует разработку проектов, использующих машинное обучение. Книга включает в себя практический опыт, который сложно найти где-либо ещё. Формат идей прост для того, чтобы делиться ими с коллегами. Многие курсы по AI рассказывают, как работают алгоритмы машинного обучения, в то время, как эта книга рассказывает, как их использовать. Если вы хотите стать техническим лидером в области AI, то книга поможет в этом. Раньше единственной возможностью научиться принимать стратегические решения в этой области было обучение в аспирантуре или получение опыта в процессе работы. “Жажда машинного обучения” написана для того, чтобы в короткие сроки научить этому навыку, что позволит стать лучше в создании продуманных систем AI.

Содержание

  • Об авторе
  • Введение
  • Концепт 1: Итерация, итерация, итерация
  • Концепт 2: Использование единой метрики оценки
  • Концепт 3: Анализ ошибок важен
  • Концепт 4: Определение оптимальной величины ошибки
  • Концепт 5: Работа над проблемами, которые хорошо решаются людьми
  • Концепт 6: Как разделить датасет?
  • Заключение

Об авторе

Эндрю Ын — специалист в области теории вычислительных машин и систем, инвестор, предприниматель и один из ведущих экспертов в области искусственного интеллекта. Он бывший вице-президент и главный учёный Baidu, внештатный преподаватель Стэнфорда, создатель одного из самых популярных онлайн-курсов по машинному обучению, один из создателей Coursera.com и бывший глава Google Brain. В Baidu он значительно расширил свою команду искусственного интеллекта до нескольких тысяч человек.

Введение

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

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

Вкратце, “Жажда машинного обучения” — книга, дающая глубокое понимание технического направления проекта.

Так как члены команды могут реагировать скептически на продвижение новых идей, Эндрю сделал главы очень короткими (всего 1–2 страницы), чтобы концепты можно было понять за несколько минут. Хочу сказать, что книга не рассчитана для новичков, для её понимания нужно быть знакомым с такими понятиями, как обучение с учителем и глубокое обучение.

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

Концепт 1: Итерация, итерация, итерация…

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

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

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

Концепт 2: Используйте единую метрику оценки

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

Представьте, что у вас есть 2 алгоритма. Точность первого — 94%, а полнота — 89%. В то же время, точность второго — 88% и полнота — 95%.

Ни один классификатор не может быть очевидно лучше другого, если вы не выбрали единую метрику. Проблема в том, что для их сравнения придётся тратить много времени на каждом шаге, что тормозит процесс работы. У вас будет слишком много идей по улучшению архитектуры, параметров, свойств и тому подобного. Если вы используете численную метрику (точность или F-мера), то она позволяет отсортировать все модели по их производительности и быстро узнать, которая из них обеспечивает лучший результат. Ещё одним способом является соединение нескольких метрик в одну, например, усреднение значения.

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

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

Концепт 3: Анализ ошибок важен

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

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

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

После этого вы поймете, что идея №1 позволит верно классифицировать 40% ранее ошибочно классифицированных изображений, идея №2–12% и идея №3 — всего 9%. Понятно, что работа над идеей №1 будет более обещающей, чем над другими идеями.

Концепт 4: Определите оптимальную величину ошибки

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

Представьте, что вы разрабатываете систему преобразования речи в текст и оказывается, что в 19% выборки есть настолько сильные шумы на заднем фоне, что даже люди не могут разобрать, что было произнесено. То есть, ваша система, скорее всего, ошибётся в этих 19%. Когда же вы работаете с выборкой, оптимальная величина ошибки которой близка к 0%, можно надеяться на то, что система справится с задачей так же хорошо.

Это помогает определять, страдает ли алгоритм от смещения или дисперсии, что определяет последующие шаги для его улучшения.

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

Концепт 5: Работайте над проблемами, которые хорошо решаются людьми

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

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

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

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

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

Концепт 6: Как разделить датасет

Ын предлагает свой способ разделения датасета на три части:

Тренировочная: используется для обучения алгоритма.

Валидационная: используется для настройки гиперпараметров, для выбора и создания свойств и для проведения анализа ошибок. То есть, она — ваш главный помощник в усовершенствовании алгоритма.

Тестовая: используется для оценки работы системы.

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

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

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

Заключение

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


Перевод статьи Niklas Donges: 6 concepts of Andrew NG’s book: “Machine Learning Yearning”

Предыдущая статьяКак определить цели разработчику программного обеспечения
Следующая статьяВведение в Subject в реактивном программировании