Мои ошибки на Kaggle соревнованиях 2022!
Делайте правильное разбиение кросс-валидации и доверяйте ему. Данная проблема возникла с нами, мы не один раз спорили какое разбиение лучше всего выбрать на соревнование U.S. Patent Phrase to Phrase Matching, я топил за разбиение с учетом групп (например, GroupKFold), а мои товарищи - за обычное разбиение (например, KFold). Спор был из-за того, что два разных разбиений при одинаковых сидах, гиперпараметров и другими настройками, давали максимально разные результаты: мое разбиение ~0.83, моих товарищей: ~0.85 на таблице лидеров и кросс-валидации! Согласитесь, результаты очень сильно отличаются даже по меркам бизнес задач. В итоге, я не смог переубедить моих товарищей и мы вылетели из золотой медали, я не отрицаю, что возможно проблема могла быть не в этом, но после окончания соревнования некоторые люди сделали сравнение и как раз получили то самое отличие между золотой и серебряной зонами. Тем не менее, я благодарен им за их вклад и за то, что многому научился.
Никогда не усложняйте и начинайте с банального! Этот урок, как и предыдущий, я извлек из U.S. Patent Phrase to Phrase Matching. Идея была очень простая - учитывать схожести других объектов из группы для определения оценки для данного объекта. Моя идея: извлечь представления (embedding) из всех объектов группы, объединить их в один большой тензор и подать на вход CNN или RNN модели, где количество каналов/последовательностей - количество объектов в группе. Данного “монстра” очень сложно обучить и требует невероятные ресурсы, да и опыта с работой сверточнных сетей у меня было немного, в итоге забил на это.
Идея из самых лучших решение: просто-напросто добавить важную информацию (с кем сравнивалось и схожесть) в текст! Данных подход только увеличивал входную последовательность, тем не менее, инференс и обучение было значительно быстрым нежели у меня.
При Semi-Supervised Learning начинайте с soft предсказаниях. Это уже была для нас с моим напарником (https://t.me/kaggle_fucker) новой проблемой, мы решили добить Feedback Prize - Predicting Effective Arguments на последней недели, у нас до этого были какие-то наработки, но мы решили действовать с новым подходом, который выложили на форуме. Мы все обучили, сделали несколько разных моделей (diversity всегда помогает прыгать по таблице лидеров), в итоге за 1-3 дня допрыгали до ~80ого места. В конце решили сделать Pseudo Labeling, так как он казался многообещающим. Он нам ничего не улучшил, а чтобы попробовать soft предсказания времени толком не было (на генерацию и на обучение уходило ~24 часа). В конце концов, после прочтения лучших решений выяснилось, что мы могли легко войти в топ 50 и получить серебренную практически за одну неделю.
Возможно, это не все мои ошибки, которые были в этом году, но они мне запомнились больше всего, так как они так или иначе могли очень сильно прибавить в результатах и уже возможно мог быть Kaggle Competitions Master (не слишком ли оптимистично звучало?). Ну ничего, на ошибках учатся, поэтому я не сдаюсь!
Post #18
1.23K
- 👍 29
- 🫡 4
- ❤ 2