У человека, не погруженного в тему, внезапно нахлынувший вал сообщений о GPT может оставить противоречивые чувства. Эксперты разделились на два, на первый взгляд, равновеликих лагеря. Одни авторитеты говорят, что это "вау!". Другие уверенно заявляют, что GPT это "генератор бреда". Чтобы вы могли разобраться самостоятельно, я расскажу, как это работает

В предыдущих статьях я уже давал ссылку на научный источник. Повторю ее еще раз https://arxiv.org/abs/2005.14165. В принципе, внимательное чтение этого препринта вносит полную ясность в рассматриваемом вопросе. Но я понимаю, что далеко не у всех есть время и силы читать 75 страниц на английском. Я постараюсь изложить принципы работы языковой нейросети по возможности коротко и просто.

Итак, что делает языковая нейросеть? Говоря по простому, она ищет следующее слово.

Не совсем слово, но это не важно

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

Следующее за чем? Да за чем угодно. В принципе, ее можно попросить выдать слово, которое ни за чем не следует. Т.е. первое слово. В каком-то смысле "главное" слово в интернете. Строго говоря, не в интернете, а в обучающей выборке. Но так как масштаб обучающей выборки для современных языковых моделей сравним с масштабом всего контента в интернете, то можно смело говорить "в интернете". Обычно все же интересует ответ на конкретный вопрос. Поэтому модель ищет первое слово, следующее за этим самым вопросом. Этот вопрос уже когда-то обсуждали в интернете и давали на него ответы. Каждый ответ начинался с какого-либо слова. Из этих слов и выбирается первое. После первого слова выбирается второе, но уже с учетом вопроса и ранее выбранного первого слова. Этот процесс повторяется до тех пор, пока языковая модель не решит, что пора остановиться. Говоря другими словами, в качестве очередного слова выберет "стоп". Как видите, простая механика и никакой магии. Все дело в объемах обучающей выборки (и количестве ресурсов, потраченных на обучение, заметим).

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

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

  

Какой вариант следует выбрать здесь? Первый, конечно, сумел обойти второй. Но ведь и второй ничем не хуже первого. Современные языковые модели решают вопрос выбора очень просто. Они используют генератор (псевдо)случайных чисел. И в данном случае с вероятностью 50.0234% будет выдан первый вариант, а с вероятностью 49.9766% второй.

Хорошо, с этим понятно. Но что делать в случае, когда распределение будет 80% на 20%? Что делать в случае с 90% на 10%? Наконец, что делать вот в этом случае?

А ничего особенного не делать, говорят разработчики современных языковых моделей. Все так же, брать в руки генератор случайных чисел, и вперед. В результате с вероятностью 0.8927% вы получите второй вариант выбора первого слова. А так, как процесс повторяется много раз, за первым словом вы получите все остальные. И эти остальные слова с высокой вероятностью будут излагать вам наиболее убедительную версию изначально странного утверждения. Именно поэтому часть экспертов и называет современные языковые модели "генераторами бреда". Некоторые еще и добавляют: бреда, опасного своей убедительностью. 

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

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

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

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

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

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

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

Допустим у нас есть несколько складов, на которых хранятся товары. И мы хотим получить ответ на вопрос:

Сколько чая на основном складе? 

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

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

У меня в базе данных есть вот такие таблицы остатков, товаров, складов. Хочу получить ответ на вопрос "Сколько чая на основном складе". Каким должен быть текст запроса на SQL?

В ответ придет примерно следующее:

SELECT Остатки.количество, Товар.наименование, Склад.наименование

FROM ОстаткиINNER JOIN Товар ON Остатки.товар_id = Товар.id

INNER JOIN Склад ON Остатки.склад_id = Склад.id

WHERE Товар.наименование = 'чай' AND Склад.наименование = 'основной'

Для того, чтобы этот запрос выполнился например в типовой конфигурации Управление торговлей редакция 11.5, его надо преобразовать к виду:

