Введение

Хотя активное обучение еще не получило широкого распространения, некоторые из самых известных компаний, Facebook, Google, Twitter и др., уже используют его в своих проектах. И из-за его преимуществ мы также решили использовать его в проекте «Использование компьютерного зрения для обнаружения этнической принадлежности в видео и повышения осведомленности об этнической принадлежности», где стартап Ceretai в партнерстве с Omdena разработал система классификации этнических групп, основанная на компьютерном зрении.

В этой статье будет представлена ​​концепция активного обучения, способы применения системы в проекте искусственного интеллекта и пример ее результата.

Что такое активное обучение?

Активное обучение, или машинное обучение "человек в цикле" (HITL), – это ветвь машинного обучения, в которой алгоритм классификации взаимодействует с источником информации. Обычно этим источником является человек, но он может использовать любую другую сущность для получения необходимой информации. Обычно этот источник информации в литературе называют оракулом или учителем.

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

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

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

Почему мы использовали его в нашем проекте?

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

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

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

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

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

Обзор процесса

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

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

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

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

Внешний цикл

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

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

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

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

Внутренний цикл

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

  • Набор для обучения/проверки, созданный на основе предыдущих итераций внешнего цикла.
  • Совершенно новый набор без маркировки.
  • Набор переобучения представляет собой распределение набора обучения/проверки по всем итерациям внутреннего цикла.
  • Последняя классификационная модель.

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

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

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

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

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

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

Проверка активного обучения

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

Чтобы избежать всех этих проблем, мы использовали три дополнительные проверки, помимо обычной проверки при обучении модели:

  • Проверка новых данных.
  • Проверка на старых данных.
  • Проверка маркировки.

Проверка модели на новых данных

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

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

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

Проверка модели на старых данных

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

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

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

Проверка маркировки

Проверка маркировки — самая гибкая из трех и, вероятно, самая дорогая. Цель состоит в том, чтобы рассмотреть человеческую сторону структуры Human-in-the-loop, ручную аннотацию точек данных. Поскольку это человеческая деятельность, она подвержена типичным человеческим ошибкам, таким как предвзятость, отсутствие или неполное знание, замечание ошибок и т. д. Например, в нашей задаче, классифицируя лица по этническим группам, мы столкнулись с некоторыми из этих ошибок:

  • Предвзятость восприятия, каждый человек по-разному воспринимает этническую группу. Человеку из Юго-Восточной Азии может быть сложно отличить белого человека из Южной Европы от человека с Ближнего Востока.
  • Традиционные стереотипы, некоторые черты лица традиционно относят к этнической группе. Но на самом деле не все они присущи только одному этносу, а другие не являются общими внутри этноса.
  • Ошибки аннотации при маркировке тысяч изображений лиц, человеческие ошибки, такие как аннотирование неправильного изображения, не были чем-то странным.

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

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

Стратегии выборки

Другим ключевым аспектом процесса активного обучения, который будет определять его эффективность, является стратегия выборки для выбора точек данных для маркировки. В конце концов, основная цель Human-in-the-loop — аннотировать только важные и наиболее информативные точки данных. Чем лучше мы их подберем, тем лучше будет результат.

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

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

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

Выборка неопределенности

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

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

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

Где P(y|x) — вероятность того, что точка данных x будет помечена как y, а n — общее количество различных этикетки. Причина использования логарифма по основанию два выходит за рамки этой статьи, но она включена в книгу, упомянутую в справочном разделе, а также более глубокое объяснение этой формулы.

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

Выборка разнообразия

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

Мы сгруппируем похожие точки данных, чтобы убедиться, что мы берем разнообразную выборку из самых сомнительных точек данных. Другими словами, мы будем делать кластеры. Мы не ищем определенное количество кластеров или извлекаем из них смысл; нам нужно только разделить точки данных. Для этой цели будет достаточно простого алгоритма кластеризации, такого как KMeans. Однако есть дополнительные трудности, если вы работаете с точками данных высокой размерности, такими как компьютерное зрение или проекты NLP (обработка естественного языка).

Алгоритмы кластеризации на основе евклидова расстояния, такие как KMeans, плохо работают в ситуациях высокой размерности. Поэтому нам нужно использовать альтернативу: либо использовать меру расстояния, которая хорошо работает в таких задачах, как косинусное сходство, либо уменьшить размерность перед применением алгоритма кластеризации. В нашем случае мы применили последний вариант, используя алгоритм PCA (анализ основных компонентов), потому что мы обнаружили, что он проще в реализации и имеет хорошую производительность. Хотя у него был недостаток, он добавлял еще один гиперпараметр для настройки системы — количество измерений, до которых нужно было сократиться.

Как только мы исправим то, как мы разделяем точки данных на кластеры, нам нужно определить, какие точки каждого кластера мы хотим извлечь. В книге Human-in-the-Loop Machine Learning автор предлагает использовать три разных типа точек данных, чтобы максимизировать разнообразие:

  • Ближайший к центроиду кластера. Эти точки данных представляют собой наиболее репрезентативные элементы кластера и, следовательно, наиболее повторяющиеся и информативные точки. Они помогут улучшить аннотацию многих точек данных. Они должны составлять около 40% от общего количества.
  • Самый дальний от центра тяжести кластера. Они представляют собой выбросы, точки данных, которые не имеют большого сходства с другими, но тем не менее модель должна научиться их аннотировать. Более того, они могут представлять собой новую большую группу похожих точек данных, которые модель еще не смогла обнаружить. Количество точек данных этого типа должно быть аналогично первому.
  • Случайные точки в кластере. Мы также хотим применить некоторую случайность, чтобы обнаружить новую информацию, о которой модель не знает. Они просто должны составлять около 20% от общего числа.

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

Выводы

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

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

  • Активное обучение — это ветвь машинного обучения, которая работает за счет взаимодействия алгоритма и человеческого источника информации.
  • Наиболее значительным преимуществом активного обучения является резкое сокращение количества точек данных, подлежащих маркировке, и, следовательно, сокращение необходимых ресурсов.
  • Для аннотации Active Learning требуется настроить определенную структуру, настроить несколько гиперпараметров, модель классификации и начальное начальное число помеченных точек данных. Принимая во внимание, что случайная аннотация не нуждается ни в одном из них, только в точках данных, которые нужно пометить.
  • Из-за необходимых первоначальных инвестиций активное обучение не является методологией, применимой к каждому проекту. Он лучше всего подходит для сложных проектов, требующих большого объема обучающих данных, таких как компьютерное зрение или НЛП (обработка естественного языка).
  • Строгая и непрерывная проверка на каждой итерации необходима для конечной эффективности процесса активного обучения.
  • Окончательная производительность активного обучения в основном зависит от немаркированных данных, которые мы выбираем для маркировки вручную. Но, опять же, существует множество стратегий выборки и их комбинаций. И поэтому не существует универсального решения для всех. Это будет зависеть от проблемы и доступных ресурсов. Ссылки

Рекомендации

  • Монарх, Р. М. 2021, Машинное обучение человека в цикле: активное обучение и аннотация для ИИ, ориентированного на человека, Manning Publications, Shelter Island.

Автор

Диего Кинтана Эстев: https://www.linkedin.com/in/diegoquintanaesteve/

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

Первоначально опубликовано на https://omdena.com 21 марта 2022 г.