Записки из промышленности

Не теряйте неразмеченные данные

Оцените слабые места вашей модели и определите наиболее информативные выборки данных среди доступных данных.

Ориентированный на данные подход

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

До сих пор данные не считались серьезной проблемой: стандартные исследовательские наборы данных переменного размера были доступны бесплатно (ImageNet, COCO, GLUE и т. д.), а также веса предварительно обученной модели ( ModelZoo, Huggingface и т. д.) в качестве предварительных знаний для точной настройки определенного подмножества данных. Кроме того, распространенным явлением стало обучение локальных моделей на небольших наборах данных. Но на практике сделать модель машинного обучения успешной на этапе производства — непростая задача.

Одной из основных причин сбоев является потеря точности между моделью в исследовательском шаблоне и этой моделью, развернутой в реальной среде. Фактически 13% моделей в компаниях доходят до производства [7].

Это кажется довольно удивительным, когда мы знаем, что даже поиск модели был автоматизирован с появлением платформ AutoML. Что является узким местом?

Узким местом являются данные. И следующая проблема, которая требует надежной структуры и стандартизации, — это конвейер, который массирует данные. Искусственному интеллекту в отрасли, возможно, придется отказаться от подхода, ориентированного на модели, и перейти к подходу, ориентированному на данные [6]. Ориентированный на данные подход пытается согласовать разработку модели с созданием обучающего набора данных и мониторингом производительности модели.

«Не все данные одинаковы», — Дженнифер Прендки.

Количественная оценка неопределенности

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

Каковы причины неопределенности?

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

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

От теории к практике

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

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

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

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

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

Наш эксперимент

В этой статье мы оцениваем изображения, которые подаются модели CNN для классификации. Мы будем использовать EMNIST для экспериментов.

Мы используем softmax для создания распределения вероятностей из выходных логитов, вычисленных последней функцией активации. Softmax не может обеспечить вероятность достоверности модели и теряет информацию, потому что использует экспоненциальную шкалу, поэтому теряет шкалу цифр ([1,4,2,1] будет давать то же распределение, что и [101, 104, 102, 101]). Но мы все еще можем использовать softmax в качестве прокси для достоверности модели и ранжировать наши выборки данных от высокой достоверности модели до низкой достоверности модели.

«Ни один алгоритм не может пережить плохие данные» — Роберт Монарх

Оценка неопределенности

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

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

Это тот случай, когда для одной точки данных ваша модель:

  • дать одинаковую вероятность softmax для разных классов (например, входное изображение - собака, а выходное softmax: собака 33,3%, кошка 33,3%, птица 33,3%)
  • дать низкую вероятность самой высокой вероятности (например, среди десяти классов самый высокий softmax — «лягушка» с softmax 10,5%)

Перечислим методы подсчета очков от самых простых к более сложным.

Мы будем называть p_max наивысшим баллом softmax, присвоенным классу, выведенному для одного изображения, и p_2nd второй по величине достоверностью, присвоенной классу для одного изображения. n — количество классов для классификации.

Для каждой приведенной ниже функции входные данные prob_dist — это массив выходных данных softmax для одной точки данных, а выходные данные — оценка неопределенности модели для этой точки данных от 0 до 1. Если набор данных представляет собой мультиклассовую классификацию с тремя классами, prob_dist имеет форму (3,).

Тип подсчета очков:

  • наименьшая достоверность (разница между наиболее достоверным прогнозом и 100-процентной достоверностью)

Мы хотим выбрать экземпляр, для которого достоверность наиболее вероятного класса является самой низкой. Допустим, у нас есть два изображения A и B, и самый высокий логит softmax модели составляет соответственно 0,9 для A и 0,3 для B. В этом случае мы можем захотеть понять, как выглядит B, обработать, (пере) пометить или удалить его. .

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

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

Этот метод оценки зависит только от достоверности самого надежного элемента, не заботясь о второй или n-й оценке достоверности.

  • доверительный интервал

Доверительная маржа принимает разницу между двумя наиболее надежными прогнозами для одной точки данных. Мы можем преобразовать эту разницу в диапазон [0–1], вычитая результат до 1 (формула (2)). На этот раз вас интересует только разница между двумя высшими баллами в двух высших категориях. Чем меньше эта разница, тем ближе к 1 и тем менее вы уверены. Этот алгоритм менее чувствителен к базе softmax, чем метод наименьшей достоверности, но все же чувствителен.

  • отношение достоверности (соотношение между двумя наиболее надежными прогнозами)

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

  • на основе энтропии (разница между всеми прогнозами)

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

Мы делим на log_2(n), чтобы нормализовать энтропию между 0 и 1 (уравнение (4)).

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

Экспериментальная установка

Мы иллюстрируем результаты двух оценочных функций (наименее и энтропия). Сначала мы обучаем простую двухслойную CNN на половине набора данных EMNIST (130 106 изображений). Затем мы прогнозируем классы для всех невидимых точек данных и ранжируем их в соответствии с их оценкой неопределенности. Мы отбираем 1000 лучших изображений с учетом их оценки неопределенности.

Наша CNN состоит из двух сверточных слоев, за каждым из которых следует активация RELU, а затем два полносвязных слоя. Мы останавливаем обучение на 6-й эпохе до того, как точность проверки начнет снижаться. Мы получаем оценку F1 0,79 на проверочном наборе.

