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

Теория

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

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

В механизме динамического перекрытия используются 5 главных параметров:
  1. Перекрытие — минимальное количество исполнителей, которые должны выполнить каждое задание пула.

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

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

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

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

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

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

Термины

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

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

Где:

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

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

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

В качестве априорного распределения оценок будет считать равномерное. Для оценки априорная вероятность —

где:

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

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

Если исполнитель ответил , то вероятность этого равна точности исполнителя . Если ответил иначе, то вероятность этого равна:

Где:

— оставшаяся вероятность;

— количество оставшихся ответов.

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

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

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
}

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

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

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

Далее смотрим на показатель