Студенты рассказывают, о чём пишут свои дипломы
Леонид Петров
Стажёр в группе распознавания текста
4-й курс СПбГУ, ШАД Яндекса
Тема диплома: «Методы извлечения информации о продукте из пользовательских объявлений в социальных сетях»
Я занимался вопросами улучшения поиска. Представьте, что кто-то ищет в Яндексе телефон, чтобы его купить. Человек пишет «Купить смартфон» и получает ссылки на маркетплейсы, например на Яндекс Маркет. Но частных объявлений в поиске он не увидит — притом что куда выгоднее покупать вещи с рук, а не в магазинах.
У таких объявлений есть проблемы: их пишут в свободной форме. Кто-то укажет «Продам айфон», а кто-то — «Есть ненужная яблочная мобила». Чтобы искать подобные объявления, мы использовали методы машинного обучения.
Для этого нам понадобились данные. Мы показывали модели много примеров релевантных объявлений под определённые запросы. Но сперва объявления нужно разметить: однозначно указать, о чём идёт речь в каждом. Это большой труд, на который может уйти несколько сотен часов. Поэтому в качестве разметчика мы использовали нейросеть на основе модели GPT 4. Но эта модель работала долго и «дорого» в плане вычислительных мощностей. Мы хотели собрать модель поменьше, быстрее и дешевле.
Поэтому мы занялись дообучением русскоязычных моделей T5-подобных архитектур — ruT5 и FRED-T5. Т5 — это архитектура-трансформер (энкодер-декодер-модель), где из поданной на вход последовательности извлекаются определённые признаки, чтобы на выходе сгенерировать новую последовательность, удовлетворяющую тем же признакам. Иными словами, такая модель «переписывает» объявления в понятный машине формат.
Сначала объявление проходит стадию предобработки: из него удаляются знаки препинания. После текст разбивается на токены и каждому из них сопоставляется эмбеддинг — определённое информационное векторное представление. Всё это прогоняется через энкодер и декодер. В итоге получается сгенерированная последовательность. С помощью простых алгоритмов она преобразуется в формат JSON. Например: [{«Title»: «телефон», «Price»: 1000, «Currency»: «USD», «Count»: «1»}].
Так мы обучили несколько моделей, которые отслеживают новые объявления и показывают их среди результатов в поиске. Наша модель смогла успешно найти и показать девять честных объявлений из десяти. Но в объявлениях с несколькими товарами её точность снизилась до 70%.
В любом случае результат получился отличным. Наши модели работали быстрее GPT 4 и оценивали объявления точнее.
Дима Васильев
Стажировался в команде YandexGPT Alignment
4-й курс МФТИ
Тема диплома: «Обучение больших языковых моделей с использованием внешней информации»
Нейросети иногда неверно отвечают на запросы пользователей. Причина в том, что большие языковые модели обучаются на ограниченных данных, зачастую устаревших. Даже если нейронка училась на информации 2020 года, она может часто давать неверные ответы в 2024.
Я старался сократить количество ошибочных ответов. Для этого мы решили научить модель работать с новой внешней информацией. Наша модель анализировала каждый запрос и решала, можно ли отвечать на основе имеющихся данных — или стоит посмотреть дополнительную информацию в сети.
Например, пользователь спрашивает, сколько стоит проезд в метро Нижнего Новгорода в 2024 году.
Ответ модели до обучения |
Ответ модели после обучения |
К сожалению, я не могу предоставить актуальную информацию о стоимости проезда в метро Нижнего Новгорода на 2024 год, так как цены могут меняться. |
На 2024 год стоимость проезда в Нижегородском метрополитене составляет:
|
Конечно, в идеале нейросеть должна всегда проверять информацию в сети, но на деле это часто оказывается сложно, долго и дорого. Так что наша «прыгающая» модель поможет точнее отвечать в некоторых случаях, не теряя скорости в базовых запросах.
Кстати, мы соревновались по качеству ответов с YandexGPT 3. Ответы нашей модели и ответы GPT сравнивали люди-асессоры. В результате мы только немного проиграли: 51 против 49.
Иван Когут
Разработчик машинного обучения в команде Яндекс Товарный поиск
2-й курс магистратуры ВШЭ
Тема диплома: «Исследование методов персонализированной генерации изображений на основе диффузионной модели»
Наверняка многие уже пробовали генерировать картинки с помощью искусственного интеллекта, например в Шедевруме. Но что, если хочется сгенерировать изображение себя на море? Или своей собаки в прикольном костюме? Тут стандартные предобученные text-to-image-модели бессильны: они ничего не знают ни о вас, ни о вашей собаке. В этом и состоит задача персонализированной генерации.
Моё исследование было посвящено персонализированной генерации людей. Всё-таки некоторых предобученная большая модель знает — а именно известных личностей. Если написать нейросети «Майкл Джордан», она создаст очень похожего на него человека. При этом рисовать обычных людей модель умеет плохо, но общее сходство уловить можно.
Это главная идея первого подхода, который был описан в статье. Подход заключается в том, что можно нашего человека получить приближённо — с помощью комбинации из нескольких звёзд. И задача модели — как раз научиться определять пропорции, в которых нужно взять известных людей для хорошего приближения нашего.
Мы протестировали другой подход, в котором модель принимала на вход изображение. Она по фотографии составляла очень подробное описание внешности любого человека, по которому уже после другая модель создавала образ. Мы проверили подход и поняли, что такой метод работает не очень хорошо, но может улавливать семантику и некоторые черты лица.
Исходя из этого решили использовать второй подход для улучшения первого: оставить лишь самых близких по внешности звёзд для конкретного человека — и только после этого выучивать нужную комбинацию. Так мы смогли эффективнее генерировать изображения людей.
Конечно, пока нейронки генерируют изображения людей не очень хорошо — но моя работа помогла понять, где мы можем совершить следующий прорыв в этой задаче.