Борис Шапошников перешел на второй курс магистратуры «Глубокое обучение и генеративный искусственный интеллект». К этому времени он уже успел поработать в VK, Тинькофф и международном стартапе. Чем привлекательно машинное обучение, что будет с GPT-моделями, как публиковаться в международных журналах, ездить на конференции и работать со студентами — читайте в нашем интервью.— Как прошел учебный год?В первом семестре были фундаментальные базовые курсы, например, по компьютерному зрению, и на всех них на одной-двух лекциях нам давали основы, а дальше — более современные подходы. Мы сразу на каждом курсе начали выполнять проекты. В итоге у всех студентов, а нас было не очень много, человек 30, появились работы, которые можно положить в свое портфолио, и они выглядят достаточно внушительно.
Ранее я занимался больше искусственным интеллектом в текстах, и курс по обучению с подкреплением во втором семестре мне был очень полезен, я много нового узнал. Но в этом семестре было больше прикладных модулей, которые востребованы сейчас в индустрии, нужны ML-инженерам. Я же себя скорее вижу как ученого и работаю сейчас исследователем машинного обучения, чему, как мне показалось, во втором семестре уделяли меньше внимания, но кажется, весь следующий год как раз будет посвящен именно исследовательским аспектам и математической стороне машинного обучения, его теоретическим сторонам.
— Трудно ли совмещать учебу с работой?Это в принципе возможно, но в сессию может быть тяжеловато. Мои исследования искусственного интеллекта, которые я веду по работе, позволяют мне закрывать курсовые и практики. Я просто беру какую-то свою профессиональную задачу и анализирую ее в рамках учебы. Сейчас я работаю в исследовательской команде Тинькофф. Наша цель — публикации по итогам конференций по машинному обучению. Сейчас пишу статью, целясь в конференцию ICLR, но надеюсь, что она в конечном итоге выльется в мою магистерскую.
— А какая тема статьи?Сейчас очень популярны языковые модели, и рывком в их развитии стало обучение конкретным инструкциям и задачам, например, переводу или суммаризации. Обучать можно не только с помощью инструментов NLP (Natural Language Processing), но и с помощью обучения с подкреплением, где используется такая модель, которая имитирует обратную связь человека. То есть ты собираешь ответы языковой модели, показываешь их человеку парами, и задача человека — решить, какой из текстов лучше. На основе этой информации обучают модель наград, задача которой сымитировать мнение человека.
Проблема в том, что для обучения этой модели все-таки нужна человеческая разметка, а она дорогая, требует сил, времени. И я придумал способ, как можно обучить модель, которая будет работать так же, как модель, обученная с человеческой разметкой, но при этом данных не потребуется совсем. В предобученной языковой модели уже достаточно знаний. Можно эти знания извлечь и преобразовать в модель, которая бы выдавала число, показывающее, насколько хороший текст. Я придумал специальную формулу, функцию потерь, которая позволяет сделать модель более уверенной в выставлении оценки тексту.
— Выглядит революционно.Это так, но есть много рисков, что в итоге не получится. Пока что у меня есть только удачные эксперименты, что уже удивительно. Я рад, что что-то получается, но готов к тому, что в любой момент все провалится, возможно, придется искать какие-то другие идеи. Но без рисков не было бы и научной новизны. Гарантий, что метод 100% будет работать, нет, но если будет и все получится, то это очень круто.
— Как валидировать такую модель? Как понять, что она справляется не хуже человека? Все равно надо как-то посмотреть человеческим взглядом на результат ее работы?Для проверки я все-таки использую датасет с человеческой разметкой. В нем вопрос и 2 ответа на него. Один из ответов предпочтительный — выбранный человеком. Нужно чтобы оценка модели совпадала с мнением человека.
— Какие еще задачи уже решали в магистратуре?На модуле по текстовой обработке данных я недавно решал задачу сегментации — автоматического разбиения текста на абзацы и тематические секции. Это полноценный проект, для которого нужно было написать статью и оформить
гитхаб-репозиторий. В целом очень серьезная работа.
На курсе «Инфраструктура больших данных» весь семестр мы делали один большой проект из 8 частей — 8 домашних заданий. У каждого свой вариант, своя задача, датасет и стек. Надо построить большой автоматизированный процесс машинного обучения, где модель тестируется, обновляется, правильно хранятся данные.
Для «Разработки нейронных сетей» я обучал модель для классификации видео с YouTube, ставил эксперименты с различными архитектурами, придумывал что-то свое. Определял тематику видео по кадрам, описанию. В итоге остановился только на кадрах, и то не всех — сэкономил в памяти и скорости.
— По идее это можно использовать, наверное, в больших архивах, в которых очень много пленки, видеозаписей, но никто никогда не занимался их упорядочиванием?Да, действительно.
На том же курсе по нейросетям был проект по выделению именованных сущностей в бизнес-текстах. Это могли быть фразы, предложения, словосочетания, отдельные слова. С помощью машинного обучения я выделял эти сущности, специфичные для конкретного домена документов, и классифицировал их. Затем учил модель предсказывать связи, относящиеся к разным сущностям. Очень полезная задача для анализа и упрощения текстов, возможно, для дальнейшей суммаризации и выделения ключевых моментов.
— У тебя много проектов, которые связаны с написанием научных статей. Получается, важно, чтобы у студентов не просто были проекты, а их результаты еще и фиксировались и в дальнейшем публиковались в журналах?Да, у нас был отдельный курс в первом семестре «Академическое письмо», посвященный тому, как правильно писать научные статьи, какие параметры у них есть, как оценивать их значимость, искать литературу, на которую ссылаться, структурировать свои мысли, чего избегать. В итоге мы готовили обзор литературы — композицию идей из различных научных статей — в виде, конечно, научной статьи. Также на курсе по обработке естественных языков выполняли отчет по проекту в виде научной статьи с соблюдением всех правил, структуры, научного языка.
— Когда ты начал работать в Тинькофф?Недавно, с 1 июня. До этого полтора года работал в VK, также в отделе прикладных исследований. Единственное, у нас не было цели публикации научных статей, важны были только результаты, которые мы можем применить в компании. Эта работа вылилась в мой бакалаврский диплом.
— Чем именно ты там занимаешься?Я придумал, точнее, модифицировал
необычный способ токенизации, обработки текстовой последовательности. Обычно текст разбивается на фрагменты, конвертирующиеся в числа, вектора, с которыми работают модели. Но модель можно обмануть, добавив в текст ошибки, пробелы, транслитерацию или специальные символы. Например, когда пользователь пишет токсичный комментарий в соцсети, он может заменить букву К на вертикальную палку и фигурную скобку. Это невозможно распознать классическими методами. Поэтому мы придумали превращать текст в изображения и обрабатывать их сверточными сетями. В таком случае, если пользователь поменял букву визуально, мы это распознаем, потому что для модели это изменение станет незначительно. То есть вектор, получаемый с помощью сверхточной нейросети, будет примерно такой же, как для неискаженного символа. Мы много экспериментировали с искусственными шумами, и метод действительно улучшил качество детекции. Преимущество модели еще и в том, что она использует гораздо меньше памяти: не нужно хранить предобученные вектора, которые соотносятся с проверяемыми — достаточно хранить веса в сверточных сетях. Это позволяет использовать архитектуру на мобильных устройствах.
С двумя студентами московской Вышки, у которых я был неформальным научным руководителем, мы доработали модель для задачи детекции языка для переводчиков. Подробно про разработку
я рассказывал на конференции «Тинькофф».
— Я так понимаю, что VK пока не стал внедрять этот алгоритм у себя? Почему?У VK пока нет проблем с обходом правил модерации. Мы скорее думали наперед. Но там же я разрабатывал классификатор токсичных комментариев для обычной ситуации. Писал код на C++ и Go, выкатывал в продакшн, оценивал нагрузку, ставил эксперименты. Вот эту мою модель внедрили. Мне удалось сократить поток оскорбительных комментариев, приходящих на ручную модерацию, в 4,5 раза.
— Почему перешел в Тинькофф?Хотелось развиваться как ученому в области искусственного интеллекта, придумывать что-то новое, публиковаться в международных журналах, общаться с людьми, ездить на конференции, работать со студентами, — вносить больший вклад в науку и образование. Сейчас я занимаюсь тем, что мне очень нравится.
— Как и когда ты изначально увлекся машинным обучением?На втором курсе бакалавриата я стажировался в VK. Занимался бэкэндом подкастов, писал на PHP. Не остался там тогда, но познакомился с их командой машинного обучения. Ребята меня зацепили. Тут и математика, которую я любил со школы, и умение запрограммировать нейронную сеть, и при этом фундаментальные знания: нужно много думать, так как много направлений, и все интересные.
Потом на третьем курсе в ИТМО у нас были модули по машинному обучению. Я параллельно смотрел онлайн-лекции от ШАДа, Вышки, МФТИ. Умудрился год поработать бэкэндером в стартапе в Осло. Мы делали инструменты для удобного сбора и аналитики медицинских данных о пациентах. Одновременно я читал научные статьи по машинному обучению, продолжал смотреть курсы лекций и подумал в какой-то момент, что надо поменять область, перейти в машинное обучение, серьезно заняться этим и начать работать.
На четвертом курсе изучил соответствующие вакансии VK, прошел собеседование, и меня взяли. В России не так много людей, которые занимаются исследованиями искусственного интеллекта. Как правило, все они знают друг друга, если не лично, то точно через несколько рукопожатий.
— Во что стоит углубляться в машинном обучении и в искусственном интеллекте? Скажем, в области GPT-моделей.Эта область на взлете. Еще мало, что есть. Языковые модели придумали, но в конкретных задачах ChatGPT работает не всегда хорошо, не всегда получается извлечь нужную информацию. Дело даже не в подборе промпта, а в том, как правильно построить математический аппарат, чтобы из предобученных языковых моделей, которые, безусловно, обладают большой мощью и большими знаниями, извлечь ту информацию, которая нужна для какой-то более конкретной задачи, при этом минимизировать разметку данных, время и вычислительные мощности. Вдобавок, ChatGPT — модель с закрытым исходным кодом, доступна только по API, куда бизнес не станет отправлять чувствительные данные, это небезопасно.
Поэтому перед многими встает задача — разработать что-то подобное под свой домен и свои конкретные цели, возможно, сделать модель не такой большой, и снизить количество весов, чтобы адекватно, за минуты, использовать на тех ресурсах, которыми обладает компания.
Много работ, в которых GPT лежит в основе архитектур для решения специфических задач, например, математических. Уже сейчас ChatGPT может пройти вступительный тест в MIT. Google и Huawei, насколько мне известно, активно работают над мультимодальными моделями, которые помимо текста умеют анализировать картинки, то есть описывать, что изображено, возможно, брать какую-то информацию оттуда и выдавать картинки, обрабатывать звук и видео, дополнять информацией из интернета. Мне кажется, в ближайшие 5−10 лет будет много работ по объединению этих доменов в искусственном интеллекте.
Еще видеоинтервью с Борисом можно посмотреть здесь.