Новый любимый лось:

SigLIP Log-Sigmoid
loss 🌿



Крч, недавно ребята анонсировали в SigLIP модифицированный log-sigmoid лосс. И да, это тот, который в reward юзают для обучения. 😎



Об этом уже писал тут. Обещали быстрый, с малыми затратами по компьюту эффект для contrastive learning. В их случае image2text на примере CLIP-like.



А так как я маньяк на всякие self-supervised штуки а-ля metric/contrastive learning, взял да и реализовал лосю со статьи, но в своём стиле.



Было:

LogSigmLoss = -E[LogSigmoid(Ri -Rj)],

где R=dot(emb1, emb2.T)
- значение близости между двумя эмб матрицами. Там могут лежать текст эмбы или текст эмбы и картиночные эмбы.



В статье: добавляется температура и биас так, что R=dot(emb1, emb2.T)*exp(T)+bias



При этом близость косинусная, тк эмбы перед этим L2 нормализуют.



У меня чет не завелось для текстов с нормализацией L2. Поэтому я просто модифицировал свой adaptive margin loss к виду SigLIP. А именно везде, где у нас близости, добавил обучаемый T и bias и загнал в LogSigmoid, где пары имеют близость:



PosSim - без изменений dot-prod между позитивной парой.



NegSim=Log[Sum(exp(neg_mul*exp(T) +bias))] , - это чудовище плата за отсутствие нормализации.



Итого сравнил до и после результаты с добавлением и без обучаемых параметров температуры и смещения. На наших метриках ранжирования recall@10 сходится к лучшим значениям в 3-4 раз быстрее! Это при одинаковом батче, схеме lr scheduling и тп. К примеру recall@10 = 0.74 был достигнут за 27 эпох против 102 до! 📈



Это успех, господа и дамы. Мой новый фаворит. 💃