2022-07-25 18:53:32
Demystifying Noise Contrastive Estimation Хороший пост про то, как вычисляются разные вариации contrastive loss’ов. Изначально проблема состоит в том, что если мы хотим выдавать скор того, насколько объект x (например, какое-то слово) подходит под контекст c, то эту оценку нужно нормализовать, посчитав скоры еще для всех остальных возможных x (например, для всех слов в словаре). Есть несколько подходов, как избавиться от этого шага:
– Local NCE: свести все к бинарной классификации – предсказываем, является ли x положительным примером, или он насемплирован из случайного шума. здесь функция аппроксимирует напрямую условную верятность p(x|c)
– Global NCE: монте-карло-семплим k примеров, и предсказываем, какой из k+1 является реальным. здесь функция аппроксимирует p(x|c) / q(x), где q – какое-то заданное случайное распределение, что тоже отбрасывает необходимость нормализовать на все остальные возможные x
– InfoNCE: по сути сводится к KL-дивергенции – чем больше непохожие (=независимы) наши примеры, тем больше KL дивергенция будет стремиться к 0
В посте собственно разбирается, как получаются лоссы / training objectives, в чем их допущения, и как вообще получается с математической точки зрения, что contrastive estimation отражает mutual information данных
https://jxmo.io/posts/nce
2.1K viewsedited 15:53