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

Команда из Стэнфорда разработала набор подходов, широко называемых «слабым надзором», для устранения этого узкого места в маркировке данных. Идея состоит в том, чтобы программно пометить миллионы точек данных.

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

Примеры, которые можно рассматривать как источники слабого надзора, включают:

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

Snorkel - это система, построенная на парадигме программирования данных для быстрого создания, моделирования и управления данными обучения.

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

В Snorkel эвристика называется функциями маркировки (LF). Вот несколько распространенных типов LF:

  • Жестко запрограммированная эвристика: обычно регулярные выражения (регулярные выражения)
  • Синтаксис: например, Деревья зависимостей Spacy
  • Дистанционное наблюдение: внешние базы знаний
  • Шумные ручные этикетки: краудсорсинг
  • Внешние модели: другие модели с полезными сигналами

После того, как вы напишете свои LF, Snorkel обучит Модель метки, которая использует конфликты между всеми LF для оценки их точности. Наблюдая за тем, как часто функции маркировки согласуются или не согласуются друг с другом, мы узнаем оценочную точность для каждого источника надзора (например, LF, с которым, как правило, согласны все другие LF, будет иметь высокую изученную точность, тогда как LF, который кажется не соглашаться со всеми остальными всякий раз, когда они голосуют по одному и тому же примеру, будет иметь низкую изученную точность). И, объединив голоса всех функций маркировки (взвешенные по их оценочной точности), мы можем присвоить каждому примеру нечеткую метку с учетом шума (от 0 до 1) вместо жесткой метки (0 или 1 ). Затем при маркировке новой точки данных каждый LF будет голосовать: положительно, отрицательно или воздержаться. На основе этих голосов и оценок точности LF модель меток может программно назначать вероятностные метки миллионам точек данных. Наконец, цель состоит в том, чтобы обучить классификатору, который может делать обобщения за пределами наших LF.

Три больших плюса этого подхода:

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

2. Теперь у нас есть возможность использовать немаркированные данные. Мы можем применить наши LF ко всем немаркированным примерам, чтобы создать множество неидеальных, но «достаточно хороших» меток для потенциально огромного набора обучающих данных.

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

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

Некоторые компании, которые использовали инструмент слабого надзора Snorkel:

использованная литература