Здесь, с multinomial
- мы выбираем классы с полиномиальным распределением.
Из примера Википедии
Предположим, что при трехсторонних выборах для в большой стране кандидат А получил 20% голосов, кандидат Б получил 30% голосов, а кандидат C получил 50% голосов. Если шесть избирателей выбраны случайным образом, какова вероятность того, что в выборке будет ровно один сторонник кандидата А, два сторонника кандидата Б и три сторонника кандидата C в выборке?
Примечание: поскольку мы ' Исходя из предположения, что количество избирателей велико, разумно и допустимо считать вероятности неизменными после выбора избирателя для выборки. Технически говоря, это выборка без замены, поэтому правильное распределение - это многомерное распределение гипергеометрии c, но распределения сходятся по мере увеличения популяции.
Если мы присмотримся, мы делаем то же самое, выборка без замены .
torch.multinomial(input, num_samples, replacement=False, *, generator=None, out=None)
ref: https://pytorch.org/docs/stable/torch.html?highlight=torch%20multinomial#torch .multinomial
Многочленовый эксперимент статистический эксперимент, и он состоит из n повторных испытаний. Каждое испытание имеет дискретное количество возможных результатов. В любом конкретном испытании вероятность того, что конкретный результат произойдет, является постоянной (это было первоначальное предположение).
Таким образом, подсчет голосов может моделироваться с вероятностями. Классификация из "мягких" результатов - аналогичный процесс голосования.
Если мы повторим эксперимент достаточно много раз, мы достигнем максимально возможной вероятности.
Например, давайте начнем с начального probs = [0.1, 0.1, 0.3, 0.5]
.
Мы можем повторить эксперимент n
раз и посчитать, сколько раз индекс был выбран с помощью torch.multinomial
.
import torch
cnt = [0, 0, 0, 0]
for _ in range(5000):
sampled_Y = torch.multinomial(torch.tensor([0.1, 0.1, 0.3, 0.5]), 1)
cnt[sampled_Y[0]] += 1
print(cnt)
После 50 итераций : [6, 3, 14, 27]
После 5000 итераций: [480, 486, 1525, 2509]
После 50000 итераций: [4988, 4967, 15062, 24983]
Но этого не происходит при оценке модели, поскольку она не детерминирована c и требует генератора случайных чисел для имитации эксперимента. Это особенно полезно для симуляций Монте-Карло, а также для расчетов до и после. Я видел пример классификации графа, где использовалась такая оценка. Но я думаю, что это не распространено и (даже полезно) в большинстве задач классификации в машинном обучении.