pseudolabeling | Unsorted

Telegram-канал pseudolabeling - Запрети мне псевдолейблить

3348

Канал о пути к Kaggle competitions (теперь уже) GrandMaster и поте, которым обливаешься в процессе Последний авторский канал про мл, претендующий на искренность и позволяющий ставить клоунов Для контакта пишите в сообщения канала, они бесплатные

Subscribe to a channel

Запрети мне псевдолейблить

Сильно, но хитро поднялись на прайвете. Риск был калькулированный, была интуиция что минимум четверо из золотой зоны резко опустятся, но не было уверенности, что это будем не мы.

Стало быть, второе золото нафармлено, взят второй ариел в ряд и третий год подряд будет invited talk на neuralIPS от вашего любимого блогера.

Честно скажу, без команды ничего бы не вышло.

На 5 месте кстати наш ВМКшный коллега, который вообще через физику решал соревнование. Выложат райтапы- разберу вам самое лучшее с этого года.

Эмодзи клоуна доступна, мб этим постом обновим предыдущией рекорд в 39 штук

Читать полностью…

Запрети мне псевдолейблить

Ну раз H1b больше не получишь, придется вам тоже фармить кгм и надеяться получить о1 визу

Читать полностью…

Запрети мне псевдолейблить

Еще немножко соревновательного контента

Читать полностью…

Запрети мне псевдолейблить

А я думал что вот это было грязно

Читать полностью…

Запрети мне псевдолейблить

Волчат уволили из Газпром медиа. Потешно, что за год никто не заметил разницы, но это скорее говорит о самом работодателе, чем о работниках. Хотя я уже давно заметил, что лучшие наймы- это когда ты знакомых с прошлых работ кандидата спросил про то, какой он человек и инженер. Always has been

/channel/rockyourdata/5344

А еще Дуров включил принудительные платные лайки и мне это не нравится. Теперь они отображаются даже если их никто не поставил. Слишком навязчиво.

Читать полностью…

Запрети мне псевдолейблить

Пора создать канал в мессенджере, где можно вычислять ставящих клоунов по госуслугам?
Да 😍
Нет 🗿

Читать полностью…

Запрети мне псевдолейблить

Топ-1 в #BirdClef2025 от Никиты Бабича запретите ему псевдолйблить

Никита всё соревнование доминировал — был на первом или втором месте. Я лично не видел его ниже чем на втором.

Данные
Дополнительные птицы
Докачал из архива Xeno ещё 5 489 записей по тем же классам, что и в трейне.

Дополнительные лягушки и насекомые из других таксонов
17 197 записей насекомых и амфибий, в том числе не входящих в лейблы для соревнования. Амфибии и насекомые имеют высокую частоту повторяющихся специфичных звуков, что сильно отличается от птиц — отлично прокачивает модель на низкочастотных и “других” классах.

SED-модели (Sound Event Detection).
Прошлые участники тоже их использовали, но я хотел именно тут объяснить что за SED такой.
Классическая классификация говорит «что это за звук», а SED ещё и «где он начинается и где кончается».
На шумных данных, где вокруг слышно несколько видов на одной записи, это был ключ к успеху вместе с псевдолейблингом.
По сути это мост от per-sample к per-frame разметке, похожий на MIL-задачу. Сильно мне напоминает MIL модели, которые делают что-то похожее, но на картинках
На картинке пример инференса SED: как и почему он помогает на шуме.

Валидация
Нормальной валидации не нашлось, поэтому Никита валидировался по ЛБ. :chad:

Многоэтапное обучение
Бейзлайн
15 эпох, Cross-Entropy, AdamW, Cosine Scheduler
backbone’ы: EfficientNet-0 + RegNetY-8
LB: 0.872

