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

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

Машинное обучение с участием человека в цикле - это возможность ответить на один из самых важных вопросов современных технологий: как люди и машины должны работать вместе для решения проблем?

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

Мы можем разбить эти квадранты на:

  1. Известные знания: что ваша модель машинного обучения может уверенно и точно делать сегодня.
  2. Известные неизвестные: что ваша модель машинного обучения не может уверенно делать сегодня.
  3. Неизвестные знания: знания в рамках предварительно обученных моделей, которые можно адаптировать к вашей задаче.
  4. Неизвестные неизвестные: пробелы в вашей модели машинного обучения там, где она сегодня не видна.

Как мы можем решать проблемы в каждом квадранте знаний о машинном обучении?

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

К верхнему ряду можно обратиться в рамках вашей текущей модели: где модель сегодня уверена или не уверена?

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

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

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

Как мы можем построить системы, которые решают проблемы в каждом квадранте?

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

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

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

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

Пример стратегии в области здравоохранения, сочетающей решения во всех четырех квадрантах.

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

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

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

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

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

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

Ресурсы для машинного обучения "Человек в цикле"

Я создавал системы, сочетающие человеческий и алгоритмический подходы к машинному обучению в течение 20 лет. Было весело наблюдать, как многое изменилось:



А также весело поиграть с последними достижениями:



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

Примеры и открытый исходный код также можно найти в моем недавно выпущенном учебнике «Машинное обучение человека в цикле»:



Машинное обучение« Человек в цикле
Я узнал много нового о машинном обучении, о котором даже не подумал бы раньше. www. manning.com »



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

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



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

С технической точки зрения, я написал большую часть кода на PyTorch (и перед окончательным выпуском конвертирую всю книгу в PyTorch - одна глава в настоящее время написана на Numpy). Таким образом, код будет особенно интересен людям, создающим системы машинного обучения Human-in-the-Loop в PyTorch. Однако примеры будут достаточно общими, чтобы вы могли понять, на каком фреймворке или языке вы пишете код!

Роберт Манро
июль 2019