Найти в Дзене
Блог Хеба

Как работает chatGPT

Сегодня нейросети это актуальный и очень перспективный инструмент для большой части видов деятельности человека. Однако, их всё ещё окружает некоторое количество «мифологизированной» информации и часть публики не вполне понимает, что это такое и как оно работает. А главное как их можно использовать для своих задач и делать это эффективно. Так что я решил сделать серию небольших статей, которые приоткроют эту тайну достаточно простым и понятным языком. Кроме того, любопытно, что в составлении этого материала мне помогала сама нейросеть (языковая модель), которая, довольно хорошо может разъяснить, как она сама работает. Сразу же стоит определиться с терминологией. В тексте используются термины нейросеть и языковая модель. Для понимания - нейросеть это более широкое понятие. Нейросети могут быть разными и выполнять различные функции, например, распознавать изображения и при этом не иметь никакого текстового интерфейса. В то время как языковая модель это своего рода приложение, которое вза
Оглавление

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

Кроме того, любопытно, что в составлении этого материала мне помогала сама нейросеть (языковая модель), которая, довольно хорошо может разъяснить, как она сама работает.

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

Как работают языковые модели?

Языковая модель — это не «живая» система, а замороженный набор инструкций, полученный после обучения на огромном количестве текстов (книги, статьи, код и т. д.). Её «знания» не обновляются после обучения.

К тому же, довольно интересно будет узнать, что модель не имеет какой-то «базы данных» в привычном нам понимании. Она не хранит в себе триллион текстов, которые в неё загрузили при обучении. Языковая модель запоминает статистические связи между словами. То есть если в обучающих данных множество раз встречалась фраза: «Столица Франции – Париж», то модель запомнит, что с вероятностью 99,9% после фразы столица Франции идёт слово Париж. «Знания» нейросети это не файл с данными, а своего рода натренированная реакция. После обучения исходные данные из модели удаляются, а остаются только выводы о том, как связаны слова.

Наиболее простая аналогия для понимания, это авто заполнение в телефоне. Можно сказать, что Т9 это младший брат (или скорее эмбрион) языковой модели, который по накопленной статистике пытается угадать какое слово вы напишите дальше. Модель работает по принципу очень продвинутого автозаполнения, на уровне сложных статистических закономерностей.

Это довольно важный момент для понимания - языковая модель не думает и не анализирует данные в привычном смысле. Она оперирует сложной статистикой в отношениях слов друг с другом.

Если сложно, - то ещё раз. Модель не хранит факты напрямую, а запоминает шаблоны того, как слова сочетаются. «Париж» - не запись в её «базе», а наиболее вероятное продолжение фразы «столица Франции», основанное на статистике из её обучения. Это как если бы вы 1000 раз услышали: «Роза — это цветок» - и теперь автоматически завершаете фразу таким образом. Но при этом у вас в голове нет энциклопедии о розах - только ассоциация.

Это говорит нам о двух ключевых вещах:

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

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

Структура языковых моделей

Сама по себе языковая модель это сложный алгоритм обработки текстов (ваших запросов). Причём она обрабатывает его неравномерно. В процессе проходит анализ взаимосвязей между словами, контекстных зависимостей и стилистических особенностей.

То есть при анализе фразы "банковский счет" модель уделяет больше внимания слову "банковский", чем "счет", понимая, что речь о финансах, а не о бухгалтерии.

Кроме того модель обрабатывает информацию в несколько этапов или точнее слоёв, потому что обработка происходит параллельно во всех слоях. В одном слое происходит анализ грамматики, в другом понимание простого контекста и в ещё одном слое сложные смысловые связи.

Когда модель формирует ответ, она не просто выдаёт готовую фразу, а предсказывает наиболее вероятные слова по очереди. На каждом шаге она оценивает миллионы вариантов, выбирая не только наиболее вероятный, но и достаточно разнообразный вариант ответа - это регулируется параметром, который называют - «температура». Например, при высокой «температуре» ответы становятся более творческими, но менее точными, а при низкой - более предсказуемыми.

Ограничения обработки текста

При этом языковая модель имеет свои ограничения. Например, она может терять связность в запросах свыше 3000 слов (точнее до 128 тыс. токенов, см. Токенизация). То есть она может «забыть» и не учесть часть данных, которые были в начале запроса.

Кроме того, у неё могут возникать проблемы с пониманием иронии, метафор и культурных особенностей. Хотя модель и пытается имитировать человеческую речь или отношение, если вы будете с ней слишком неформальным, вы рискуете получить некорректные ответы на ваши запросы.