Псевдолейблинг I + MixUp
Генерим псевдолейблы на неразмеченной части.
Смешиваем MixUp: настоящие лейблы + псевдолейблы (малый вес последних).
Добавляем StochasticDepth (drop whole conv-блоки, p=0.15). StochasticDepth- это когда у нас есть дропауты, которые выкидывают целые блоки из бекбона и глубина получается недетерминированной.
Тренируем 25–35 эпох.
LB: 0.872 → 0.898

Power Scaling + псевдолейблинг II
Просто в лоб вторая итерация давала слишком шумные псевдолейблы, которые нельзя было повторно переиспользовать.
Решение:
new_preds_i = preds_i^(1/power_c) / sum(preds_j^(1/power_c))
Это позволило пройти 4 раунда псевдолейблинга с улучшением качества.
LB: 0.898 → 0.930

Отдельный пайплайн для насекомых и амфибий
Тренируем классификатор на этих данных.
Берём предикты по нужным классам из трейна и заменяем ими результаты в основном ансамбле.
LB: 0.930 → 0.933

В конечно итоге собираем ансамбль:

EfficientNet-l0, B4, B3 (3 раунда псевдолейблинга)

RegNetY-016 (2 штуки, 4 раунда)

RegNetY-008 (1 штука, 1 раунд)

Отдельный EfficientNet-B0 для классификации насекомых и амфибий

Из этого решения наверно для себя самыми горячими идеям вынесу:
1. PowerTransform для псевдолейблов, чтобы идти в несколько раундов. Идея будто даже похожая на жесткие псевдолейблы чем-то
2. SED как способ уточнить разметку на псевдолейблах

Читать полностью…

Запрети мне псевдолейблить

Без багов кстати не обошлось:
Из-за изменения системы учета лайков на ноутбук, циферки теперь расходятся. В профиле я бывал максимум 283, а судя по графику бывал и повыше

Читать полностью…

Запрети мне псевдолейблить

А еще, видимо из-за наплыва индийских грандмастеров в дискашнах, медальки в дискашнах исчезли. Надеюсь, навсегда

Читать полностью…

Запрети мне псевдолейблить

У вас вообще появились продакты потому, что Мэнти Кейган написал о том, какие они полезные в книге »Inspired«. При этом он опирался на свой десятилетний опыт работы инженером в HP с 1980 по 1990. После этого он еще 10 лет совмещал роли CTO и CPO в Netscape и Ebay. И в 2002 (за 15 лет до публикации), он ушел в консалтеры и продает свой ценнейший опыт за почасовую оплату. Смог бы ваш продакт буквально придумать объекто-ориентированное программирование в лабе HP? Надеюсь, да

Скелетрон пока не вернется, я так книжки не успеваю быстро читать

Читать полностью…

Запрети мне псевдолейблить

У вас митинги на работе не полчаса, а 25 минут, не для экономии времени, а потому, что в книжке »Сам себе MBA. Самообразование на 100%. Джош Кауфман« написано, что это способ сэкономить время менеджеров. Причем вообще-то эта идея предложена для оптимизации кастдева и сапорта

Скелетрон вернется с умными мыслями завтра

Читать полностью…

Запрети мне псевдолейблить

У вас каждый день дейли не потому, что дейли эффективны. У вас дейли потому, что в книжке »Scrum. Революционный метод управления проектами. Джефф Сазерленд« написано, что их можно делать чтобы инженеры-механики могли рассказать о своих проблемах и о том, что им не хватает запчастей

Скелетрон вернется с умными мыслями завтра

Читать полностью…

Запрети мне псевдолейблить

4 место в #BirdClef2025
Коротко, но ценно: иногда простота выигрывает.

Поскольку на BirdCLEF нас оценивают именно по AUC, логично оптимизировать его напрямую.
AUC-лосс устойчив к переобучению, но не поддерживает soft labels, как, например, кросс-энтропия.


class SoftAUCLoss(nn.Module):
def __init__(self, margin=1.0, pos_weight=1.0, neg_weight=1.0):
super().__init__()
self.margin = margin
self.pos_weight = pos_weight
self.neg_weight = neg_weight