Код для обучения вы можете найти по адресу: https://github.com/bledem/active-learning/blob/master/run_experiment.py

и для выборки 1000 лучших изображений в качестве нового набора данных по адресу: https://github.com/bledem/active-learning/blob/master/create_new_set.py.

Полученные результаты

Мы смотрим на классы, для которых средний балл F1 для каждого класса является самым высоким и самым низким в наборе проверки.

Классы с наименьшим баллом F1 (F1‹50%):

'k' 'o' 'i' 'r' 'Y' 'q' 'b' 'l' 'h' 'e' 'm'

а классы с наивысшим баллом F1 (F1>95%):

'n' 'Z' 'A' 'a' '3'

Теперь давайте посмотрим на топ-1000 изображений, ранжированных по их показателю неопределенности. Для сравнения мы также выбираем случайный набор из 1 тыс.

На рисунке выше видно, что мы передискретизируем символы, которые легко спутать: «I», «1», «l» или «o», «O», «0».

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

Ниже мы показываем несколько примеров изображений EMNIST, выбранных в качестве неопределенного вывода из топ-1000. Когда мы смотрим на «наименьшие» или «энтропийные» выборки, мы можем ясно видеть шум в маркировке (например, S помечен как 0) и самих изображениях (размытые, нечитаемые символы).

Использование оценки неопределенности на практике

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

Мы перечисляем здесь плюсы и минусы использования представленной выше оценки:

Плюсы:

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

Минусы:

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

Предупреждение о дублировании сомнительных образцов

Использование методов количественной оценки неопределенности очень эффективно для поиска в неразмеченных данных выборок, лежащих на границе вашей модели. Но будьте осторожны при выборе точек данных для выборки для следующего пакета аннотаций. Эта выборка оценивает информативность каждой немеченой точки в отдельности. Если вы выберете только точки данных с наивысшей оценкой неопределенности, вы получите одну информативную точку данных и множество почти идентичных копий. Если вы наивно собираете k наиболее информативных точек, вы можете в конечном итоге также задать k почти идентичных точек. Это сделало бы вклад вашей пробной партии ниже, чем случайно выбранной партии. Например, в эксперименте EMNIST, если вы посмотрите на технику энтропийной выборки, вы увидите, что символы «i», «1», «l» подвергались сильной выборке.

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

Используйте мудрую выборку для создания умного пакета для аннотации [1]:

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

Подробнее об интеллектуальной выборке

1) Оценка несогласия:

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

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

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

Стратегия исключения

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

Библиотека с открытым исходным кодом для отсева MC и других методов активного обучения: https://github.com/ElementAI/baal/ [paper]

2) байесовские модели

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

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

3) Активное обучение

Я сосредоточился на приписывании показателя неопределенности каждому немаркированному образцу. Но количественная оценка неопределенности составляет бесконечно малую часть более широкой области Активного обучения. AL предназначен для получения как можно большего прироста производительности за счет маркировки как можно меньшего количества образцов [3]. Теоретически идеальная система будет запрашивать как экземпляры, лежащие на границе решения модели, так и экземпляры, находящиеся далеко от границ решения (выбросы, выборка по разнообразию, новые классы для определения). К сожалению, пока не существует стандартного способа построения наилучшего конвейера для запроса наименьшей выборки данных для максимальной производительности.

4) Обучение по учебной программе

Еще одна очень интересная область исследований пытается оптимизировать обучение, снабжая модель соответствующими точками данных. Речь идет не о том, чтобы сосредоточиться на немаркированных данных, а скорее на уже помеченных данных. Учебные задачи требуют некоторого времени, чтобы кормить модель простыми образцами и постепенно увеличивать сложность образцов во время обучения, как у человека. Для несбалансированного набора данных хорошо работает противоположная стратегия: мы назначаем более высокие штрафы жестким (редким) экземплярам, ​​чтобы заставить модель их изучить. На практике эта стратегия обучения «сначала легко» и «сначала сложно» задается выбором функции потерь. Я рекомендую вам прочитать эту статью [4], чтобы узнать больше о методах выборки среди размеченных данных.

Код для этой статьи

https://github.com/bledem/active-learning

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

[1] Human-in-the-Loop Machine Learning: Active Learning and Annotation for Human-Oriented AI, Роберт Монарх.

[2] BatchBALD: https://oatml.cs.ox.ac.uk/blog/2019/06/24/batchbald.html

[3] Обзор глубокого активного обучения. Пэнчжэнь, Жэнь и Сяо, Юнь и Чан, Сяоцзюнь и Хуан, По-Яо и Ли, Чжихуэй и Чен, Сяоцзян и Ван, Синь. (2020). https://arxiv.org/pdf/2009.00236.pdf

[4] Какие образцы следует учить в первую очередь: простые или сложные? Сяолин Чжоу, Оу Ву, 2021 г. https://openreview.net/pdf?id=pSbqyZRKzbw

[5] Активное обучение в CNN посредством максимизации ожидаемого улучшения. Нагпал, Удай и Ноулз, Дэвид. (2020). https://openaccess.thecvf.com/content_WACV_2020/papers/Mayer_Adversarial_Sampling_for_Active_Learning_WACV_2020_paper.pdf

[6] https://www.youtube.com/watch?v=Yqj7Kyjznh4&t=1260s&ab_channel=DeepLearningAI

[7] https://venturebeat.com/2019/07/19/why-do-87-of-data-science-projects-never-make-it-into-production/