Токенизация

Стоит отметить так же, что модель работает не с целыми словами, а с токенами. Каждое слово разбивается на токены примерно как на слоги. Например, слово привет делится на два токена («При», «вет»). Причём слова из разных языков разбиваются на разное количество токенов.

Например: привет – 2 токена, hello – 1 токен, а こんにちは (здравствуйте) уже 4 токена.

Это имеет значение в том отношении, что лимит количества слов, зависит от количества токенов, а не самих слов. Поэтому текст на русском будет съедать ограничение быстрее, чем на английском. Кроме того больше токенов съедают специфические и сложные термины.

Контекст и параметры модели

Современное представление языковых моделей, чаще всего работает в рамках отдельных «чатов» - своего рода бесед. Этот чат и хранит в себе конкретный контекст беседы, т.е. запоминает сведения которые вы ему передаёте.

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

Впрочем, модель не «забывает» всю информацию подряд. Она анализирует контекст и выборочно сохраняет ключевые слова и разные инструкции.

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

Контекст может меняться и дополняться в процессе диалога. Он ограничен по объёму и доступен только в рамках конкретного диалога. А параметры «зашиты» в модель. Это фиксированные данные, знания языков, логика и прочее. Они не могут изменяться в отличие от контекста.

Практические следствия

Таким образом, в длинных технических обсуждениях нужно периодически повторять условия задачи, художественные тексты лучше обрабатывать частями. И иметь в виду, что длительные диалоги постепенно начинают терять связность.

Чтобы оптимизировать работу с этими ограничениями стоит использовать следующие рекомендации:

Для программного кода:

Разбивать файлы на части по 500-1000 строк

Явно указывать: "Это продолжение предыдущего фрагмента со строками 1001-1500"

Для исследований использовать структуру:

Повторить кратко основной тезис. А теперь проанализируй новый аспект.

Для творческих задач:

Сохранять ключевых персонажей/детали в каждом новом запросе

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

Как модель обучается?

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

Сначала модель проходит этап предварительного обучения. На этом этапе происходит анализ триллионов текстовых примеров в результате чего получается "Сырая" модель с общими знаниями.

После этого наступает этап тонкой настройки, на котором модель проходит обучение на специально отобранных данных. Кроме того выполняется развитие безопасных шаблонов ответов и полезных «навыков» (вроде кодинга, анализа и т.п.)

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

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

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

К примеру, в запросе "Как сварить химическое вещество" пройдёт проверка контекста на предмет производства запрещённых веществ.

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

Обновления модели

Языковая модель обновляется двумя основными способами: полное переобучение и инкрементальное обновление.

Полное обучение происходит раз в 1-2 года, при этом обновляются все знания и архитектура. Инкрементальные обновления проходят раз в 3-6 месяцев, и нужны для исправления ошибок и добавления новых возможностей.

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

Проблема катастрофического забывания

Катастрофическое забывание - это эффект полной или частичной потери ранее усвоенных знаний при дообучении модели на новых данных или даже простой донастройки.

Такое поведение может возникнуть когда модель обучается новому навыку (например, медицинской диагностике). При этом веса нейросети перезаписываются и старые знания (например, литературный анализ) "стираются".

К примеру GPT-3 после дообучения современным данным, перестала узнавать редкие исторические даты и путала персонажей XIX века.

Это формулирует ключевую проблему: невозможность просто "добавить" знания в ИИ - каждое обновление требует сложной балансировки старых и новых данных.

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

Почему модель не может самообучаться?

Как мы уже выяснили модель не обучается от общения с пользователями. Это как книга - текст в ней не поменяется, сколько бы её ни читали.

Однако, модель может подстроить свои данные в рамках одной беседы. Она подстраивает ответы под ваш стиль общения, предпочтения, терминологию, но только в рамках одного чата.

Почему пользователи не могут дообучать модель?

Это обусловлено рядом причин. Существует риск злонамеренного «перевоспитания» (например, обучение ненависти) модели. Так же модель не должна запоминать ложные факты, которые затем она могла бы начать распространять. Кроме того все пользователи должны получать одинаковые ответы на одни и те же вопросы.

Вывод

Языковые модели представляют собой мощные статистические системы, а не «мыслящие» сущности. Их сила - в предсказании слов на основе шаблонов, а слабость - в ограничениях контекста и риске ошибок (галлюцинаций). Понимая принципы их работы, можно использовать ИИ более осознанно: дозировать информацию, проверять факты и формулировать запросы чётко. В следующей статье разберём, почему нейросети ошибаются и как составлять идеальные запросы.