Яндекс.Толока. Как люди помогают обучать машинный интеллект
Люди оценивают релевантность эталонных документов поисковым запросам, чтобы на них ориентировались формулы ранжирования в поиске; люди переписывают аудиозаписи в текст, чтобы на этих данных настроился алгоритм голосового распознавания; люди размечают изображения по категориям, чтобы, натренировавшись на этих примерах, нейронная сеть дальше делала это без людей и лучше людей.
Все это можно делать в Толоке, которая является краудсорсинговой платформой и помогает найти тех, кто решит вашу задачу. Сегодня она переходит в статус беты и отныне открыта для всех внешних заказчиков. Так что пришло время рассказать вам подробно о самой платформе и о том, с какими неожиданными сложностями мы сталкивались в процессе работы над ней, поделимся своими наблюдениями и объясним, как Толока может помочь именно вам.
Задачи, о которых мы говорили выше, в Яндексе традиционно решаются с помощью обученных специалистов — асессоров. Асессоры смотрят, насколько результаты поиска соответствуют запросу, находят среди найденных веб-страниц спам, классифицируют его, решают схожие задачи и в других сервисах.
Ирония заключается в том, что чем больше новых технологий мы запускаем, тем сильнее растет потребность в человеческих оценках. Недостаточно просто определить релевантность страницы поисковому запросу. Важно понимать, не замусорена ли страница вредоносной рекламой? Не содержит ли страница контент для взрослых? А если содержит, то подразумевает ли запрос пользователя, что он искал именно такой контент? Для того чтобы автоматически учитывать все эти факторы, нужно собрать достаточное количество примеров для обучения поисковой машины. А так как все в интернете постоянно меняется, то и обучающие наборы нужно постоянно обновлять и поддерживать в актуальном состоянии. В общем, только для задач поиска потребность в человеческих оценках измерялась миллионами в месяц, и с каждым годом это число только растет.
Привлекать все больше и больше асессоров в каждой из стран присутствия Яндекса организационно непросто. При этом далеко не все новые задачи требуют специального обучения. Со многими заданиями может справиться практически любой человек, а часто даже более полезно собрать мнения обычных пользователей, не натренированных профессионально оценивать ранжирование. Подобное разделение задач привело нас к выводу, что в дополнение к асессорам нам нужен еще один более гибкий и масштабируемый источник получения человеческих оценок.
Краудсорсинг
В дополнение к сложным задачам, выполняемым асессорами, нам нужно было научиться собирать миллионы простых оценок в любой интересующей нас стране. Большинство заданий, о которых мы говорим, довольно простые и мелкие: на их выполнение не требуется больше 30 секунд. Зато количество этих заданий очень большое. Обычные фриланс-биржи, на которых можно связаться напрямую с несколькими исполнителями и объяснить им суть задания лично, для нас не подходили. Для промышленных масштабов нам нужно было привлекать тысячи исполнителей, оплачивать их работу без бумажной волокиты и контролировать результат.
Ближайшим аналогом того, что нам на самом деле было нужно, были краудсорсинговые платформы Amazon Mechanical Turk, Clickworker и CrowdFlower. Именно с помощью них, как правило, собирают простые человеческие оценки академические исследователи в области Machine Learning и крупные поисковые компании, например, Bing.
Вот только все эти платформы не работали в интересующих нас странах. К тому же мы уже успели накопить определенный опыт для того, чтобы решить задачу собственными силами.
Толока
В принципиальной логике работы любой краудсорсинговой платформы и, в частности, Толоки нет ничего сложного. С одной стороны, мы работаем с исполнителями, распределяем задания, производим оплату, а с другой — помогаем заказчикам получить результат с минимальными трудозатратами.
Кстати, что это за слово такое «Толока»? Над названием думали довольно долго, искали международные варианты, но в итоге вышло совсем наоборот. Идея назвать сервис «Толокой» родилась в нашем минском офисе, в котором, кстати, и сосредоточено ядро разработки платформы. Это слово (по-белорусски «талака») распространено в Беларуси примерно в 30 раз сильнее, чем в России, и означает совместную полезную работу на общий результат, а это отлично сочетается с краудсорсингом. Хотя выбор названия — это далеко не самый сложный вопрос, с которым мы столкнулись при разработке сервиса.
Какими могут быть задания? Потенциально они могут быть любыми по исходным данным, интерфейсу, ожидаемым ответам. Одному нужно загрузить картинки и попросить их классифицировать, другому — отобразить аудио-плеер и попросить написать, что слышно на записи, третьему — показать карту с расположением пользователя.
Поэтому был выбран путь максимальной гибкости: используя json для входных и выходных параметров и html/css/js — для интерфейса, заказчик может создать практически любое задание. А для тех задач, которые требуют работу «в поле» (например, пойти по адресу и проверить актуальность информации об организации), мы подготовили мобильную версию Толоки для Android.
У гибкости в настройках есть и обратная сторона — высокий порог вхождения. Далеко не каждый человек умеет верстать интерфейс. Эту проблему мы решаем с помощью готовых шаблонов, общее количество которых планируем увеличить.
Как платить толокерам? Успешный вывод кровно заработанных — один из главных мотиваторов для человека возвращаться и продолжать выполнять задания. Сложная и долгая процедура вывода может похоронить платформу. Поэтому мы выстроили систему, в которой достаточно добавить свой кошелек в PayPal или Яндекс.Деньгах. На этапе отладки процессов со стороны Толоки вывод денег мог занимать до 30 дней, сейчас — пару дней, а то и минут. При этом и толокеры, и заказчики освобождаются от бумажной волокиты.
Как обеспечить качество выполнения? Этот вопрос — главная головная боль любой краудсорсинговой платформы. В Толоке, как и любом социуме, есть люди прилежные и внимательные, а есть — ленивые, недобросовестные и при этом умеющие писать скрипты. Основная задача: удержать в сервисе первых и как можно раньше найти и ограничить вторых. Для этого мы научили Толоку анализировать поведение исполнителей. У заказчиков появилась возможность автоматически выявлять и ограничивать тех толокеров, кто, например, отвечает слишком быстро, или чьи ответы не согласовываются с ответами других. Мы также добавили возможность использовать контрольные задания («ханипоты») и обязательную приемку перед оплатой. Причем приемку тоже можно упростить. Отдать задания одним пользователям, а оценку их результатов — другим.
Кстати, а что мы знаем о самих толокерах?
Толокеры
В Толоке регистрируются и выполняют задания самые разные люди. Больше всего исполнителей (как и заданий) у нас в России, Украине и Турции. Большинство толокеров — это молодые люди до 35 лет (как правило, студенты технических ВУЗов или мамы в декрете). В основном исполнители рассматривают Толоку в качестве дополнительного источника денег, хотя многие отмечают, что им нравится выполнять полезную работу, делать интернет чище. Вот, например, что они сами пишут о себе, обсуждая Толоку в интернете:
Мне на кошелек уже упало 790,41 рублей. Если что, то в регионе, где я живу, зарплата, к примеру, учителя-молодого специалиста, составляет 2800 рублей. Обратите внимание, что это все набито между делом, в свободное время, в перерывах между выполнением основной работы, когда хотелось отдохнуть и немного переключиться.
И вообще, работая здесь, не чувствуешь себя тупым кликающим роботом. Есть какое-то ощущение полезности своей работы.
Толока в Яндексе
Толока сейчас — это почти 270 тысяч исполнителей из пяти стран мира, 80 тысяч выполняемых заданий в день, 400 уже опробованных разных типов заданий, 1 миллиард собранных оценок.
В момент открытия мы стартовали с тремя основными типами заданий, и интересно, что именно они по-прежнему остаются самыми любимыми заданиями для большинства толокеров: оценка качества поиска картинок, разметка контента для взрослых и попарное сравнение объектов (например, страниц в разном дизайне).
Использование краудсорсинга для сбора оценок в этих проектах позволило командам существенно сократить время ожидания оценок для построения метрик. Где асессорам требуется несколько дней на оценку набора объектов, толокеры справляются за пару часов. За счет снижения стоимости оценки удалось заметно увеличить размеры обучающих наборов и повысить качество алгоритмов классификации. К примеру, после перехода на Толоку качество определения контента для взрослых выросло на 30%.
Заказчиками оценок в Толоке выступают десятки разных команд Яндекса. С помощью этого сервиса собираются данные для технологий компьютерного зрения и распознавания речи, совершенствуются рекомендательные технологии, пополняется база справочника организаций, решаются многие другие внутренние задачи. Но их все равно недостаточно для того, чтобы обеспечить всех толокеров работой. Нужно двигаться дальше.
Первые внешние заказчики
Договорившись с несколькими внешними партнерами, мы организовали закрытое альфа-тестирование, чтобы проверить соответствие платформы потребностям извне. Внешние заказчики пришли как со знакомыми для нас типами задач, так и с новыми, специфичным для их бизнеса. За время тестирования были запущены задания по расшифровке ценников товаров с фото, аудиту торговых точек, категоризации товаров, поиску характеристик.
Сайт «Рейтинг Букмекеров» предложил толокерам задания по обновлению базы букмекерских отделений по всей стране (около 4000 объектов). Нужно было проверить, существует ли объект по указанному адресу, сделать фотографию и составить его описание. По данным заказчика, проверить актуальность базы объектов по России с помощью краудсорнинга оказалось выгоднее и оперативнее, чем командировать сотрудника или искать подрядчиков. Немного конкретики. Выполнение задачи по Санкт-Петербургу, где нашлось 157 адресов для проверки, с использованием Толоки обошлось заказчику чуть более чем в 4100 рублей. Это более чем в 10 раз дешевле, чем проектная семидневная командировка одного собственного сотрудника компании из Москвы в Санкт-Петербург, и в 3–6 раз дешевле, чем наем подрядчика на месте.
Толока оказалась полезна не только бизнесу, но и в научной работе. Дмитрий Усталов из Института математики и механики им.Н.Н. Красовского (ИММ УрО РАН) использует сервис для сбора оценок о смысловых связях русских слов, чтобы повысить качество электронных словарей, используемых в рамках проекта NLPub. По словам Дмитрия, он может быстро и недорого проводить эксперименты, проверяя большое количество гипотез в сжатые сроки. Для одного из заданий, например, ему удалось собрать 13 тысяч оценок всего за час.
И еще один пример. Рамблер использует Толоку для уточнения асессорских оценок поисковой выдачи. Результаты толокеров чуть менее точны, поскольку они не имеют специальной подготовки, но зато они могут выполнить задания больших объемов в короткие сроки и со стабильным качеством. Так что этот канал получения оценок особенно полезен в периоды пиковых нагрузок.
Закрытое альфа-тестирование помогло нам определиться с дальнейшим вектором доработок и в целом подтвердило гипотезу, что Толока может быть полезна внешним заказчикам и должна быть открыта для всех. Ровно это мы и сделали. Начиная с этой недели, Толока переходит в статус беты, и ее краудсорсинговые возможности доступны для всех желающих.
Как добавить свое задание?
Процесс отправки задания по-прежнему предполагает определенные знания со стороны заказчика, но мы уже работаем над тем, чтобы упростить этот процесс в ближайшем будущем. А пока для заказчиков доступна документация по адресу yandex.ru/support/toloka-requester.
Мы рекомендуем начать с песочницы. Эта тестовая среда позволит вам не только разобраться в процессе создания задач, но и испытать их, не рискуя потратить деньги впустую. После регистрации можете сразу приступить к созданию своего проекта, причем сервис предложит вам уже готовые шаблоны на выбор.
При постановке задачи вы сможете ограничить исполнителей по определенным критериям (например, страна, язык или юзер-агент браузера), включить предварительную проверку результата и контроль качества, настроить спецификации входных и выходных данных.
После обучения на песочнице вы можете перейти к боевой системе, перенести туда свои проекты, пополнить баланс и запустить краудсорсинг. Кстати, все это не обязательно делать в интерфейсе. У Толоки есть свой API.
В заключение хотелось бы рассказать об основных рекомендациях, которые мы сформулировали на основе собственного опыта работы с толокерами.
Рекомендации по работе с краудом
Wisdom of crowd (мудрость толпы) — вовсе не философский, а вполне статистически проверяемый феномен. Даже если мнение одного человека недостаточно компетентно, а его оценка — недостаточно точна, объединение оценок от многих разных людей может давать более точные результаты, чем оценка одного профессионального эксперта. Главное здесь — правильно организовать процесс сбора и агрегирования отдельных оценок.
- Краудсорсинг — очень мощный инструмент, он отлично подходит, когда речь идет о больших объемах и необходимости масштабировать и стандартизировать процессы. Но если у вас разовая задача, которая решается одним человеком за пару часов, то именно так ее и проще решить.
- Многократно проверено, что любую сложную задачу можно и нужно декомпозировать на набор мелких независимых подзадач. Это позволит существенно повысить качество итоговых данных без увеличения стоимости общей разметки.
- Большинство заданий в краудсорсинге запускаются с перекрытием (когда несколько исполнителей делают одно и то же задание). Популярное заблуждение: чем больше перекрытие, тем выше качество результатов. Как правило, это не так. Точность достаточно быстро стабилизируется с увеличением перекрытия, и мало для каких заданий обоснованно перекрытие больше 5 человек на задание.
- Не совсем интуитивный факт: цена за задание в краудсорсинге практически не влияет на качество получаемых оценок. Зачастую завышение ставки может даже навредить качеству, так как толокеры в погоне за деньгами перестают уделять заданиям достаточное внимание.
- А вот главное, от чего реально зависит качество оценок — это от организации задания. Чем понятнее написана инструкция и спроектирован интерфейс, тем выше качество результата. И не забываем о проверочных заданиях («ханипоты»), которые помогут выявить недобросовестных толокеров.
- Большинства проектов в Толоке не требуют от исполнителя специальных знаний. Тем не менее иногда приходится «тренировать» толокеров выполнять задание именно так, как нужно заказчику. В этом случае следует создавать специальные обучающие пулы и использовать дополнительные настройки (например, допускать до задания только тех толокеров, которые успешно прошли тренировку).
- Правильное таргетирование заданий на определенных исполнителей часто помогает заметно улучшить результаты разметки. Например, если для разметки каталога обуви вам требуется оценить пантолеты, то это задание лучше сразу отдать толокерам-девушкам.
- Далеко не все задачи можно отдать на откуп мудрости толпы. Всегда найдется задание, которое требует профессиональной подготовки и предельной внимательности. Но практически всегда в этих случаях с помощью предварительной фильтрации краудом можно упростить жизнь профессиональным экспертам, заметно снизить стоимость получения оценок и увеличить пропускную способность вашего рабочего процесса.
Были бы благодарны сообществу Хабрахабра за отзывы о работе бета-версии Толоки. Мы продолжаем работать над тем, чтобы любой заказчик мог получить максимально качественный результат без необходимости писать код, а каждый ответственный исполнитель — поощрение и достаточное количество заданий. И ваши отзывы помогут нашей команде в этой работе. Спасибо!