def forward(self, preds, labels, sample_weights=None):
# Разделяем положительные и отрицательные предсказания
pos_mask = labels > 0.5
neg_mask = labels < 0.5
pos_preds, pos_labels = preds[pos_mask], labels[pos_mask]
neg_preds, neg_labels = preds[neg_mask], labels[neg_mask]

if pos_preds.numel() == 0 or neg_preds.numel() == 0:
return torch.tensor(0., device=preds.device)

# Веса отражают уверенность soft-label
pos_w = self.pos_weight * (pos_labels - 0.5)
neg_w = self.neg_weight * (0.5 - neg_labels)
if sample_weights is not None:
sw = sample_weights.unsqueeze(1).expand_as(labels)
pos_w *= sw[pos_mask]
neg_w *= sw[neg_mask]

# Считаем pairwise-разности и лог-лосс
diff = pos_preds.unsqueeze(1) - neg_preds.unsqueeze(0)
loss_matrix = torch.log1p(torch.exp(-self.margin * diff))

# Усредняем по всем парам с учётом весов
return (loss_matrix * pos_w.unsqueeze(1) * neg_w.unsqueeze(0)).mean()


Что еще работало и не работало:
Semi-supervised learning на неразмеченном датасете:
Сначала обучил 10 моделей EfficientNet на размеченной части.
Сгенерировал «псевдо-лейблы» для неразмеченных данных.
Обучил следующий раунд моделей уже на объединённом наборе.

Отказался от самодистилляции и сложных схем — не заводилось.

Лотерея или мастерство? Автор поднялся с 11 места на 4-е на прайвете! Возможно, дело не только в удаче.

Читать полностью…

Запрети мне псевдолейблить

👉 Поддержать бота 👈

Читать полностью…

Запрети мне псевдолейблить

BirdCLEF+ 2025

Очередная часть ежегодного соревнования от Cornell Lab of Ornithology.

Дано:
– 12 ГБ аудиозаписей птиц, насекомых, рептилий и т. д.
– Источники (около–опенсорс):

1. xeno-canto.org
2. iNaturalist
3. Colombian Sound Archive (CSA) института Гумбольдта в Колумбии

Первые два источника — чистый краудсорс, разметка «грязная»:
1. у части семплов встречаются продолжительные комментарии колубийского натуралиста на испанском;
2. муха залетает в микрофон и гудит 40 секунд из 50 секунд записи вообще-то птицы;
3. мой любимый фейл — запись птицы, где звук обрывается громким «бултых», а дальше — полная тишина на 90 сек. Видимо не все микрофоны пережили сборку датасета

Разметка (для всех семплов):
1. Основной лейбл — целевая живность, которую нужно предсказывать.
2. Вторичный лейбл — какие ещё виды могут быть слышны. Конечно же не гарантирует то, что все виды на записи хотя бы отмечены
3. Координаты
4. Автор записи
5. Оценка качества (только для xeno-canto)
6. Источник данных (одна из трёх библиотек)

Трейн/тест сплит:
Общий пул разбит по записям, но обработан по-разному:
В train — полные аудиофайлы.
В test — нарезки записей по 5 с.
Например, из записей длительностью 30 сек и 20 сек получится 10 тест-семплов:
первые 6 — с основным лейблом первой записи;
остальные 4 — с лейблом второй.

Метрика:
Macro-ROC-AUC — сортировка вероятностей внутри каждого класса и усреднение без учёта частоты встречаемости.

Ну и конечно же ограничения на железо:
90 минут CPU-only

Тут кстати тренд:
2025- 90 min CPU-only
2024- 120 min CPU-only
2023- 120 min CPU-only
2022- 9 hours с доступом к GPU
2021- 9 CPU часов или 3 GPU часа

Как решать будете?

Читать полностью…

Запрети мне псевдолейблить

Последний сабмит в соревнование сделал. Молимся Горку и Морку о удачном броске вверх и ждем ночной прокрас прайвета.

