Глиф Учебники

Урок 2. Как работает языковая модель

Курс «Искусственный интеллект» · урок 2 из 8 · 5 минут чтения

Языковая модель — нейросеть, обученная продолжать текст. Большие языковые модели (LLM — large language model) обучены на огромном количестве текстов и поэтому умеют отвечать на вопросы, пересказывать, переводить, писать письма и код. На них работают чат-боты с ИИ. В этом уроке — как модель составляет ответ и почему этот способ иногда даёт уверенную чепуху.

Главная идея: следующий кусочек текста

Модель получает текст и оценивает, каким может быть следующий кусочек, — для каждого варианта свою вероятность. Выбирает один вариант, дописывает его к тексту и повторяет всё снова, уже с удлинённым текстом. Так, кусочек за кусочком, и получается ответ. Модель не ищет готовый ответ в базе данных — она его порождает (генерирует).

Текст кот Модель оценивает варианты Следующий кусочек спит 2 из 3 ест 1 из 3 выбрать один и дописать кот спит текст на кусочек длиннее и снова, с удлинённым текстом один шаг ответа
Один шаг ответа: модель оценивает варианты следующего кусочка, выбирает один, дописывает его к тексту и повторяет шаг уже с удлинённым текстом.

Принцип легко увидеть на игрушечной модели. Она смотрит только на одно предыдущее слово: считает, какие слова шли после него в «обучающем» тексте, и выбирает самое частое.

Python
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}
собака спит на диване .

Модель выдала «собака спит на диване» — а такой фразы в тексте не было. Каждая пара слов в ней знакома модели, поэтому фраза вышла правдоподобной, но верна ли она — модель не знает и знать не может. Запомните этот пример: на нём держится вся тема ошибок ИИ.

Обучающий текст кот спит на диване . кот ест рыбу . кот спит на окне . собака спит на полу . Генерация от «собака» собака спит 1 спит на 3 на диване 1 окне 1 полу 1 диване . 1 после «на» поровну — берётся первое собака спит на диване . каждая пара слов — из текста, а всей фразы в тексте нет
Игрушечная модель склеила фразу «собака спит на диване» из знакомых пар слов обучающего текста, хотя целиком такой фразы в нём не было.

Настоящая языковая модель устроена несравнимо сложнее. Она учитывает не одно слово, а весь текст запроса и разговора, а вместо подсчёта пар у неё миллиарды весов нейросети. Почти все современные языковые модели построены по схеме трансформер (transformer): она умеет связывать между собой далёкие части текста. Но принцип тот же — вероятное продолжение.

Токены

Модель читает не буквы и не слова, а токены — кусочки текста. Частое слово может быть одним токеном, редкое делится на несколько частей, а иногда токен — это одна буква, знак или пробел. Как именно делится текст, зависит от модели. Длину запроса, ограничения и цену сервисы обычно считают в токенах. Подробно — в справке Что такое токен.

Как модель обучают

  1. Предобучение. Модель читает огромное количество текстов — книги, статьи, сайты, код — и учится угадывать следующий токен. Так она набирается знаний о языке и о мире. Это самый долгий и дорогой этап: для большой модели нужны тысячи видеокарт и недели работы.
  2. Дообучение на диалогах. Модель обучают на примерах «просьба — хороший ответ», чтобы она выполняла просьбу, а не просто продолжала текст.
  3. Настройка по оценкам людей. Люди сравнивают ответы модели, и её подстраивают, чтобы ответы были полезнее, а на опасные просьбы она отказывала.

После обучения веса не меняются: разговор с моделью её не переучивает. Знания модели заканчиваются датой, до которой собирали тексты, — её называют датой среза знаний (knowledge cutoff). О событиях после неё модель не знает, если только сервис не даёт ей искать в интернете.

Контекст: что модель видит

За один раз модель обрабатывает ограниченное число токенов — контекстное окно. В него входит всё: ваши сообщения, ответы модели, вставленные документы и скрытые инструкции сервиса. Что не поместилось, модель не видит. Запоминание между разными чатами — отдельная функция некоторых сервисов, а не свойство самой модели. Подробно — в справке Что такое контекстное окно.

Контекстное окно — ограниченное число токенов скрытые инструкции сервиса ваше сообщение ответ модели вставленный документ не поместилось: модель не видит Модель видит только то, что в окне Другой чат в это окно не входит
В контекстное окно входят скрытые инструкции сервиса, сообщения, ответы модели и вставленные документы; что не поместилось в окно, модель не видит, как и другие чаты.

Почему ответы каждый раз разные

Выбирая следующий токен, модель не всегда берёт самый вероятный: немного случайности делает текст живее и разнообразнее. Насколько смело выбирать, задаёт настройка температура. При низкой ответы строже и однообразнее, при высокой — разнообразнее, но и ошибок больше. Поэтому на один и тот же вопрос можно получить разные ответы, и это не поломка.

Почему модель ошибается

Модель учится писать правдоподобно, а не правдиво. Если ответа она не «знает», она всё равно продолжает текст тем, что похоже на ответ: придумывает цитату, книгу, номер статьи закона, ссылку на сайт. Такие выдумки называют галлюцинациями. Чаще всего модель ошибается:

Модель не врёт нарочно: у неё нет способа отличить знание от догадки — и то и другое для неё вероятный текст. Поэтому уверенный тон ответа ничего не говорит о его точности. Почему так и что с этим делать — в справках Почему нейросеть выдумывает факты и Как проверить ответ нейросети.

Коротко

Проверьте себя

1. Что делает языковая модель на каждом шаге ответа?
2. Игрушечная модель из урока начинает со слова «кот» и делает два шага. Что получится?
3. Модель уверенно назвала книгу, которой не существует. Как называют такую ошибку?
4. Почему модель может ничего не знать о вчерашних новостях?
5. За что отвечает настройка «температура»?