Как стать автором
Обновить

Что делает ChatGPT… и почему это работает?

Уровень сложности Средний
Время на прочтение 75 мин
Количество просмотров 23K
Алгоритмы *Машинное обучение *Искусственный интеллект Natural Language Processing *
Перевод
Всего голосов 138: ↑138 и ↓0 +138
Комментарии 35

Комментарии 35

Первая мысль: опять статья про чатгпт... Как же вы достали!

А потом: ОГО!

What Is ChatGPT Doing … and Why Does It Work?
2023-02-14

https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/

Что делает ChatGPT ... и почему это работает?
2023-03-12 17:56

https://ai-news.ru/2023/03/chto_delaet_chatgpt_i_pochemu_eto_rabotaet.html

Что делает ChatGPT… и почему это работает?
2023-06-02
(копия вышеуказанного перевода)

здесь...

Нет, перевод делал я сам. И на его корректировку ушло очень много времени. Сравните первый попавшийся фрагмент:

Что произойдет, если кто-то продержится дольше? В этом случае (“нулевая температура”) то, что вскоре получается, становится довольно запутанным и повторяющимся:

и

А что будет дальше? В нашем случае «температура» скоро опустится до нуля, что приведёт к довольно запутанному и повторяющемуся тексту:

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

И если сравнивать охота, то сравним тот перевод и ваше на моем "первом попавшемся"))

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

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

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

П.С.

и запросить 5 лучших слов по вероятности, которые,

и попросить найти 5 лучших слов по вероятности, которые,

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

Вы не переводили тот текст головой - это однозначно.

но глупо было бы делать все с нуля, когда есть сделанное на 95%

Иногда сделано так, что проще переделать всё.

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

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

Извините, но слово "мысли" - здесь лишнее )
А статья реально классная. Спасибо автору

У автора самое глубокое понимание предмета, которое я видел. Попробовал себе представить и сравнить мыслительный путь в мозге и в ChatGPT как я это вижу (грубо) с точки зрения ведения диалога с другим человеком. Мозг принял аудио сообщение, которое расшифровалось на слова. Потом импульс от этих слов пошел дальше в отделы смыслового декодирования, где по ним был создан смысловой мыслеобраз услышанного. Далее сигнал мыслеобраза пошел в отделы обработки, где может долго волнами "крутиться" по отделам, перерабатывая суть образа, вырабатывая промежуточные результаты, которые рекуррентно могут быть повторно обработаны разными отделами. Пока на выходе не будет готовый результат, который не нуждается в дальнейшей обработке - это похожий слепок образа, который надо обратно передать в слова собеседнику. ChatGPT похоже во время обучения тоже выстроил свои отделы, отвечающие за разные функциональные способы обработки входящего смыслового образа. Только в виду своей структуры, это конвеер, и возможно нечеловечность ИИ в том, что вместо последовательных модулей обработки информация обрабатывается паралельно всеми "модулями" сразу. Ведь нет над-структуры, которая решает куда направить промежуточный результат ? В следующий модуль для обработки, или уже можно в речевой. Значит и структура должна быть проще, чем у мозга. Может эта над-структура и есть сознание ?

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

Возможно для достижения схожего эффекта для ChatGPT надо создать скрытый текстовой слой, где он будет размышлять над вопросом, задавая самому себе вопросы и критикуя себя аналогично AutoGPT (множество личностей). Ведь и мы порой в раздумии размышляем над своими словами и поступками, анализируем, прогнозируем. Вот этого слоя отрешенности думаю не хватает для ChatGPT. Чтобы он не сразу выплёвывал результат, а разбивал вопрос на составные части и итеративно приближался к решению/ответу. Схожие зачатки есть у BingChat и у плагинов ChatGPT. Проблему, описанную в статье в виде примера со скобками, вероятно можно успешно решать на текущих моделях, но с применением такого итеративного подхода. Если ребенка можно научить складывать числа "столбиком" (что тоже есть итеративный подход), то думаю поставленные задачи тоже надо в скрытом слое разбивать на простейшие мелкие этапы. Возможно еще потребуется составить дополнительные обучающие примеры, где нетривиальные задачи будут разбиты на подзадачи человеком.

Существует некая матрица весов параметров, которая теоретически соответствует минимальной ошибке и наиболее близко описывает текстовые корпуса, на которых обучался ChatGPT. У людей разве не случаются ошибки в словах, разве люди не путают слова, понятия, места ? Это такие же "галлюцинации" как у языковых моделей, только у здоровых людей это зачастую почти не встречается. Надо сначала приблизить текущие языковые модели к этой теоретически эталонной, чтобы уровень ошибок соответствовал как минимум уровню ошибок, допускаемых человеком) что-бы люди могли уверенно положится на такие над-структуры, агенты, как на самих себя))

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

"Моё хобби — экстраполировать антропоморфизировать"

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

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

Получается, что ChatGPT — это логически завершаемый в настоящее время подход, восходящий к фундаментальной работе К. Шеннона по теории информации.

... Осталось ещё добавить модели мира и нервную систему для встречи системы со своими собственными состояниями (см. "Биологию познания" У. Матураны) и... А что, и? Не берусь даже предсказывать.)

Потому что по какой‑то причине — возможно, однажды мы получим научное понимание 

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

И мы можем представить, что если бы мы могли использовать достаточно длинные n‑граммы, мы бы получили подобие ChatGPT

Не подобие, а в точности чатгпт. Это абсолютно то, что делает чатгпт.

