Недавно закончился Kaggle контест Cassava Leaf Disease Classification, в котором я участвовал. Задача соревнования была в том, чтобы натренировать модель определять по фотографиям болеют растения или нет. Я сделал себе пометку посмотреть решение тех, кто занял первое место, когда его опубликуют. И не пожалел!
Смотрим на решение 14 места:
https://www.kaggle.com/c/cassava-leaf-disease-classification/discussion/220751
Видим: огромный ансамбль. Семнадцать EfficientNet, 14 ResNext, 2 ViT. Хитрости с лейблами: часть моделей предсказывает не тип болезни, а бинарной здоровый/нездоровй, а одна модель вообще предсказывает ImageNet классы. Потом ещё всё это стакается, сверху Lightgbm. Страшно представить, сколько всего эти ребята перепробовали по части параметрво моделей, аугментаций, исправления шума в данных.
For the record, мой пайплайн решения был менее огромным, более креативным, но всё равно довольно сложным.
Все места от третьего и ниже, вплоть до того дна, где очутился я, выглядят как-то так. Много моделей, много всего попробовано. Кому-то хватило интуиции найти нужную комбинацию всех переменных и залететь в призовые места, кому-то нет.
Но всё это не имело никакого значения!
Смотрим второе место:
https://www.kaggle.com/c/cassava-leaf-disease-classification/discussion/220898
Парень залетел в соревнование в последний момент, сделал 3 сабмита (у всех остальных на лидерборде 100 и больше), взял второе место. Он гений? Нет, просто он нашел CropNet: модель, которая была претрейнута на листьях cassava для какой-то научной статьи, и использовал её. Никаких безумных ансамблей. Пришел, сабмитнул, победил.
Смотрим первое место:
https://www.kaggle.com/c/cassava-leaf-disease-classification/discussion/221957
Мы видим небольшой ансамбль. Ничего такого, что бы сделало его намного лучше 14 места или большинства других. Но есть ещё кое-что: CropNet. И всё, ребята побеждают с огромным отрывом от всех.
Вывод? Всё кроме CropNet не имело значения. Люди задаются вопросами, как же мелкий CropNet может давать такой прирост, чтобы гарантировать победу? Возможно он просто видел тестовые данные? Скорее всего.
Вот из-за таких приколов Kaggle бывает жутко фрустрирующим. Ты меряешься размером ансамбля с толпой ребят у которых больше GPU, чем у тебя, а потом кто-то достает свой CropNet. И всё, оказывается зря тысяча команд по всему миру нагревала атмосферу. Не всегда так бывает конечно - я участвовал в соревновании, где победило самое умное решение, а не мега-ансамбль или утечка в данных.
Смотрим на решение 14 места:
https://www.kaggle.com/c/cassava-leaf-disease-classification/discussion/220751
Видим: огромный ансамбль. Семнадцать EfficientNet, 14 ResNext, 2 ViT. Хитрости с лейблами: часть моделей предсказывает не тип болезни, а бинарной здоровый/нездоровй, а одна модель вообще предсказывает ImageNet классы. Потом ещё всё это стакается, сверху Lightgbm. Страшно представить, сколько всего эти ребята перепробовали по части параметрво моделей, аугментаций, исправления шума в данных.
For the record, мой пайплайн решения был менее огромным, более креативным, но всё равно довольно сложным.
Все места от третьего и ниже, вплоть до того дна, где очутился я, выглядят как-то так. Много моделей, много всего попробовано. Кому-то хватило интуиции найти нужную комбинацию всех переменных и залететь в призовые места, кому-то нет.
Но всё это не имело никакого значения!
Смотрим второе место:
https://www.kaggle.com/c/cassava-leaf-disease-classification/discussion/220898
Парень залетел в соревнование в последний момент, сделал 3 сабмита (у всех остальных на лидерборде 100 и больше), взял второе место. Он гений? Нет, просто он нашел CropNet: модель, которая была претрейнута на листьях cassava для какой-то научной статьи, и использовал её. Никаких безумных ансамблей. Пришел, сабмитнул, победил.
Смотрим первое место:
https://www.kaggle.com/c/cassava-leaf-disease-classification/discussion/221957
Мы видим небольшой ансамбль. Ничего такого, что бы сделало его намного лучше 14 места или большинства других. Но есть ещё кое-что: CropNet. И всё, ребята побеждают с огромным отрывом от всех.
Вывод? Всё кроме CropNet не имело значения. Люди задаются вопросами, как же мелкий CropNet может давать такой прирост, чтобы гарантировать победу? Возможно он просто видел тестовые данные? Скорее всего.
Вот из-за таких приколов Kaggle бывает жутко фрустрирующим. Ты меряешься размером ансамбля с толпой ребят у которых больше GPU, чем у тебя, а потом кто-то достает свой CropNet. И всё, оказывается зря тысяча команд по всему миру нагревала атмосферу. Не всегда так бывает конечно - я участвовал в соревновании, где победило самое умное решение, а не мега-ансамбль или утечка в данных.