Урок 2. Как работает языковая модель
Языковая модель — нейросеть, обученная продолжать текст. Большие языковые модели (LLM — large language model) обучены на огромном количестве текстов и поэтому умеют отвечать на вопросы, пересказывать, переводить, писать письма и код. На них работают чат-боты с ИИ. В этом уроке — как модель составляет ответ и почему этот способ иногда даёт уверенную чепуху.
Главная идея: следующий кусочек текста
Модель получает текст и оценивает, каким может быть следующий кусочек, — для каждого варианта свою вероятность. Выбирает один вариант, дописывает его к тексту и повторяет всё снова, уже с удлинённым текстом. Так, кусочек за кусочком, и получается ответ. Модель не ищет готовый ответ в базе данных — она его порождает (генерирует).
Принцип легко увидеть на игрушечной модели. Она смотрит только на одно предыдущее слово: считает, какие слова шли после него в «обучающем» тексте, и выбирает самое частое.
text = "кот спит на диване . кот ест рыбу . кот спит на окне . собака спит на полу ."
words = text.split()
# Обучение: для каждого слова — какие слова и сколько раз шли после него
counts = {}
for current, following in zip(words, words[1:]):
counts.setdefault(current, {})
counts[current][following] = counts[current].get(following, 0) + 1
print("После «кот»:", counts["кот"])
print("После «на»:", counts["на"])
# Генерация: на каждом шаге — самое частое следующее слово
def generate(word, steps):
result = [word]
for _ in range(steps):
options = counts[word]
word = max(options, key=options.get)
result.append(word)
return " ".join(result)
print(generate("собака", 4))После «кот»: {'спит': 2, 'ест': 1}
После «на»: {'диване': 1, 'окне': 1, 'полу': 1}
собака спит на диване .Модель выдала «собака спит на диване» — а такой фразы в тексте не было. Каждая пара слов в ней знакома модели, поэтому фраза вышла правдоподобной, но верна ли она — модель не знает и знать не может. Запомните этот пример: на нём держится вся тема ошибок ИИ.
Настоящая языковая модель устроена несравнимо сложнее. Она учитывает не одно слово, а весь текст запроса и разговора, а вместо подсчёта пар у неё миллиарды весов нейросети. Почти все современные языковые модели построены по схеме трансформер (transformer): она умеет связывать между собой далёкие части текста. Но принцип тот же — вероятное продолжение.
Токены
Модель читает не буквы и не слова, а токены — кусочки текста. Частое слово может быть одним токеном, редкое делится на несколько частей, а иногда токен — это одна буква, знак или пробел. Как именно делится текст, зависит от модели. Длину запроса, ограничения и цену сервисы обычно считают в токенах. Подробно — в справке Что такое токен.
Как модель обучают
- Предобучение. Модель читает огромное количество текстов — книги, статьи, сайты, код — и учится угадывать следующий токен. Так она набирается знаний о языке и о мире. Это самый долгий и дорогой этап: для большой модели нужны тысячи видеокарт и недели работы.
- Дообучение на диалогах. Модель обучают на примерах «просьба — хороший ответ», чтобы она выполняла просьбу, а не просто продолжала текст.
- Настройка по оценкам людей. Люди сравнивают ответы модели, и её подстраивают, чтобы ответы были полезнее, а на опасные просьбы она отказывала.
После обучения веса не меняются: разговор с моделью её не переучивает. Знания модели заканчиваются датой, до которой собирали тексты, — её называют датой среза знаний (knowledge cutoff). О событиях после неё модель не знает, если только сервис не даёт ей искать в интернете.
Контекст: что модель видит
За один раз модель обрабатывает ограниченное число токенов — контекстное окно. В него входит всё: ваши сообщения, ответы модели, вставленные документы и скрытые инструкции сервиса. Что не поместилось, модель не видит. Запоминание между разными чатами — отдельная функция некоторых сервисов, а не свойство самой модели. Подробно — в справке Что такое контекстное окно.
Почему ответы каждый раз разные
Выбирая следующий токен, модель не всегда берёт самый вероятный: немного случайности делает текст живее и разнообразнее. Насколько смело выбирать, задаёт настройка температура. При низкой ответы строже и однообразнее, при высокой — разнообразнее, но и ошибок больше. Поэтому на один и тот же вопрос можно получить разные ответы, и это не поломка.
Почему модель ошибается
Модель учится писать правдоподобно, а не правдиво. Если ответа она не «знает», она всё равно продолжает текст тем, что похоже на ответ: придумывает цитату, книгу, номер статьи закона, ссылку на сайт. Такие выдумки называют галлюцинациями. Чаще всего модель ошибается:
- в редких фактах, о которых мало писали;
- в числах, датах, именах, ссылках и цитатах;
- в событиях после даты среза знаний;
- в точных расчётах и в подсчёте букв в слове — модель видит токены, а не буквы.
Модель не врёт нарочно: у неё нет способа отличить знание от догадки — и то и другое для неё вероятный текст. Поэтому уверенный тон ответа ничего не говорит о его точности. Почему так и что с этим делать — в справках Почему нейросеть выдумывает факты и Как проверить ответ нейросети.
Коротко
- Языковая модель порождает ответ по кусочку, каждый раз выбирая вероятное продолжение.
- Текст для модели — это токены: слова, части слов, знаки.
- Обучение: предобучение на огромном объёме текстов, дообучение на диалогах, настройка по оценкам людей.
- Знания модели заканчиваются датой среза; разговор её не переучивает.
- Модель видит только то, что помещается в контекстное окно.
- Правдоподобный ответ не обязательно правдивый: факты из ответа проверяют.