Но оказалось, что — по крайней мере, для «человекоподобных задач» — зачастую лучше просто попытаться обучить нейросеть «сквозной задаче», позволив ей самой «обнаружить» необходимые промежуточные характеристики, кодировки и т. д.

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

 и поэтому не имеет возможности выполнять какие‑либо вычисления с нетривиальным «потоком управления».

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

Нетривиального потока управления не получается по другой причине - ограничение на объем этого стейта. Поэтому сеть хоть и рекуррентная, но остается КА.

Это абсолютно то, что делает чатгпт.

Угу, примерно как полносвязная сеть делает абсолютно то же что и GPT. То есть, если бы мы хоть каким-то физически выполнимым способом могли получить аналог GPT на n-граммах/полносвязных сетях, то оно бы делало то же самое.

Именно поэтому эффективны трансформеры - по сути всю логику сети задает именно человек

Не только трансформеры. В RWKV используется другая структура.

Не только трансформеры.

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

То есть, если бы мы хоть каким-то физически выполнимым способом могли получить аналог GPT на n-граммах/полносвязных сетях, то оно бы делало то же самое.

Здесь на самом деле интересен не тот факт, что сеть смогла "восстановить" ф-ю для n-грамм (исходя из теорем об универсальности она конечно должна была, рано или поздно, так или иначе), а в том, что обучающая выборка обладает достаточно сложной структурой, чтобы в ней оказалась вся необходимая информация.

Как бы не особо-то само, если по факту.

Обычно такие вещи называют "inductive bias", а не "логика работы". В случайно инициализированной сети какую-то логику можно найти только в сильно заточенных на предметную область сетях вроде свёрточных (которые не особо хорошо работают на тексте, в отличии от трансформеров, которые неплохо работают и с изображениями). Inductive bias-же означает в примерно каком направлении будет развиваться сеть при обучении. По-моему, говорить, что "оно не само", это примерно как говорить, что человек не сам нашёл магазин, если ему сказали, что он где-то в той стороне. Вроде-бы и правильно, но оттенок смысла какой-то не такой.

>Обычно такие вещи называют "inductive bias", а не "логика работы".

В современных сетях все же именно логика работы. Здесь как разница между декларативным и императивным программированием - ллм сетки это именно императивное программирование, мы не описываем результат а четко регламентируем как сетка этот результат должна выдать, шаг за шагом.

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

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

>И работает это хуже

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

Нет эвристик - ваша сеть бесполезна и неконкурентоспособна.

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

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

длиной 768 для GPT-2 и 12 288 для GPT-3/ChatGPT

Это подтвержденная информация? Великоват вектор, всего лишь в разы меньше размера словаря.

Почему триггернуло: размерность эмбеддингов очень плавно росла, на моей памяти почти линейно начиная с w2v, 100-300-500-700. Google USE смысл целого предложения/абзаца довольно неплохо укладывала в 512 токенов, а тут 12к под слово?..

И да - что статья, что перевод титанические!

* в 512 чисел

Спасибо за роботу. Большая просьба: пожалуйста, следующий раз дробите статью. Очень интересно но очень сложно прочесть и понять за раз.

Не нао дробить статью. Во-первых, оригинальный автор этого не сделал. Во-вторых, слтишком часто бывает, что продолжение "не следует" -- дела/текучка, смена приоритетов..

Интересная статья, спасибо. Зацепило, что все сводится к "сгенерировать следующее вероятное слово". Но ChatGPT ведёт диалог, если я просто напишу какое то предложение, то получу ответ, а не продолжение предложения.

Значит ли это, что запросы как то модифицируются? Например в "Диалог. - X. -" где x - то что ввёл пользователь? Если это так, то известно ли как именно модифицируется?

ЕМНИП в диалоге просто в качестве входных данных вводится "его реплика + Ваш ответ"

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

ответы ChatGPT и вопросы пользователя должны быть маркированы. А самой диалоговой структуре ответов похоже был обучен на примерах через RLHF.
На старой GPT-3, диалоговое поведение сети достигалось просто префиксами вида:
Q: мой вопрос
A: [сеть писала здесь свой ответ]
Q: следующий вопрос
A: [следующий ответ]

Сеть быстро улавливала структуру QA диалога и продолжала ей следовать.

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

Ну вот смысл в том и есть, что мусор, оказывается, не сильно то отличается от немусора.

Как определить, какой мусор нужно в модель подавать чаще а какой нет?


У меня есть теория, она не связана с LLM но в целом про процесс обучения, этот процесс последовательного 'применения к модели' примера из обучающей выборки, эпоха — это когда всю обучающую выборку прогнали через модель,… но что по поводу порядка подстановки примеров из выборки? я считаю что если грамотно рулить вероятностью попаданию очередного примера в модель на шаг обучения, можно ускорить сходимость, но сам алгоритм этого выбора — гиперпараметр, правильная подборка которого возможна только после проведения эксперимента. У меня есть теория, что если найти способ разбить примеры на группы, которые модель считает по своим критериям (классификатор на ее внутренних принципах) и если считать суммарную ошибку сети по этим примерам, то чем выше ошибка тем чаще примеры из этой выборки должны проходить через обратное распространение, а группы, которые сеть поняла и хорошо отрабатывает — исключать из эпох, пропуская прямо всю группу (но не на каждой эпохе а через одну), таким образом уменьшить количество данных и ускорить эпоху

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