ВЫБРАТЬ РегистрТоварыНаСкладах.ВНаличииОстаток, СправочникНоменклатура.наименование, СправочникСклады.наименование

ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки как РегистрТоварыНаСкладах

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура как СправочникНоменклатура ПО РегистрТоварыНаСкладах.Номенклатура = СправочникНоменклатура.ссылка

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады как СправочникСклады ПО РегистрТоварыНаСкладах.Склад = СправочникСклады.ссылка

ГДЕ СправочникНоменклатура.наименование = "чай" И СправочникСклады.наименование = "основной"

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

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

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

Сколько осталось чая на основном складе?

Какое количество чая на основном складе?

Так! Сколько чая на основном складе?

Остатки чая на основном складе?

Cкажи-ка мне, пожалуйста, сколько чая на основном складе?

Еще один важный момент заключается в том, что когда я проводил эксперименты, у меня в описании таблиц была не одна лишь таблица остатков на складе. Были еще таблицы продаж и взаиморасчетов. И когда мой вопрос по смыслу подходил под остатки, языковая модель строила текст запроса по остаткам. А когда смысл вопроса подходил под продажи, строился запрос к таблице продаж, хотя и там и там встречаются одинаковые поля. Можно с полным правом сказать, что большая языковая модель вас понимает.

Может ли языковая модель "галлюцинировать", выдавая ответы на рассматриваемый нами вопрос? Исходя из того, что мы узнали, ответ должен быть "да". И действительно, в процессе проведения экспериментов с OpenAI GPT, мне случалось ловить определенного рода "глюки". Но что интересно, ни разу это не было заменой слова чай на какое-либо другое слово. Видимо все-таки вероятность того, что модель в процессе решения данной задачи после слова чай поставит снова чай слишком высока. "Глюки", которые я ловил были другого рода. Вместо нормального ответа я получал ответ следующего вида:

SELECT Количество, Товар_id, Склад_id

FROM Остатки

WHERE Товар_id = 1 AND Склад_id = 1  

Можно предположить, что наряду с правильной веткой ответа в интернете довольно часто встречалась побочная. Типа, вот тебе "скелет" запроса, сам подставь вместо единиц, что тебе надо. По ощущениям это встречалось менее, чем в 5% случаев. Как вы понимаете, такого рода "глюк" не представляет опасности. По крайней мере в среде 1С. Потому что этот запрос просто не выполнится. Т.е. мы не получим "фантазию" на тему остатка, не получим, например, значение 100 вместо 5. Мы просто не получим ничего. Если мы организуем для пользователя интерфейс на естественном языке, и будем изредка получать такие "промахи", не факт, что пользователи сочтут это значительным неудобством. Такие ситуации вполне укладываются в общую языковую практику. Если вас не расслышали, вы повторяете свой вопрос. Никто не делает из этого трагедию.

Все изложенное выше является результатом экспериментов автора. В конце февраля 2023 года автор открывает тестовую площадку. На этой тестовой площадке можно будет самостоятельно задавать вопросы и получать ответы в типовых конфигурациях УТ, КА и ERP. Также можно будет настроить свою схему, чтобы работать с любыми другими конфигурациями, в том числе нетиповыми. Если вас заинтересовала данная тема  и вы хотели бы поучаствовать в экспериментах, оставьте заявку на http://brainguard.ru

