Мой подход к созданию динамических комментариев в реальном времени для футбольной среды Google с использованием языковой модели GPT-2.

Если вы уже много лет играете в серию видеоигр FIFA, вы, вероятно, слышали эти строки в комментариях к игре много раз: -

«Привет всем, здесь Мартин Тайлер и Алан Смит, и наш сегодняшний матч проводится в Премьер-лиге».

«Он прочитал намерения оппозиции осуществить перехват».

«Что ж, мы можем получить новости о травме. Я думаю, Джефф Шривз занимается этим делом ».

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

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

Игровая среда

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

Прекрасная вещь в этой среде заключается в том, что она позволяет нам играть в игру шаг за шагом, и на каждом шаге дает нам полную информацию о состоянии игры с использованием OpenAI's gym API.

Такая информация, как забитые голы, выданные желтые карточки, текущий режим игры (штрафной, удар от ворот и т. Д.) И многое другое, легко доступна нам в коде Python. Это позволяет очень легко выводить события совпадения и передавать их в языковую модель, чтобы говорить об этих конкретных событиях во время игры.

Генератор текста

Это подводит меня к части создания комментариев в этом проекте. Я использую языковую модель OpenAI’s GPT-2, о которой я уже рассказывал ранее в своей предыдущей статье на случай, если вам интересно узнать о ней больше. По сути, учитывая небольшую текстовую подсказку по определенной теме, эта нейронная сеть может генерировать длинные и случайные предложения по этой теме, что делает ее идеальной для нашего варианта использования в этом проекте. Подавая информацию об игре в качестве подсказки для этой модели, мы можем позволить ей сгенерировать остальной комментарий.

Сбор тренировочных данных

Я скачал аннотации на английском языке с YouTube-видео матчей FIFA и PES, что дало мне корпус стандартных футбольных комментариев. К сожалению, в этих аннотациях много ошибок и нет знаков препинания. Единственный способ исправить это - вручную отредактировать корпус, что отняло у меня большую часть времени в этом проекте!

Обучение и результаты

Затем я доработал предварительно обученную версию 345M модели GPT-2 на этом наборе данных. Используя это, мы можем предоставить информацию о матче из нашей футбольной среды в качестве входных данных для этой модели и позволить ей заполнить остальной текст комментария, как показано в примере формата ниже.

ВХОД: И это цель этой стороны!

ВЫВОД: Что ж, если вы продолжите входить в такую ​​зону, мяч упадет за вас, и он упадет идеально для него. Это урок для любого во время гола: помогать удерживать позиции в 18-ярдовом боксе, в 6-ти ярдовом боксе, и вы забьете!

Чтобы воссоздать комментарии в реальном времени во время игры, я использую движок преобразования текста в речь на языке Python под названием pyttsx3 для считывания вывода модели GPT-2. Результаты аудиокомментариев в реальном времени показаны на видео, вставленном ниже.

Последние мысли

Основываясь на моем опыте использования этого подхода, я заметил / узнал следующее: -

  1. GPT-2 каждый раз создает динамические и разнообразные предложения, но многие фразы в этих предложениях повторяются из-за того, что большая модель довольно легко запоминает небольшой набор обучающих данных. Я попытался ограничить эту проблему, завершив процесс обучения достаточно рано, чтобы предотвратить чрезмерное подгонку входных данных. Однако идеальным решением было бы значительно увеличить размер обучающей выборки, что, как мы надеемся, приведет к еще большему динамизму вывода модели.
  2. Нам нужно предоставить гораздо больше контекста в качестве входных данных для модели, например, более долгосрочную сводку игры (время матча, счет и т. Д.), А также более краткие краткосрочные детали того, какое событие произошло (кто забил гол и каким образом - заголовок или дальний и т. Д.). Надеемся, что с большим контекстом модель сможет описать специфику события, а не просто делать случайные предположения, как в моем случае.

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

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



Я также хотел бы поблагодарить Джонатана за полезные обсуждения по поводу обучения модели GPT-2 на аннотациях YouTube и за то, как улучшить результаты.

Спасибо за чтение. Если вам понравилась эта статья, вы можете следить за моими работами на Medium, GitHub или подписываться на мой канал на YouTube.