Вы можете присоединиться ко мне, а можете поставить клоунов, не помню как вам там больше нравится

Читать полностью…

Запрети мне псевдолейблить

RecSys Challenge 2025.

Я уже рассказывал, что в этом году мы заняли четвертое место на RecSys Challenge. В июле подали статью на воркшоп соревнования, который проходит на самой конфе RecSys. Статью приняли! Мы доделали camera-ready версию, и с сегодняшнего дня подробное описание нашего решения можно почитать на arXiv.

От ревьюверов есть strong accept и комментарий “goldmine of practical insights” :)

Пригодится как разработчикам рексистем, так и участникам всевозможных соревнований по рекомендашкам.

Ссылочка — https://arxiv.org/abs/2508.06970

Читать полностью…

Запрети мне псевдолейблить

E-CUP возвращается. Реальные данные. Масштабные проекты. Большие призы

E-CUP 2025 — соревнование, где Everything as code. Решай ML-задачи в стиле Ozon Tech. Призовой фонд — 7 200 000 рублей 🔥

🗓 Регистрация: https://cnrlink.com/ecup25pseudolabel
💻 Формат участия: онлайн
👥 Команда: от 1 до 5 человек
🎯 Для кого: Data Scientists, ML-специалисты, аналитики данных, дата-инженеры, специалисты Big Data и разработчики, которые интересуются ML/DS.

Что вас ждёт:
🔹 Работа над проектом для миллионов пользователей на основе данных от ведущего e-com в России.
🔹 Призовой фонд — 7 200 000 рублей для девяти сильнейших команд.
🔹 Обмен опытом с экспертами Ozon Tech.
🔹 Эксклюзивный мерч и подарки.
🔹 Питчинг — онлайн или очно на конференции E-CODE. Финалистам Ozon Tech предоставит билеты и оплатит поездку.

Регистрация открыта до 17 августа включительно

Читать полностью…

Запрети мне псевдолейблить

Пока я мало пишу в канал про свои соревнования, позволю себе украсть вдохновение у @abacabadabacaba404 и предложить вам почитать классный блогпост про КФ. Автор дважды брал золото IOI и в этом году взял серебро:
https://codeforces.com/blog/entry/142591

Отправьте своим школьникам и первокурсникам, если они хотят быть лучшими

Читать полностью…

Запрети мне псевдолейблить

Папищики, бесплатная реклама Rust тулзами:
Вместо того, чтобы использовать по большим файлам grep, можно установить себе

ripgrep
и пользоваться мультитредингом, чтобы искать по патерну в N раз быстрее 😡

А то мне тут понадобилось поискать по логам на 200 гб в формате txt и это оказывается может быть долго


!rg -Fi 'keyword1' my_big_dump.txt -j8 > search_result.txt


И теперь у вас уже 8 тредов, вместо одного. А можно ведь и больше тредов поставить

Читать полностью…

Запрети мне псевдолейблить

Видимо единственный способ избежать бутылки- это занять третье место

Читать полностью…

Запрети мне псевдолейблить

Топ-2 в #BirdClef2025
В этот раз опытне птичники, у которых в команде чел с первым местом в 2022 и 2023 годах!

📊 Данные
Использовали данные из прошлых соревнований, что собственно и помогала в прошлые года +
Подтянули дополнительно записи из Xeno Archive.
Тут помог баг, который был обнаружен еще в 2023: API Xeno Archive выдаёт максимум 500 семплов на вид — большинство команд этого не учли. Багу два года, и его никто не чинит. Кто знает- тот знает

🎛️ Предобработка
Для обучения берём первые 7 секунд каждого файла и рандомно вырезаем 5 секунд.

Баланс между разнообразием данных и интуицией: голос птицы чаще слышен в начале записи.

🛠️ Архитектура и оптимизация
tf_efficientnetv2_s + RAdam
eca_nfnet_l0 + AdamW

Обе модели тренировали 50 эпох
Loss: Focal + BCE
Scheduller: Cosine LR

