Точная настройка 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 гипотезы.
- Beam Search: выбирает следующее слово с высокой вероятностью из n гипотез.
- Случайная выборка: следующее слово выбирается случайным образом из возможных гипотез, однако, поскольку задана высокая температура, слова с низкой вероятностью будут игнорироваться.
Пример кода
Примеры прогнозов
Таким образом, в целом GPT дает довольно хорошие результаты. Я считаю это лучшей моделью предсказания следующего слова. Пожалуйста, обратитесь к основной статье для дальнейшего обсуждения.