В этой статье мы хотим поделиться своим опытом, который поможет вам подготовиться к любому хакатону (hackathon). Наверняка вы уже слышали про этот специфический формат соревнований для айтишников. На них ставятся практические задачи, которые участники решают за определённое время, имея ограниченные ресурсы. Обычно участники представлены командами, поэтому крайне важно уметь работать сообща. Помимо денежного приза победители получают известность. В дальнейшем это способствует обращению к ним с заказами на решение подобных задач.
Для работодателя хакатон заменяет десятки собеседований и знакомство с заявленными в резюме проектами (которые ещё неизвестно кто и как делал). Он сразу получает представление о реальных возможностях готовой команды разработчиков и может пригласить лучшую на свой проект.
Российская ИТ-компания «Криптонит» тоже участвует в хакатонах, причём в разных качествах. Наши молодые специалисты пробуют силы в профильных конкурсах, а их более опытные наставники сами организуют хакатоны для поиска сильных команд. Вот пара историй для лучшего понимания деталей.
Veni, cogitavi, vici!
У нас есть лаборатория ИИ, сотрудники которой приняли участие в хакатоне SafeSpeak-2024, организованном университетом МТУСИ и институтом AIRI. Заявки на этот конкурс подали наши специалисты Aнна Xoлькинa и Kapина Янышeвcкaя, специализирующиеся на алгоритмах обработки естественного языка.
Задача хакатона была на злобу дня: требовалось представить решение для борьбы с мошенниками, говорящими с жертвой от имени кого-то из её знакомых. Техника таких атак называется аудио-спуфинг и всё чаще используется в генерации дипфейков. Командам нужно было создать модель машинного обучения для обнаружения таких дипфейков и обеспечения безопасности голосовой связи.
Результаты оценивались по метрике EER (Equal Error Rate). Чем ниже EER, тем меньше ошибок допускает модель. Также учитывались технические отчёты о проделанной работе, подаваемые в формате научных статей. В них отражались подробности реализации.
Наши коллеги провели обзор научный публикаций и выполнили детальный анализ данных для определения требований робастности (помехоустойчивости) моделей. Уже на их основе они выбрали данные, модель и стратегию обучения.
Решение команды «Криптонит» достигло метрики EER 5,6%, что оказалось лучшим результатом. Ближайшего соперника мы обошли почти в три раза: у других команд показатель EER был 15,4% и больше. Бонусом в ходе конкурса мы обсудили множество идей, которые сейчас помогают нам в решении других задач из области обработки речи.
Это был первый опыт участия в хакатоне для нашей команды из лаборатории искусственного интеллекта, но благодаря слаженной работе и рациональному подходу она заняла первое место.
По итогам участия мы сформулировали советы по эффективной командной стратегии на хакатоне:
-
Заранее определите пул ролей в команде исходя из задачи и распределите их между собой. Например, для решения ML/DL-кейсов мы рекомендуем иметь роли исследователя, ML/DL-инженера и аналитика данных. Лидер команды может выполнять по совместительству одну из этих ролей.
-
Перед стартом хакатона поближе познакомьтесь с задачей. Как правило, организаторы предоставляют минимальную информацию, которой достаточно для самостоятельного изучения и подготовки. Посмотрите статьи по теме, готовые модели и данные.
-
Систематизируйте ведение документации. Под документацией мы определяем отчёты по экспериментам и базу знаний команды. Заранее продумайте структуру отчётов и хранения полезных источников информации, чтобы у каждого члена команды был к ним доступ.
-
Определите удобную форму коммуникации. Например, на нашем опыте, обсуждения в оффлайне сказываются на результатах более благоприятно, чем общение по переписке.
-
Оставляйте время на восстановление. Если хакатон длится несколько дней, выделите достаточное количество времени на восстановление сил. Отдых — это важно.
-
Грамотное представление результатов имеет такое же большое значение, как и сам результат. Если вы добились лучшей метрики, но не можете грамотно преподнести результат жюри, то не стоит рассчитывать на призовые места. Продумайте заранее важные аспекты вашей работы и структурируйте презентацию так, чтобы она была максимально понятной.
-
Не пытайтесь сразу решить задачу с нуля. Посмотрите, как готовые модели решают вашу задачу, посчитайте метрики и определите, есть ли у них потенциал для улучшения. Как правило, улучшить готовую модель гораздо быстрее, чем придумывать что-то полностью своё.
-
Уделите внимание анализу тестовых данных, сформируйте список требований, которым должна удовлетворять ваша модель. Чёткое понимание того, с какими данными вы работаете и с какими сложностями должна справляться модель — очень важно и напрямую определяет ваш результат.
Взгляд из-за кулис
Давайте посмотрим на хакатон глазами организаторов. Опустим чисто административные сложности и сосредоточимся на самом конкурсе. Здесь есть как минимум три очень важных момента.
Первое: постарайтесь максимально полно и однозначно сформулировать задачу. Иначе участники конкурса начнут решать не её, а что-то по мотивам исходного задания.
Второе: чётко пропишите все условия конкурса, особенно ограничения. По умолчанию работает принцип «разрешено всё, что прямо не запрещено». Если нужно задать определённый набор инструментов, исключить какие-то ресурсы — так и напишите.
Именно разночтения в трактовке условий зачастую рушат механику интересных конкурсов. Навыком однозначно формулировать требования хорошо владеют юристы, но их язык настолько специфический, что отпугивает участников. Поэтому нужно искать баланс между лёгкостью восприятия и точностью формулировок. Когда вы записали условия и обсудили их между собой, покажите их другим коллегами и проверьте, что они верно всё поняли.
Третье: составление рейтинга результатов. Подробно пропишите методику оценки: все сравниваемые показатели, условия начисления и снятия баллов. Судейство должно быть максимально прозрачным и давать верифицируемый результат.
Чтобы эффективнее выстроить взаимодействие, озвучьте участникам ожидания организаторов. В общем случае их можно свести к следующим базовым принципам:
1. Чёткое понимание задачи и требований к ней (умение команды соответствовать задаче).
2. Находчивость при решении задачи (приветствуются неординарные подходы).
3. Командная работа (можно собрать хоть нобелевских лауреатов, но если они не сработаются — задача не будет выполнена).
4. Качественное представление результатов работы. Небрежность ещё не признак гениальности. Эйнштейн хоть и делал заметки на салфетках, всё же потрудился оформить свои размышления как научные статьи и отправить их в Annalen der Physik.
Вместе со SkillFactory в декабре 2024 года «Криптонит» организовал хакатон по теме «Обучение языковой модели для классификации эмоций в текстах на русском языке». В нём приняли участие 7 команд, состоявших из студентов МФТИ и УРФУ.
Мы подготовили практическую задачу для студентов магистратуры «Наука о данных» в МФТИ и «Инженерия машинного обучения» в УРФУ на базе Skillfactory. Участникам конкурса предстояло обучить языковую модель классифицировать эмоции в тексте на русском языке, используя базовый список из 7 классов: гнев, отвращение, страх, радость, грусть, удивление, нейтральность.
Работы оценивались по двум направлениям — достигнутая метрика модели на тестовом наборе данных и выступление с презентацией. Все участники справились с заданием и превзошли минимально требуемый порог метрики, а лучшая работа превзошла его на 10%.
Её авторам и другим студентам, чьи подходы нам показались интересными, мы предложили возможность стажировки (и последующей работы) в «Криптоните».
Новый хакатон от нашей лаборатории искусственного интеллекта уже идёт. Подробности читайте на нашем канале в Telegram. Подавайте заявки, участвуйте и побеждайте!
Автор: AI-SHA