⚖️ Веса семплов
Учли с весами, чтобы компенсировать дисбаланс классов:


python
sample_weights = (
all_primary_labels.value_counts() /
all_primary_labels.value_counts().sum()
) ** (-0.5)


🚀 Ключевые бусты
1. Предтренинг на всём Xeno Archive
Вычистили низкочастотные классы и текущее тесто-трейн
Предобучили на задаче классификации и получили бекбон с глубоким пониманием спектрограмм записей животных

Результат: 0.84 → 0.87

2. Псевдолейблинг (запрещенная техника)
Предсказываем на неразмеченных данных → pseudo1
Оставляем только скоры > 0.5 → pseudo2
Зануляем слабые метки (< 0.1): pseudo2[pseudo2 < 0.1] = 0
Обучаем модель на таргет pseudo2 и повторяем цикл
После двух итераций: 0.87 → 0.89 → 0.91 (третий круг не даёт профита)

3. TTA
Сдвигали записи в Test time augmentation на 2.5 секунды влево и вправо, а потом усредняли предсказания.
0.91 -> 0.922

В общем опыт прошлых соревнований доовольно сильно решает, особенно если помнишь интересные баги связанные с источниками данных

Читать полностью…

Запрети мне псевдолейблить

Вчера все верно догадались: Кагл убрал дискашны насовсем. Теперь осталась только ачивка Kaggle Legacy discussion Master/GM. А еще он убрал Novice/Contributor и оставил просто Unranked/Expert/master/GM

И это отлично. Каглу уже давно пора воровать элементы вовлечения у другого популярного сайта и толкать аналитику катализируюшую гиперфокус. Только не за подписку, а ради вовлечения пользователей и удержания. Теперь можно посмотреть, как менялся ваш рейтинг во времени. Верю, что ASI построят все равно кагглеры, а не резерчеры.

Из открытий- ранкинг не так быстро падает, как я ожидал. Все еще есть смысл концентрироваться на циферках.

А еще теперь апвоуты ноутбуков считаются только от экспертов и форк ноутбуков автоматически ставит на него палец вверх.

Читать полностью…

Запрети мне псевдолейблить

Теперь на каггле дают 'предупреждения' за то, что выкладываешь даталик в паблик.
Два предупреждения- бан
https://www.kaggle.com/competitions/neurips-open-polymer-prediction-2025/discussion/588565

🤡️️️️🤡️️️️🤡️️️️

Читать полностью…

Запрети мне псевдолейблить

Ваш проект называют стартапом-внутри-компании не из-за его перспективности и инновационности, а потому что Эрику Рису в »Lean Startup« нужно было продать свою книжку не только предпринимателям, но и менеджерам среднего звена без специального образования.

Весь кейс построен на примере компании Intuit, где они в качестве эксперимента сделали систему отчетности для малого бизнеса. Но вот шутка в том, что команде дали карт-бланш на самоуправление. Полный. Дают ли стартапам-внутри-нашего-сувереннного-бигтеха такой карт-бланш? Вопрос риторический

Скелетрон вернется с умными мыслями завтра

Читать полностью…

Запрети мне псевдолейблить

3 место в #BirdClef2025

Данные:
1. Выкорчевали человеческий голос с помощью паблик кернела с каггла.
2. Взяли весь датасет 2025 года и к нему доложили 80% датасета 2023 года, добавив 112 новы классов. Оставшиеся 20% данных 2023 использовали для валидации. Локальная валидация не билась с ЛБ, но такая схема давала лучшую оценку сходимости модели.
3. Дополнительно вытянули еще данных из обоих открытых источнико, Xeno-Canto и INaturalist.
4. Запсевдолейбили всю неразмеченную часть, чтобы еще немного улучшить итоговые модели

Модели:
Обучили зоопарк моделей на двух видах спектрограмм. Вообще почти всегда есть смысл покрутить параметы построения спектрограмм для того, чтобы увеличить разнообразие и не потерять в качестве. Главное одну модель не учить на двух видах.