Комментарии (20)


  1. eagleivg
    00.00.0000 00:00
    +6

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


  1. AndreySitaev
    00.00.0000 00:00
    +2

    Эта статья - "постирония", проверка аудитории Хабра на прочность. За ней должен последовать пост-разоблачения, как Хабр "скатился" и какой автор гениальный тролль.

    Если я неправ, то пусть автор объяснит:

    1. как соотносятся алгоритм работы GPT и описание выше - "псевдослучайный выбор вариантов" и "ценность информации"?

    2. вот этот пассаж - явно троллинг:

    В конце февраля 2023 года автор открывает тестовую площадку. На этой тестовой площадке можно будет самостоятельно задавать вопросы и получать ответы в типовых конфигурациях УТ, КА и ERP."

    напоминает нетленку:

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


    1. AndreySitaev
      00.00.0000 00:00

      Но на Хабр "постирония" не пройдёт.


    1. exwill Автор
      00.00.0000 00:00

      Вы же можете легко проверить то, что описано в статье. Введите вопросы, получите ответы, после чего делайте выводы. Можете использовать ChatGPT, но лучше CODEX


      1. AndreySitaev
        00.00.0000 00:00

        Вы точно уверены, что Generative Pre-trained Transformer работает именно так, как вы описали? Т.е. что-то вроде случайно-взвешенного выбора среди фрагментов текста обучающей выборки? Потому что я представлял себе работу GPT совсем иначе.


        1. exwill Автор
          00.00.0000 00:00

          Точно уверен. Можете других авторов почитать на эту тему. Ну или препринт


  1. phenik
    00.00.0000 00:00
    +1

    А ничего особенного не делать, говорят разработчики современных языковых моделей. Все так же, брать в руки генератор случайных чисел, и вперед. В результате с вероятностью 0.8927% вы получите второй вариант выбора первого слова. А так, как процесс повторяется много раз, за первым словом вы получите все остальные. И эти остальные слова с высокой вероятностью будут излагать вам наиболее убедительную версию изначально странного утверждения. Именно поэтому часть экспертов и называет современные языковые модели «генераторами бреда». Некоторые еще и добавляют: бреда, опасного своей убедительностью.
    Сразу полез в статью проверять действительно используются генераторы случайных чисел) Нигде про генераторы не упоминается. Это дидактический прием такой, для разъяснения публике принципа работы? Думал там сети из формальных нейронов используются. И все вместе это реализует огромную авторегрессионную модель языка, фактически некоторую модель ассоциативного мышления человека. И происхождение фантазий больше связано именно с этим, а не враньем в обучающей выборке. Чат что-то ответит, даже если его спросить — Земля в форме бублика? И в обучающей выборке ничего про форму Земли в виде бублика не было. Произойдет аппроксимация, и сеть найдет хотя бы косвенную связь между формой Земли и любыми упоминаниями бубликов, и даже если таковых не было. Не могу проверить это, т.к. нет доступа к чату. Это и будет фантазией чата в этом случае. Эти фантазии могут нести и новую информацию, комбинирующую представленную в обучающей выборке. Например, эксперты из этого исследования заключили, что в 90% ответов чата была новая информация по темам в сравнении с обычными, стандартными ответами людей. Но ведь это тоже фантазии сети, а не цитаты из источников.

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


    1. exwill Автор
      00.00.0000 00:00

      Раздел 2.4 Evaluation


      1. phenik
        00.00.0000 00:00

        Что именно там указывает на использование генераторов случайных чисел для выбора вариантов ответа? Если каждый раз в новой сессии, для чистоты эксперимента, задавать один и тот же вопрос — Какой является форма планеты Земля? — то будут выдаваться разные ответы в соответствии с некоторой статистикой распределения вариантов из обучающей выборки? Проверяли это?

        Сама чат основан на языковой модели GPT-3 с архитектурой трансформер, на которой основаны также различные переводчики. Не замечал, чтобы при переводе они выдавали разные варианты перевода для одних и тех же фраз. В зависимости от контекста да, например, для омонимов, но это разные фразы.

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


        1. exwill Автор
          00.00.0000 00:00
          +1

          Вы вводите некий текст. Нейросеть его обрабатывает. Результат работы нейросети - это ОЦЕНКА ВЕРОЯТНОСТИ появления того или иного слова за тем, что вы ввели. Очередное слово выбирается на основе этой оценки. Но не детерминированно, а с использованием генератора случайных чисел. GPT работает именно так. Я лично получал разные ответы на полностью идентичные вопросы. Если вы мне не верите, почитайте других авторов. Или проверьте самостоятельно. На сайте OpenAI там даже специальная опция есть: "показывать вероятности"


          1. phenik
            00.00.0000 00:00

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

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

            GPT3, в частности чат на ее основе, формирует ответы в диалогах иначе, чем человек. Человек обычно не помнить дословно весь предыдущий диалог, особенно длительный, чтобы на его основании формировать ответ. Его содержание постоянно сжимается, что бы удерживать в рабочей памяти, объем которой конечен, формируя к общим установкам дополнительный контекст диалога. Как-то, речь о теме диалога, основные моменты, выявленные цели, мотивы, интересы, и тп. Это позволяет, в основном, не терять его нить. Однако в чате видимо контекстное окно быстро переполняется, и пользователю необходимо его поддерживать самостоятельно. Если не поддерживать, то контекст теряется и чат начинает отвечать не в тему. Это, кстати, привело к тому, что в чате Бинга ограничили число вопросов в сессии от пользователей. По аналогии с возможностями человека можно сжимать ввод, или его часть, тем более, что GPT3 может реферировать тексты, тем самым отдаляя момент переполнения контекстного окна.

            Почему же разработчики пошли по этому пути? По моему личному убеждению, именно недетерминированность больших языковых моделей, использование генератора случайных чисел и явилось причиной столь ошеломляющего успеха. Хотя объемы обучающей выборки тоже сыграли свою роль, но недетерминированность оказалась важнее. Она как бы придала описанному выше чисто механическому процессу человеческое лицо.
            У человека недерменированность проявляется по другому, и носит контекстуальный характер, с родни квантовой контекстуальности. Это приводит к тому, что для описания психических феноменов больше подходит квантовый формализм вероятностного описания (небольшой обзор), чем классический, в частности, цепей Маркова, как в этой языковой модели. Давно известный пример — зависимость ответа в опросах от порядка вопросов в нем. Этакий аналог не коммутативности кв. переменных в КМ, называемый эффектом порядка (др. описание, примеры). Сторонники этого подхода к описанию психических явлений разработали даже собственную интерпретацию КМ, которая распространяется на описание подобных феноменов. Речь не о квантовом сознании в стиле Пенроуза, или что-то подобное, а именно использовании кв. формализма. Вообще интересно было бы проверить подобные эффекты в ответах чатов на основе GPT3, некотрые аналоги, пусть отдаленные, психологических феноменов уже находят.


  1. AndreySitaev
    00.00.0000 00:00

    Попробую сформулировать мысль точней:

    • IMHO, статья формирует не только упрощенное, но и откровенно некорректное представление о работе. трансформера. Для Яндекс Дзен такого объяснения достаточно, но не для Habr - где, кстати, уже полно статей по GPT.

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


    1. exwill Автор
      00.00.0000 00:00

      Что это меняет? Трансформер отработал и выдал оценку вероятностей появления тех или иных слов. Дальше с этими оценками можно работать по-разному. Можно брать всегда самую высокую и это будет детерминированное поведение. А можно выбирать случайно-взвешенно. Именно так сейчас и работает языковая модель от OpenAI


      1. AndreySitaev
        00.00.0000 00:00

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

        Вы, кмк, с водой выплеснули ребенка:

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

        Такое упрощение пойдет для Дзена, где читателю надо охватить предмет за 3 минуты. Но не для Хабра. Повторюсь: трансформер определяет семантику, а не частоты появления определенных слов попарно. Вы же низвели трансформер до поисковой системы со случайным выбором результата поиска.


        1. exwill Автор
          00.00.0000 00:00

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


    1. exwill Автор
      00.00.0000 00:00

      Да, и кстати. В какой еще статье говорится о том (и показывается как), что GPT можно использовать в учете? Подскажите, я буду вам очень признателен. Без какой-либо иронии или постиронии.


      1. AndreySitaev
        00.00.0000 00:00

        В бухгалтерском учете:   вот. В складском учете - не нашел... а стоит ли? Blockchain в 2017-м году тоже пытались "применить" где можно, и где нельзя.

        Ок, вероятно, я правда ошибся, и ваша статься - не постирония. Но вопросы остаются.


        1. exwill Автор
          00.00.0000 00:00

          Спасибо за ссылку


  1. Teemon
    00.00.0000 00:00

    Ждём статью на хабре, написанную чатом и потом срачем в комментах с этим же чатом))


  1. exwill Автор
    00.00.0000 00:00

    Для всех желающих доступна тестовая площадка. На ней можно проверить самостоятельно все, что описано в статье