Взгляд разметчика данных

Дисклеймер: ниже будет описан личный опыт и точка зрения человека-исполнителя. Устройство всей процедуры разметки в статье не раскрывается. Все совпадения сущностей случайны. Названия компаний не упоминаются в целях соблюдения NDA. В статье не будут подниматься вопросы оплаты труда и разбираются только основные рабочие моменты.

 Всем добрый день!

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

Разметка данных используется для обучения различных алгоритмов, чаще всего на основе нейросетей. Она применяется разных отраслях, включая такие сложные, как медицина. Без разметки невозможно обучение моделей, так как нет явной целевой переменной и от качества разметки напрямую зависит качество модели. Я имею опыт работы Data Scientist-ом и даже диплом получил, поэтому понимаю, насколько важна разметка. Более того, сейчас, работая с медицинскими датасетами, я всё чаще задумываюсь: а насколько вообще можно доверять той или иной разметке, даже если её ставит врач?

Итак, приступим к теме нашего разговора.

 

Часть первая. Инструкция к разметке.

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

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

Следовательно, противоречие в инструкции может внести такой неконтролируемый хаос, который победить не получится без переоткрытия проекта. Если в какой-нибудь LLM мы можем задать температуру около 0 и быть более-менее уверенным, что никакой самодеятельности не будет, то вот с живыми нейросетями такой фокус не пройдет. Будет очень много вариативности.

Пример возможной вариативности мне подсказал один программист. Он строил базу данных с некоторой продукцией и в наименовании часто встречалось AA. Как будет писать человек, если другие буквы в наименовании латинские, такие как N, W, Z? Латинскими AA, верно же? А вот и нет. Программист рассказывал, что он встречает и АА (кириллица, но это ещё ничего), и сочетания латиницы и кириллицы в одном обозначении. И это только в двух буквах. В размечаемых текстах обычно больше двух букв. Так что, если где-то возможна двусмысленность, то она будет и внесет хаос.

Поговорив немного об инструкции, перейдем непосредственно к разметке.

 Часть 2. Процедура разметки.

В общем плане процедура выглядит так: человеку подается текст/картинка/звук и просят проставить класс. Выполняться может как в специализированных системах, так и просто в таблицах типа Excel. Часто надо классифицировать и размечать сущности по нескольким классам, к примеру, А, Б, В и т.д.

Если обозначения классов имеют какую-то строгую иерархию, интуитивно понятную разметчику, то в общем случае и разметка будет качественнее. Почему? Потому что человек не будет путаться в названиях и сразу отнесет к нужному классу. К примеру, плохое на красное поле, хорошее на зеленое.

Разметка будет лучше, если выбор будет только из двух классов, по классике, 1 и 0. Если классов больше, то начинается вариативность и между граничными классами могут возникать ошибки. Понятно, что наш мир не делится на 1 и 0 в большинстве случаев и градиент будет лучше отражать действительность. На мой взгляд изнутри как исполнителя, качество разметки увеличится, если прогнать один и тот же датасет через разметчиков несколько раз, каждый раз прося поделить на бинарные классы. Да, тогда мы увеличим стоимость работы, но и качество вырастит. Насколько – это надо проверять на практике. Возможно, кто-то проверял. Если да, прошу поделиться ссылкой, почитаю.

По своему опыту скажу, что когда меня просят классифицировать более чем на 5 классов, то натурально разбегаются глаза. В итоге ты всё равно хорошо размечаешь 2-3 класса корректно, а остальные проваливаешь, потому что не можешь удержать в голове описание всех классов одновременно. Как будто, даже научная статья была, что человек не способен выбирать более чем из двух вариантов.

Отдельно плохо, когда названия классов перекрывают друг друга или объект может быть отнесен к нескольким классам одновременно. К примеру, с одеждой. Есть одежда типа «унисекс» и нам нужно отнести её к классу «Мужской» или к классу «Женский». К какому классу отнести? Такие случаи должны описываться в инструкции. И всё равно часть людей будет размечать неверно. Почему? Потому что это люди и температуру им не задать.

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

Ладно. Допустим, разметили данные. Следующий этап – контроль.

 

Часть 3. Контроль.

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

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

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

Как говорил один мой знакомый топ-менеджер – не должно быть контролирующих больше, чем работающих. Поэтому проверять все 100% выполненных заданий можно, но абсолютно невыгодно. Лучше определить процент контроля. Это, кстати, ложится с принципом промышленных предприятий, когда не 100% деталей проверяется, а только 5%, 10%, 20% от партии. Если мы проверили 20% и в этих 20% обнаружен брак, то всю партию желательно вернуть и перепроверить на качество и, при необходимости, переделать. Возможно, там тоже ошибки и, чтобы не вводить лишний шум в модель, данные лучше переразметить.

Конечно, в автоматических системах разметки можно просто таким данным прикреплять веса. Скажем от хорошего исполнителя вес 1, а от плохого 0,01. То есть, ответ важен, но учитывать надо аккуратно. Однако эти вопросы больше для аналитиков и других менеджеров проекта и к работе разметчика такие вопросы не относятся.

 Вроде разобрали все аспекты. Подведем итоги.

Итог

Для качественной разметки нужно (по моему мнению):

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

2.  Чем проще процесс разметки, тем выше её качество. В идеале разметка на бинарные интуитивно понятные классы.

3.  Контроль должен быть обучающим и открытым. «Черный ящик» только вводит хаос в разметку и снижает мотивацию исполнителя. Принцип выборочного контроля с блокировкой партии при обнаружении брака можно применить и здесь.

 

Я всегда готов к обсуждению и с удовольствием отвечу на ваши комментарии.

С уважением, Иван

Автор: Ivan_Yakovlev_G

Источник

Оставить комментарий