Список моделей
tf_efficientnet_b0_ns
tf_efficientnetv2_b3
tf_efficientnetv2_s.in21k_ft_in1k
mnasnet_100
spnasnet_100


Интересные приемы для обучения:
1. Семплировали случайные отрезки, а не честную нарезку по 5 сек. Говорят, так лучше училось
2. Добавляли человеческий голос для аугментации. На мой взгляд не сильно вяжется с удалением голоса из изначального датасета, но видимо использовали этот прием чтобы голос 'равномерно' размазать по всему датасету
3. FocalLoss
4. Использовали Model Soup. Это способ 'ужать' в одну модель несколько чекпоинтов. Усредняем веса например 20 resnet c одинаковой архитектурой и обученных на одних данных. Получаем почти ту же стабильность, что и усреднение 20 отдельных предикшнов этих моделей, но со скоростью инференса и весом одного resnet.
Кстати, тут можно обычно докрутить и делать только GreedySoup: пробовать в ансамбль добавлять только те модели, которые делают предикты лучше. Но опять же, тут надо верить в свой CV, а в этом соревновании наверно никто не верил в свой CV.

Для сабмита использовали Post-processing with power adjustment. Идея проста, работает для очень классификации с очень большим числом классов. Берем предикты, из них выбираем n самых 'уверенных' и усиливаем их, занижая скоры для прочих классов.

Читать полностью…

Запрети мне псевдолейблить

#соревнование
Обзор международных соревнований в DS за прошлый год: на каких платформах, что используют победители, какие конкурсы проходят и т.п. Такие отчёты каждый год выходят (но тут ни разу ссылок на них не давал).
https://mlcontests.com/state-of-machine-learning-competitions-2024/

Читать полностью…

Запрети мне псевдолейблить

Пятое место #Birdclef2025

Мануальная обработка данных
Это вообще та самая 'секретная техника', которую все ленятся делать. Данные полезно ковырять/слушать смотреть руками
Использовали Silero для того, чтобы найти записи с человеческим голосом, затем слушали их уже своими ушами и вырезали все фрагменты, где слышен человек.
Вообще у Silero есть бот, так что я им пожалуй и озвучу этот раздел поста.
Для классов с низкой частотностью (меньше 30 семплов в трейне) дополнительно послушали все записи и из каждой вычистили участки, где птиц не слышно.
Для трейна брали только первые 30 сек записи, а для низкочастотных 60 сек. Там, где семплов было меньше 20 для класса- апсемплили, чтобы 'разудть' трейн.

Модели
Стакали кучу эффишентнетов. Благо они с легкостью влезали в ограничения по CPU
• 4x tf_efficientnetv2_s
• 3x tf_efficientnetv2_b3
• 4x tf_efficient_b3_ns
• 2x tf_efficient_b0_ns


Но важно что тренировали в три стейджа. В каждом FocalLoss, Adam, Cosine Annealing + warmup

Первый стейдж:
только основной набор данных, только основной таргет

Второй стейдж:
Основной таргет + псевдолейблы, только основные размеченные данные + двухэтапная самодистилляция

Третий стейдж:
Использовали все данные. Для каждого батча брали половину из размеченных данных, половину из неразмеченных. Для основного набора испольовали основные лейблы + псевдолейблы с второго этапа, для неразмеченных- только псевдолейблы
Ну и еще дважды самодистилляция.

Если вы шарите, то объясните плз в комментах почему самодистилл работает и почему его есть смысл больше двух раз делать? Там еще и перфоманс на самодистиллах растет. В комментах есть график того, какие резульатты получаются от уровня дистилла

Читать полностью…

Запрети мне псевдолейблить

Ну я пост про решение написал, вот вам тизер

Читать полностью…

Запрети мне псевдолейблить

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

Ну или на следующей...

Читать полностью…
Subscribe to a channel