Мы в ABBYY понимаем, как важно начинать строить карьеру в интересном для себя направлении еще в студенческие годы. Поэтому помогаем талантливым ребятам пробовать свои силы и развиваться уже на третьем курсе университета. Мы проводим летние стажировки, где даем ребятам настоящие «боевые» задачи. По итогам лучшие студенты получают предложения о работе.
Летняя стажировка помогает будущим сотрудникам не только получить опыт и проявить себя, но и изучить внутренние стандарты и процессы разработки компании. Кроме того, это еще и отличная возможность получить предложение о постоянной работе уже на четвертом курсе. Как правило, ABBYY предлагает стажерам частичную занятость для комфортного совмещения с учебой.
Мы уже не раз подводили итоги летних стажировок в ABBYY (тут, тут и тут), но еще никогда не рассказывали о том, как в целом это проходит в нашей компании, какие тестовые задания и задачи выполняли стажеры, и что думают о стажировке менторы. Все подробности – под катом.
Как было до COVID-19?
Обычно еще осенью, во время планирования бюджета на будущий год, наши сотрудники уточняли у каждого департамента об открытых вакансиях для стажеров. Зимой эти списки финализировали, а в марте ABBYY уже широко анонсировала летнюю стажировку среди студентов из разных вузов и направлений. Затем менеджеры собирали заявки, проводили собеседования, проверяли знания и отбирали кандидатов.
В связи с пандемией в 2020 году мы, как и многие крупные компании, приняли непростое решение отменить летнюю стажировку: это было небезопасно как для учеников, так и для сотрудников компании.
Поскольку в 2021 году ситуация с COVID-19 стала немного стабильней, мы возобновили традицию летних стажировок. Однако решили провести ее в гибридном мини-формате, только среди студентов МФТИ и только по одному направлению – AI (Artificial Intelligence)/ ML (Machine Learning). Несмотря на то, что формат летних стажировок изменился, специфика и сложность задач остались на прежнем уровне.
Летняя стажировка-2021
С учетом позднего анонса в этом году мы не рассчитывали получить большое количество заявок. Однако наши ожидания не подтвердились – мы получили 80 заявок от студентов МФТИ на прохождение летней стажировки в ABBYY.
Вначале со всеми кандидатами беседовали HR-специалисты, затем студентам предложили выполнить два несложных технических задания, чтобы понять их общий уровень знаний и навыков:
После уже менторы ABBYY назначали интервью кандидатам, которые лучше всего прошли все предыдущие испытания. По итогам отбора в этом году стажировку в компании проходили 11 студентов.
«Отбор кандидатов – непростая задача, поскольку заявок было довольно много. Совет будущим соискателям – старайтесь проявить себя заранее на мероприятиях, проводимых в университете. Шанс попасть на собеседование гораздо выше у студентов, которые уже показали себя с хорошей стороны», – поделился Head of Group NLP&ML, ментор летней стажировки Валерий Новицкий.
Почему AI/ ML?
Поскольку в этом году мы проводили стажировку в мини-формате, для нас было важно выбрать одно из наиболее приоритетных для компании направлений разработки. В этом году наш выбор остановился на области AI/ML.
«В области AI/ ML я работаю много лет, и сейчас она очень актуальна – большинство компаний делают на нее ставку, как и мы в ABBYY. Поэтому в стажировке приняли решение остановиться именно на этой тематике», – уточнил Head of Group, Visual Recording and Screenshot Analysis Group, ментор летней стажировки Сергей Кочетков.
Задачи
«Стажеры работали над прототипами для перспективных задач в области AI/ ML. Это было интересно для них и полезно для нас. Реальная работа имеет свою специфику, но за два месяца полноценно включиться в нее довольно сложно. В целом все стажеры хорошо продвинулись в решении своих задач. По окончании стажировки они продолжат заниматься той же или близкой к ней задачей», – сказал Валерий Новицкий.
К примеру, стажер Глеб занимался распознаванием действий пользователя по скриншотам. «Из пяти задач на выбор эта заинтересовала меня больше всего, поэтому я сразу ее выбрал. Она состояла в том, чтобы одной нейросетью решить всю задачу сразу (подход end to end) и понять ее эффективность. Исходя из итогов моей работы, куратор решил, что это решение перспективно и его стоит дальше совершенствовать. И я, уже как сотрудник ABBYY, продолжаю над ней работать», – рассказал Глеб.
Пример 1
Стажер Илья в качестве работы выбрал иерархическую кластеризацию документов. «Задача состояла в том, чтобы кластеризовать документы таким образом, чтобы в дальнейшем людям или алгоритмам было проще определять их тип. Моя технология – небольшое звено в огромной цепочке машинного обучения», – рассказал Илья.
В экспериментах Илья использовал три небольших моноязычных датасета: немецкий, русский и англоязычный, примерно по тысяче документов и десятку классов в каждом. Для измерения кластеризации он остановился на Adjusted Rand Index метрике, поскольку ее недостатки оказались менее существенны для текущей задачи. «Из ее достоинств: уважает измельчение, то есть не штрафует случай, когда исходный кластер оказался разбит на несколько более мелких; не зависит от топологии кластеров, в отличие от многих других метрик, которые завышают показатели на выпуклых множествах; оценка на случайном кластеризаторе близка к 0 – очень полезное свойство. Главный недостаток метрики – потребность в разметке, но в моем случае это не было проблемой», – уточнил Илья.
Pipeline состоял из четырех этапов: препроцессинг, векторизация, метризация, кластеризация.
«Сначала я занялся очищением документов от мусора (знаков пунктуации, стоп-слов и пр.), но, как выяснилось в ходе экспериментов, препроцессинг почти не влияет на качество кластеризации. Далее я переводил очищенные документы в векторы.
TF-IDF векторизация является стандартной для текстовых представлений, однако после нее размер эмбеддингов получается около 10 тысяч. Поэтому я решил попробовать и методы снижения размерности – LSA и LDA. По итогу LSA оказался лучше и стал ключевой оптимизацией во всем pipeline: сжатие эмбедингов до 10 элементов на 20% улучшило качество кластеризации, а также в четыре раза сократило время ее работы», – рассказал Илья.
Получив векторные представления документов, стажер приступил к их сравнению. Для этого он выбрал две метрики: евклидово расстояние и косинусную меру. «Косинусная мера в теории является более подходящей мерой сходства TF-IDF векторов. Однако на практике оказалось, что евклидово расстояние показало себя лучше», – сказал Илья.
После того, как появилась возможность сравнивать документы между собой, можно было приступить к их кластеризации. «В ходе экспериментов я опробовал четыре алгоритма кластеризации, причем все из них, кроме Affinity propagation, требуют явного указания количества кластеров. Поскольку пользователь не всегда знает, какое число подходит лучше, я реализовал автоматический подбор этого параметра. Для этого задается нижняя и верхняя граница на количество кластеров, после чего для каждого числа прогоняется алгоритм, и с помощью еще одной метрики качества Silhouette score выбирается то число, которое дало наиболее хорошо разделимые кластеры.
На Рисунке 1 показаны итоговые метрики качества для каждого алгоритма. Черные штрихи на графике — стандартное отклонение. Как показали измерения, у k-means более высокие метрики, хотя значения на втором датасете низкие. Также стоит отметить иерархическую кластеризацию, которая не выделяется высокими метриками, зато в среднем ведет себя более стабильно.
«Для визуализации результатов (Рисунок 2, цвета на картинках слева и справа добавлены для наглядности: красный слева и справа - не один и тот же класс) я использовал 2D t-SNE на примере иерархической кластеризации (т. к. она показывает одни из лучших результатов) на англоязычном датасете. Слева представлено истинное разбиение, справа — предсказанное. В целом исходные кластеры были предсказаны верно. Да, многие оказались разбиты на несколько более мелких, но такое поведение является нормальным», — подытожил Илья.
Пример 2
Стажеру Сергею предстояло разобраться с разрывными аннотациями в текстах, а именно найти решение по поиску сущностей, которые могут быть разбиты на части. «Эта технология может быть применена, к примеру, для выделения денежных сущностей, поскольку они достаточно часто встречаются в такой постановке задачи. Это существенно упростит работу с документами», – поделился Сергей.
В своей работе стажер использовал датасеты на английском языке, в которых были размечены вхождения денежных сумм.
Модель для решения проблемы разрывных аннотаций состоит из двух частей, которым предшествует получение общих признаков. Сначала с помощью BERT и Bi-LSTM получаем эмбеддинги для каждого токена, а затем строим на их основе Span Representation. Это позволяет размечать и связывать не просто токены, а целые спаны (непрерывные последовательности токенов). Полученные признаки используются в упомянутых выше частях модели: первая из них присваивает метку класса всем возможным спанам, а вторая – определяет наличие связи между размеченными спанами. В качестве этих частей могут выступать многослойные перцептроны.
«Результаты говорят о том, что подход, основанный на Span Representation, хорошо решает задачу NER, и при этом делает удобной работу с разрывными аннотациями. Размечая сущности с F1-score более 0.94, мы получаем возможность учитывать и разрывные аннотации. F1-score для них на момент окончания стажировки был около 0.62, что говорит о возможности дальнейшего улучшения подхода. Основной сложностью является то, что существует достаточно много различных типов разрывных аннотаций, при этом в реальных данных их встречаемость ниже 5% от всех аннотаций», – рассказал Сергей.
«После стажировки я перешел в штат ABBYY, поэтому сейчас я работаю в том числе и над усовершенствованием алгоритма. Это не может не радовать, поскольку эта тема по-прежнему остается для меня интересной», – подытожил Сергей.
Что еще нового?
В этом году мы также изменили формат подведения итогов стажировки. Раньше наши стажеры сдавали итоговый проект своим наставникам, по результатам которого менеджеры принимали решение о дальнейшем оффере кандидату. С этого года все наши стажеры должны были защитить свои проекты, выступив с короткой презентацией перед всеми менторами, приглашенными менеджерами и интернами стажировки. Каждое выступление было ограничено по таймингу – не более пяти минут.
Такой формат помогает стажеру показать не только практические знания, но и soft skills, включая способность определять главные тезисы проекта, донести аудитории свою мысль, а также публично выступать перед экспертами.
Для менторов такой формат тоже оказался полезным нововведением. Менеджеры могут сравнить задачи, узнать про новые подходы в их решении, а также предложить работу в своей команде, если у профильного ментора нет открытых вакансий.
«Новый формат защиты проектов мне очень понравился. Я думаю, что не совсем успешных проектов было 10-15%, и в этом случае пришлось упростить задачу так, чтобы результат все-таки получился. Остальные стажеры отлично справились со своими задачами. Это, кроме того, и заслуга руководителей, поскольку они смогли подобрать стажерам задачи по силам, рассчитав тайминг и квалификацию студентов, а также в целом руководить работой стажера», — поделился Сергей Кочетков.
По мнению стажера Глеба, для успешной защиты проекта необходимо не только тщательно проработать презентацию и текст, но и отрепетировать выступление так, чтобы уложиться в отведенный тайминг.
«Еще за несколько недель до защиты мы созванивались с ментором и составили примерный план того, как должна выглядеть итоговая презентация. Ближе к дедлайну, мы этот план скорректировали, я написал к нему текст, сделал презентацию, а затем тренировался выступать с таймером», — рассказал Глеб.
А вот стажер Сергей занялся составлением презентации к защите проектов еще в самом начале стажировки: «Мы с ментором начали готовить презентацию еще с первой встречи. У нас был созвон каждые две недели, где мы обсуждали результаты и план действий. И после каждого колла я добавлял в презентацию новый слайд, обновлял старые результаты. К тому же, поскольку мы не раз обсуждали многие детали презентации, подготовить финальное выступление было не так сложно», — добавил Сергей.
Итоги
По итогам двухмесячной летней стажировки из 11 кандидатов оффер получили шесть человек.
«Я думаю, что это не просто хороший, а отличный результат стажировки. Я бы советовал всем студентам активно проходить стажировки, ведь это не только возможность расширить знания и попробовать свои силы в боевых задачах, но и с большой вероятностью получить оффер и начать строить карьеру еще будучи на 3-4 курсе», – отметил Сергей Кочетков.
Все шесть стажеров очень талантливые ребята, и у нас нет сомнений, что они смогут построить успешную карьеру у нас в ABBYY.
«Работа стажеров оценивалась по нескольким критериям: успешность решения задачи, инициативность, коммуникабельность и внимание к деталям. Причем, успешность решения – не главное, задачи были сложными. Важнее было то, как задача решалась: смекалка, усидчивость, взаимодействие с куратором (обсудить решение, показать результаты).
Для нашего NLP-отдела стажировка закончилась двумя офферами из трех возможных. Думаю, это хороший результат, а также полезный для всех опыт: студенты получили практику и больше половины первую работ, а сотрудники отдела – опыт менторства и новых коллег. В программе стажировок я участвовал впервые. Надеюсь, что в следующем году удастся повторить», – пояснил Валерий Новицкий.
Что дальше?
«Я бы очень хотел принять участие в следующей стажировке. Помимо того, что для нашей команды мы нашли перспективных специалистов, так еще все руководители смогли прокачать свои менторские скиллы, что важно для дальнейшего карьерного роста», – заключил Сергей Кочетков.
На будущий год ABBYY планирует расширить направления стажировки – будем искать стажеров не только в разработку и тестирование, но и по другим направлениям.