Точная настройка GPT-1 с данными Swiftkey для предсказания следующего слова

Это продолжение основной статьи Предсказание следующего слова с использованием данных Swiftkey

GPT-1 — это преобразователь только для декодера, который использует маскированное собственное внимание для предсказания следующих слов на основе вероятности . GPT-1 обучается на данных с размером словаря: 40478 и максимальной длиной последовательности: 512 . Он разрабатывает языковую модель. Я точно настроил это, используя данные ключа Swift. В следующих разделах я подробно рассмотрю архитектуру и детали тонкой настройки.

Разработка функций

Модель GPT принимает предложения в качестве входных данных для построения вероятностной модели во время обучения.

Шаги для генерации данных:

  • Очистка корпуса
  • Кодирование слов в корпусе с помощью GPT — Tokenizer.
  • Составление предложений длины 19 из корпуса
  • Генерация этих предложений с помощью Data Collator

Пример кода

Как работает тонкая настройка GPT-1?

Во-первых, GPT предварительно обучается на неконтролируемом корпусе для разработки языковой модели. Следующее уравнение вероятности максимизируется.

где k - размер последовательности.

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

В этом случае m также является длиной каждой последовательности.

Таким образом, соединяя эти 2 уравнения, мы получаем окончательное уравнение в виде:

Таким образом достигается тонкая настройка.

Архитектура модели

Я использовал GPT-1, потому что он имеет гораздо более низкие параметры по сравнению с GPT-2 и GPT-3, поэтому подходит для среды с небольшим объемом памяти.

Пример кода:

Ссылка на Github: https://github.com/kurchi1205/Next-word-Prediction-using-Swiftkey-Data/blob/main/GPT%20Model.ipynb

Результаты обучения

Потеря поезда: 4,778

Результаты теста

Проигрыш в тесте: 5,52

Предсказание следующего слова

Я использовал 3 разных способа предсказания следующего слова.

  1. Жадный поиск: выбирает наилучшее следующее слово на основе наибольшей вероятности из 1 гипотезы.
  2. Beam Search: выбирает следующее слово с высокой вероятностью из n гипотез.
  3. Случайная выборка: следующее слово выбирается случайным образом из возможных гипотез, однако, поскольку задана высокая температура, слова с низкой вероятностью будут игнорироваться.

Пример кода

Примеры прогнозов

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