Удивительный мир хакатонов: как я придумал для студентов задачку и что они с ней натворили

в 11:54, , рубрики: big data, Большие данные, искуственный интеллект, командная работа, машинное обучение, мтс линк, хакатон

Привет! Меня зовут Владимир Казаков, я руковожу продуктом «Обучение» в МТС Линк. А еще я с удовольствием помогаю организовывать и проводить хакатоны — это всегда десятки свежих идей, передающийся от участников драйв, новые контакты и море опыта для будущих разработчиков. Полгода назад в наш рабочий чат внезапно прилетело сообщение: «Ребят, срочно! МИФИ организуют хакатон, нужна задача, желательно отправить сегодня!». Вызов был принят, и мы подготовили задание по работе с большими данными. В этом посте расскажу, чем студенты могут удивить разработчика с 15-летним стажем, в чем их сильные стороны, а что еще надо подтянуть.

Удивительный мир хакатонов: как я придумал для студентов задачку и что они с ней натворили - 1

Как мы подбирали задачу

Мы развиваем продукт МТС Линк Формы. В нем хотим задействовать ИИ, который будет автоматизировать оценки развернутых ответов. Кроме обработки система должна помогать с анализом ответов на вопросы вроде «Что вас мотивирует лучше работать?» или «Как вы провели лето?». Для этой задачи предполагалось создание агрегированной обратной связи в виде облака слов или графиков частотности.

Мы хотим, чтобы анализ этих ответов шел быстро и требовал минимум ресурсов. Я подумал, что эту рабочую задачу как раз и будет интересно решить студентам. На хакатоне мы планировали дать ребятам тысячи ответов, чтобы они подготовили список слов, которые можно преобразовать хоть в график, хоть в облако слов.

Дополнительная задача — объединение синонимов и схожих выражений. Например, ответы о мотивации могут включать такие слова, как «зарплата», «аванс», «ЗП» или даже «бабосики». Все это нужно свести в одну категорию, чтобы итоговая статистика была информативной.

Наши ожидания

В начале мы планировали набрать только десять участников. Но откликнулось 27 команд, что увеличило объем работы для организаторов. Но именно это дало возможность проверить схожие гипотезы с разных сторон — каждая команда по своему реализовывала фичи, и мы могли оценить большое количество вариантов.

От всех них мы ждали:

Умения обрабатывать данные и работать с текстовыми моделями. Участникам нужны базовые знания работы с текстовыми данными, навыки извлечения ключевых слов и создания сводных отчетов на основе текстов. Это ключевые навыки для контент-анализа, но в первую очередь — для подготовки данных для работы с ИИ, популярность которых набирает обороты с каждым днем.

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

Способность работать в команде. Успешное решение требует распределения задач, обмена информацией и объединения усилий. Участникам нужно было проверять разные идеи и выбирать те, которые дают лучшие результаты.

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

Работа жюри

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

Оценка заняла два полных вечера с 18 до 21 часа. Первый раунд завершился раньше, так как не все команды успели записаться на доклад. Но три часа чистой работы мы получили. Участники презентовали свои решения, объясняли методологию и показывали свои результаты.

В начале оценки мы еще находили возможности для обратной связи — могли похвалить за удачные решения и указать на недочеты. Но к концу второго вечера из-за большого объема информации различия между командами становились менее заметными. Выделить уникальные аспекты каждой работы было непросто. Оценка последних участников оказалась особенно трудной из-за усталости и похожих ответов, но я честно искал, за что похвалить каждую команду и что в их решении можно было бы сделать лучше.

Решение задач

Большинство команд придерживалось стандартных методов обработки текстовых данных. Основной — Word2Vec. Его использовали для выделения ключевых слов и анализа частотности. Для ускорения процесса некоторые участники применяли лемматизацию и стемминг, что помогало уменьшить количество уникальных слов и упростить их обработку. С таким подходом команды быстрее анализировали данные и достигали нужного результата.

В целом подходы у ребят были похожие. Работая с Word2Vec, они адаптировали модель под свои нужды и комбинировали ее с различными механиками. Одни искали средние значения векторов, другие применяли разные способы обработки для выделения общего смысла. Одна из команд, понимая, что LLM не справится с анализом всех данных сразу, воспользовалась стратегией разделения запросов на чанки по 200 слов. Это позволило параллельно обрабатывать несколько блоков текста, экономя время.

Нейросети также применяли для выполнения вторичного анализа, используя его для определения синонимов и создания групп слов с похожими значениями. В этих случаях команды отправляли в LLM предварительно обработанные слова и получали обобщенные варианты, что помогало создать точные и компактные результаты.

Большинство участников хакатона работало на Python. Он справедливо считается наиболее удобным и дружелюбным для задач машинного обучения. Команды активно использовали готовые библиотеки, благодаря чему объем написанного ими кода оставался небольшим. Основные алгоритмы и методы обработки данных уже есть в библиотечных решениях, и команды не занимались их дополнительной настройкой.

Кстати, здорово выделился своим нестандартным подходом один из участников. Он не использовал готовые библиотеки для обработки данных, а обучил собственную модель. Его крошечная нейронка состояла всего из трех слоев — входного, скрытого и выходного — и обучалась на небольшом наборе данных. Модель могла распределять слова по трем категориям.

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

Презентации: креатив vs минимализм

Если сами решения были похожи, то свои результаты команды демонстрировали по-разному. Одни сосредотачивались на базовой функциональности и создавали простую серверную часть. Она возвращала данные в формате JSON или CSV с отсортированным списком, очищенным от синонимов и стоп-слов. Такой минималистичный подход соответствовал заданию, и баллы за это я не снимал.

Другие команды подходили более творчески. Они создавали облака слов, причем некоторые — по маске, чтобы визуально сформировать, например, «МТС» из всех ключевых слов. Были и те, кто пошел еще дальше, добавив полноценный веб-интерфейс с продуманным дизайном. В нем были фоновые видео и элементы из рекламных материалов МТС:

Удивительный мир хакатонов: как я придумал для студентов задачку и что они с ней натворили - 2

Отдельные участники использовали нестандартные способы визуализации. Например, одна из команд создала scatter plot, на котором слова были объединены в группы и разложены на двумерном графике. Хотя этот вариант не очень хорошо подойдет для анализа отзывов на вебинаре или тестов, его можно использовать для обработки научных статей:

Удивительный мир хакатонов: как я придумал для студентов задачку и что они с ней натворили - 3

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

Чтобы сохранить объективность, проверка шла по записям и заметкам, сделанным вручную, а финальные баллы выставлялись на следующий день после защиты. Конечно, сложно полностью абстрагироваться от впечатлений, и самые яркие команды могли получить более высокие оценки.

Что хакатоны дают участникам

Для студентов это отличная возможность прокачать «насмотренность». Они знакомятся с разными подходами, видят, как другие презентуют свои решения. Это позволяет оценить собственные идеи и, возможно, найти вдохновение для будущих проектов.

Для меня хакатон был полезен тем, что я на практике увидел реализацию нескольких своих гипотез. Например, что альтернативы LLM — Word2Vec, лемматизация и стемминг — для наших задач работают на уровне нейросетей и отнимают гораздо меньше ресурсов.

Мне понравилась подготовка участников: они показали уверенные знания и навыки на уровне junior+. С реализованной практической задачей им будет проще найти первую работу. Ну а если вы сами только хотите стартовать карьеру в ИТ, то хакатоны — отличный способ получить интересный и полезный опыт, проверить свои знания и показать умения.

Автор: vmkazakoff

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js