Новый любимый лось:
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 до!📈
Это успех, господа и дамы. Мой новый фаворит.💃
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 до!
Это успех, господа и дамы. Мой новый фаворит.