Документация Толоки

Динамическое перекрытие

Обратите внимание

Документация на русском языке может быть устаревшей. Самые последние изменения доступны в документации на английском языке.

Теория

Динамическое перекрытие позволяет изменять перекрытие в зависимости от того:

  • насколько хорошо исполнители справляются с заданием;
  • насколько согласованы ответы исполнителей.

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

В механизме динамического перекрытия используются 5 главных параметров:

  1. Перекрытие — минимальное количество исполнителей, которые должны выполнить каждое задание пула.

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

  3. Уверенность в агрегированном ответе — процент уверенности, после которого мы перестаем показывать задание исполнителям.

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

  4. Навык — определяет уровень доверия к ответам исполнителя.

  5. Выходные поля для агрегации — поля выходных данных, по которым рассчитывается уверенность в ответе.

Как это работает

Термины

  • q[i]q[i] — точность исполнителя;
  • KK — константа для сглаживания;
  • z[j]z[j] — наиболее популярный ответ;
  • z[x]z[x] — вероятность того, что оценка правильная.
  • EPSEPS — уверенность в агрегированном ответе.

Точность исполнителя q[i]q[i] считаем как:

q[i]=K+correct.golden.sets[i]2×K+total.golden.sets[i]q[i] = \frac{K+correct.golden.sets[i]}{2×K+total.golden.sets[i]}

Где:

KK — константа для сглаживания (начиная от 0,5) при недостаточном количестве ответов на контрольные задания.

При наличии нескольких оценок для задания высчитывается наиболее популярный ответ — для каждого варианта ответа суммируем q[i]q[i] исполнителей, выбравших его. Ответ с большей суммой считаем более правильным. Назовем эту оценку z[j]z[j].

По теореме Байеса считаем апостериорную вероятность того, что оценка z[j]z[j] — правильная.

В качестве априорного распределения оценок будет считать равномерное. Для оценки z[x]z[x] априорная вероятность — P(z[x])=1YP(z[x]) = \frac{1}{Y}

где:

YY — количество вариантов ответов.

Далее считаем вероятность того, что, оценка z[j]z[j] — правильная.

Если исполнитель ответил z[j]z[j], то вероятность этого равна точности исполнителя q[i]q[i] . Если ответил иначе, то вероятность этого равна:

1q[i]Y1\frac{1-q[i]}{Y-1}

Где:

(1q[i])(1-q[i]) — оставшаяся вероятность;

(Y1)(Y-1) — количество оставшихся ответов.

Таким образом рассчитывается то, что вероятности ошибок равномерно распределены по оставшимся оценкам.

Взяв все ответы исполнителей и, например, вариант z[x]z[x] , мы считаем вероятность того, что исполнители ответят таким образом, при условии, что правильным ответом был z[x]z[x] :

func z_prob(x int) : float {
    d = 1,0
    for w[i]: workers
         if answers[w[i]] == z[x]
            d *= q[i]
         else
            d *= (1 - q[i]) / (Y - 1)
    return d
}

Затем по теореме Байеса считаем вероятность того, что ответ z[j]z[j] — правильный:

r = 0
for z[i]: answer_options
    r += z_prob(i) * (1 / Y)

eps = z_prob(j) * (1 / Y) / r

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

Практика

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

Какие поля можно использовать
  • Строки и числа с допустимыми значениями.

    Допустимое значение должно совпадать с параметром value в нужном элементе интерфейса.

  • Логический тип.

  • Целые числа с минимальным и максимальным значениями. Разница между ними не должна превышать 32.

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

Поля, которые нельзя использовать
  • Массив.
  • Файл.
  • Географические координаты.
  • Объекты JSON.

Настройка перекрытия

  1. Создайте пул и заполните параметры.

  2. Установите минимальное перекрытие в поле Перекрытие.

  3. В расширенных настройках включите опцию Использовать динамическое перекрытие.

  4. Установите Максимальное перекрытие.

  5. Укажите Уверенность в агрегированном ответе. Чем выше значение, тем более согласованным будет агрегированный ответ. Не устанавливайте значение меньше 70.

  6. Выберите Навык для взвешивания ответов исполнителей.

  7. Отметьте Выходные данные для агрегации.

  8. Сохраните пул.

  9. Загрузите задания через умное смешивание.

  10. После завершения пула запустите Агрегацию результатов по навыку.

Примечание

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

Пример

Настройка динамического перекрытия для простой классификации.

Поле result имеет 3 допустимых значения — OK, BAD и 404.

Задание 1

Исполнитель А со значением навыка 70 ответил OK.

Исполнитель Б со значением навыка 90 тоже ответил OK.

Уверенность в агрегированном ответе OK — 97,7. Задание считается завершенным.

Задание 2

Исполнитель А со значением навыка 70 ответил OK.

Исполнитель Б со значением навыка 90 ответил BAD.

Уверенность в агрегированном ответе BAD — 76,1. Перекрытие увеличивается на 1.

Исполнитель В со значением навыка 80 ответил BAD.

Уверенность в агрегированном ответе BAD — 96,2. Задание считается завершенным.

Советы и рекомендации

  • Вместе с динамическим перекрытием не используйте правило контроля качества Повторное выполнение заданий после блокировки исполнителя. Это увеличит значение максимального перекрытия.

  • Устанавливайте уверенность в агрегированном ответе на уровне от 70 до 95 процентов.

    • При значении < 70% средняя точность агрегированного ответа будет недостаточна, чтобы доверять ответам исполнителей.

    • При значении > 90% средняя точность агрегированного ответа не будет расти, а стоимость разметки увеличится.

    Оптимальная уверенность находится на уровне 80%. При такой настройке соотношение «цена-качество» будет наиболее приемлемым.

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

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

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

  • Если вы редактируете обязательные поля, изменения применятся только к новым пулам. Существующие пулы будут работать в соответствии со старой версией проекта.

Что дальше

Решение проблем

Можно ли изменить перекрытие после запуска пула?

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

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

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