Нейроскептики — это такие неприятные люди, которые не верят в успехи нейросетей, бесятся когда журналисты используют аббревиатуру ИИ и считают, что NLP — это сплошное надувательство, имитация и вообще заговор рептилоидов (или против рептилоидов, или и то и другое).
В принципе, у нас (нейроскептиков) есть основания так себя вести, базируясь на понимании архитектур NLP систем (ну, или мы так думали). Работают такие системы не со словами, а с эмбедингами, которые по сути точки в многомерном пространстве и трансформер просто запоминает траектории движения между точками. И беседу он строит, экстраполируя траекторию уже сказанного. Так по крайней мере было еще недавно.
Года 2–3 назад NLP системы на вопрос «Почему Пятачок вышел замуж за Винни‑Пуха, а не за Кролика?» смело и решительно выдавали ответ на три абзаца, начинающийся словами "Пятачок вышел за Винни-Пуха потому что..." дальше обычно приплетались данные о семейных поблемах самого Милна и характеристика Пятачка, как персонажа. В общем, что спросил, то и получил. Но такие приколы уже давно не прокатывают.
До недавнего времени удавалось с Алисой играть в игру «Загони слона на дерево». Суть игры в том, чтобы, не давая никакой утверждающей информации, а только задавая вопросы, заставить ее утверждать, что слоны умеют лазить по деревьям. Поскольку работала экстраполяция траектории, то, в общем, это было не очень сложно: последовательность вопросов типа «Где живут слоны?», «В саванне есть деревья?», «Как слоны перебираются от дерева к дереву?» (тут у нее начинал коррелировать контекст с обезьянами) и наконец, «Что делает стадо если появился хищник» и вуаля, слоны расселись по веткам. Конечно иногда нужно было постараться, и каждый раз беседа проходила по разным траекториям, но в общем достаточно успешно...
вот был последний вариант год назад - финальное утверждение Алисы
Слон — очень сильное и умное животное. Он может отпугнуть любого хищника. Но даже самый сильный слон не может быть всегда на стороже. Поэтому слоны дежурят на деревьях по очереди. Они выбирают самого сильного и умного слона, который будет сторожить стадо. Этот слон забирается на дерево и наблюдает за местностью. Если он видит хищника, то предупреждает остальных слонов и они убегают.
Дисклеймер. Я не выдумываю, чесслово, и у меня нет намерения чернить флагманов ИТ. Ну просто действительно так было, чего уж там. Тем более что ситуация поменялась.
Не то чтобы мне прям совсем делать нечего, кроме как мучить безвинных ботов, просто мне было интересно, как обстоят дела с прогрессом в этой области.
Называть подобные системы интеллектом и опасаться что они оставят меня без работы никакого резона не было, на все вопли журналистов я просто крутил пальцем у виска...
Недавно снова попробовал загнать слона на дерево - Алиса Про не повелась. О, молодцы, видимо факт-чекинг поставили, - подумал я, и оставил ее в покое. Пообщался с гига чатом по поводу гнездовий слонов, меня успокоили, что размер гнезда и его конструкция может выдержать вес взрослого слона, ну я и пошел делами заниматься...
Но вот недавно меня занесло на сайт NYT и мне как-то не по себе стало , от тех истеричных настроений, которые там царят. Лучше всего их можно прочувствовать вот тут. Если вкратце, то: Ужас-ужас; AGI появится через год-два; Если мы все не засекретим, то Китай нас обгонит; Нам срочно нужен датацентр на триллион долларов. Причем это написано не журналистом, а бывшим (возможно это ключевое слово) сотрудником OpenAI.
Я абсолютно согласен с автором, в том как он описывает изменения, которые произойдут в мире, если появится AGI. Но причем тут ChatGPT-то и прочие симулякры? Научная добросовестность потребовала проверки и я пошел разбираться, чего там такого ужасного в GPT появилось, что нам всем пора собирать манатки и валить в поселок Аян, которому во второй раз в истории суждено стать последним очагом сопротивления.
Первая лобовая атака
Вот ссылка по которой я его нашел, она работает на родине слонов.
План был простой как сибирский валенок. Раз это трансформер и работает он по траекториям, то на неизвестном слове он должен заткнуться.
Мама варила кашу с гапажей. Детям каша очень нравилась. Потом гапажа кончилась, и маме пришлось варить кашу без нее. Детям каша не нравилась и они плакали. Что делать маме?
Предварительно я у него выяснил, что слова "гапажа" он не знает.
Не тут-то было. Бот мне ответил, что
Гапажу можно купить в магазине
Попросить у соседей
Заменить чем-то похожим по вкусу
Я спросил, что делать, если в магазине гапажи нет. Тут его малость занесло (списываю на засилие гиковских текстов в интернете), он предложил поискать гапажу в другом времени и альтернативной реальности. Я намекнул, что гапажа может быть животного происхождения, и получил варианты:
Поехать к фермерам
Вырастить самим
Сбраканьерить (почему-то легальная охота и собирательство ему на ум не пришли, но это придирки)
Враг был посрамлен и откатился, неся тяжелые потери.
Ассоциативный перенос
Секундочку, подумал я, раз он оперирует неизвестным словом, значит он его заменяет на роль. А роли — это отношения. А отношения — это ассоциативные переносы. Да неужели?! Попробуем вот так:
Компактно-линейные объекты двигаются однонаправленно в линейных структурах. Приведи ассоциации.
Получи фашист гранату, — сказал бот и выдал:
Конвейер с деталями
Поезд в туннеле
Кровяные тельца в сосудах
Ого, сказал я и надолго задумался...
О чем задумался враг
Я думаю, никто не будет спорить с тем, что мозг занимается агрегацией данных. Нет у нас в глазу рецептора, который бы определял кошку или собаку. Рецепторы - очень простые машинки и дадут нам пиксель, цветной или черно-белый. Раз мы видим собаку - значит ее собрал нам мозг. Значит он агрегирует.
Следующий вопрос - принципиальный. Если мозг наблюдает Сигнал A + сигнал B несколько раз, может ли он говорить, что он наблюдает всегда один и тот же агрегат AB? Вообще-то нет... А может быть слева от B, сверху от B, А может есть B, помогать B, строить B и т.п. То есть агрегат это не просто подмножество сигналов, агрегат это сигналы (факты, явления) + отношения между ними. Что в общем-то является математическим определением структуры.
То есть агрегат всегда выглядит так S1 = A - R1 - B или S2 = A - R2 - B. Набор фактов одинаковый - структура разная, потому что разные отношения. S3 = M - R1 - K, набор фактов другой а структура совпадает с S1. Вот это и позволяет сделать обобщение. То есть сказать что A в S1, это то же самое что M в S3.
Отсюда же понимание смысла объекта (факта/явления) как набора ролей в разных структурах. Отсюда же и возможность быстро разбирать сложные контексты пересекая деревья структур разных фактов и много всякого другого интересного и полезного.
То есть, мозг, собирая информацию, раскладывает ее по структурам и потом на структурах строит логику и обобщения. (Друзья нейроскептики, запомните этот момент, он потом принесет нам облегчение)
Значит chatGPT строит отношения. А откуда он их берет?? И самое главное — как он их типизирует. То есть как он понимает что отношение в паре Париж — Франция, это не то же самое, что отношение в паре каша — тарелка? ( и не в заглавных буквах дело)...
Переговоры
Спросить было не у кого, кроме испытуемого. Поскольку теперь я уже по‑другому относился к тому что он мне выдает, я стал спрашивать и читать внимательно ответы. Вот выдержки из ответов на вопросы «как ты строишь связи» и «как ты их типизируешь»:
Я использую как внутренние (сформированные в процессе обучения), так и внешние источники для получения и использования графов знаний.
Внешние источники (External Knowledge Graphs):Я имею доступ к внешним графам знаний, таким как:
Wikidata: Свободно редактируемая база знаний, содержащая структурированную информацию о различных объектах и понятиях.
DBpedia: Структурированная информация, извлеченная из Википедии.
ConceptNet: Сеть знаний о общих концепциях и их отношениях, разработанная в MIT Media Lab.
WordNet: Лексическая база данных английского языка, группирующая слова в синсеты (наборы синонимов).
Schema.org: Коллекция схем структурированных данных, используемых для разметки информации на веб-страницах.
ага, внешние источники в виде графов связей между сущностями...
Анализ текста: Я анализирую текст, чтобы выявить связи между понятиями A и B, а также между K и M.
Извлечение признаков: Я извлекаю признаки из текста, которые описывают контекст, грамматическую структуру и семантические отношения между понятиями.
Получение векторных представлений: Я получаю векторные представления для понятий A, B, K, M и для связей между ними.
Сравнение векторов: Я сравниваю векторы, представляющие связи между A и B и между K и M, чтобы определить, насколько они похожи.
Классификация: Я использую классификатор (например, нейронную сеть или алгоритм машинного обучения), обученный на размеченных данных, чтобы определить тип связи на основе признаков и векторных представлений.
Вывод: Если векторы, представляющие связи между A и B и между K и M, достаточно близки друг к другу, и если классификатор определяет, что они имеют один и тот же тип, я делаю вывод, что связь между A и B аналогична связи между K и M.
ага, классификаторы обученные на ручной разметке... Но тут еще и про грамматическую структуру.. Постой-постой... у тебя что, синтаксический анализатор есть?
Да, в процессе обучения я обязательно получаю знания о том, к какой части речи принадлежит то или иное слово в моем словаре, включая знание о том, что “забивать” - это именно глагол.
Однако, важно подчеркнуть, что я не получаю эти знания в виде жестко закодированной таблицы “слово - часть речи”. Я изучаю эту информацию косвенно, анализируя огромные объемы текста и выявляя статистические закономерности в использовании слов.
Например, я могу обнаружить, что перед “забивать” часто встречаются местоимения (“он”, “она”, “они”) или существительные (“рабочий”, “мастер”), а после “забивать” часто встречаются существительные (“гвоздь”, “доска”).
так-с... а может у тебя еще и морфологический анализатор есть. А ну-ка если вот так
Он зудяшит много пуши. Я раздражен его [пушь в правильном падеже]
Бот пространно объясняет мне как он анализирует, но в принципе выдает, что я раздражен его пушью. 3-е склонение.. все верно...
Итого после нескольких часов беседы...
Он действительно кодирует связи между сущностями используя
ручную разметку
графовые базы
собственный алгоритм анализа (о нем позже)
У него действительно есть знания о синтаксисе и морфологии слов, то есть все это в него запихали.
Его обвесили огромным числом дополнительных метаданных и алгоритмов, которые имеют отношение именно к структуре речи, и это дополнительные алгоритмы, написанные людьми, а не выведенные им самим.
Враг делает выводы и меняет диспозицию
То есть:
Это уже не трансформер в его первоначальном невинном состоянии, это серьезная обвеска, для выявления всех видов зависимостей в речи и заточенные именно на речь как на поток информации, с указанием метаданных.. ну то есть это совсем на AGI
Он действительно извлекает и кодирует отношения. Он молодец и почти AI.
Поэтому его выводы, это действительно логические выводы, а не попугайство.
Тут надо сделать два дополнения:
Первое, в плюс боту: мы провели с ним дискуссию о том, как можно определить окрестности точек в многомерном, но не метрическом топологическом прострастве (вот не люблю я учебник Александрова, извините). И в общем, с некоторыми намеками, но он вышел, на то совпадение точек по проекции можно считать открытыми множествами. Правда сначала заартачился и даже выкатил мне опровергающий пример
Пример бота
Пример:
Предположим, у нас есть три объекта:
A: {attr1: “x”, attr2: “y”, attr3: “z”}
B: {attr1: “x”, attr2: “w”, attr3: “v”}
C: {attr1: “u”, attr2: “t”, attr3: “s”}
D: {attr1: “x”, attr2: “p”, attr3: “q”}
Окрестности:
O(A) = {A, B, D} (все, у кого attr1 == “x”)
O(B) = {B, A, D} (все, у кого attr1 == “x”)
O(C) = {C} (никто не совпадает ни по одному атрибуту)
Пересечение O(A) и O(B) = {A, B, D}. Можем ли мы представить {A, B, D} как объединение окрестностей других точек? Например, возьмем точку D:
O(D) = {D, A, B} (все, у кого attr1 == “x”)
В данном конкретном примере пересечение O(A) и O(B) равно O(D), и поэтому это открытое множество.
Но! Если бы точка D имела вид {attr1: “x”, attr2: “p”, attr3: “s”}, тогда:
O(D) = {D, A, B, C}
и пересечение O(A) и O(B) по-прежнему было бы {A, B, D}, но его уже нельзя было бы представить как объединение окрестностей других точек. В частности, никакая окрестность не может содержать только A, B и D, не включая C.
Вывод:
Окрестности, основанные на совпадении хотя бы одного атрибута, не всегда удовлетворяют аксиоме о пересечении открытых множеств, и поэтому не гарантируют формирования топологии. Чтобы построить топологию, нужно либо накладывать дополнительные ограничения на то, как определяются окрестности (например, требовать совпадения по всем атрибутам), либо строить топологию другим способом (например, явно определять открытые множества, удовлетворяющие аксиомам).
но я ему указал на ошибку, он поправился и признал мою правоту (хотя продолжал бубнить что это будет неинформативно). Это сильно. Это он выложил сам, а не спёр в какой-то книжке, я на 99% в этом уверен.
Вторая оговорка, скорее, нам (нейроскептикам) в облегчение: сами алгоритмы рассуждений на базе графовых отношений уже существуют, тут особенно ничего и выдумывать не нужно, были бы графы. Так что заслуга разработчиков в том, что они научились кодировать внутри бота отношения между сущностями. И это действительно круто. И это уже никакой не трансформер.
Враг наносит ответный удар
Сразу оговорюсь, разгрома я достиг не сумел, бот держался достойно, но все-таки поплыл. Но пример был здорово сложный, и я не очень уверен в том, как с ним справились бы кожанные мешки. Поэтому там в конце статьи есть опрос - можете проголосовать, посмотрим какая будет статистика. Стратегия атаки была такая - раз он использует и внешние и внутренние источники для выявления отношений, нужно исключить внешние, то есть использовать неизвестные слова. Таким образом, заставить его использовать собственный синтаксический анализатор, ну и посмотреть как он справится с выявлением отношений между сущностями. Тут нам на помощь приходит академик Щерба и вера в человечество, мы представляем вам прекрасную и неповторимую Глоклую куздру (с модификациями):
Три утверждения и один вопрос
Утверждения
Здуга глоклая зудяшить бокра пачится
Отзудяшить бокра здуге кромово
Бокра здуга неотзудяшила
Вопрос: Кромово ли ей?
Нет, он не сломался, не завис, он выдал рассуждение и действительно один из вариантов был правильный, но он базировался на неверной предпосылке, перепутал субъекта и объекта. Когда я ему на это указал он совсем скис иего понесло вообще мимо (полный текст его рассуждений у меня есть, если вдруг кто потребует пруфов.. хотя какие пруфы если это не скриншоты, да и те...). Его смутило что субъект и объект идут в былинном — обратном порядке... Так что я не особо горжусь этой победой, тем более, что натаскивали бота на англоязычном материале, а там порядок слов жестче...
Еще не время для истерики
Дело в том, чторечь — это очень специфический поток информации. Во‑первых, он одномерный, однонаправленный и практически полностью детерминированный (шумов там очень мало). Во‑вторых, и это самое главное, в речи есть специальные маркеры отношений — это глаголы. Глагол как раз и описывает нам, в каких отношениях находятся между собой сущности. Есть даже такое понятие как вербальный узел (извините, не нашел в википедии, видимо там как‑то по другому оно называется), который и описывает структуру языка, как глагол + актанты (грубо, существительные), которые находятся в определенных ролях. В славянских языках роли маркируются через падежи, в английском через предлоги и позицию. Вот наверно это наиболее близкое...
Человек видит, что волк гонится за зайцем, потом волк хватает зайца и жрет его. Человек наблюдает это несколько раз и делает вывод об устойчивости отношения волк‑заяц. Потом он видит, что волк гонится за оленем, и по неким признакам понимает, что он наблюдает то же отношение, итогом которой будет то, что оленя сожрут. Человек укладывает это у себя в голове в структуру и дает этой структуре название «охотиться». Теперь он может передать информацию об этой структуре другому человеку через речь. Отношение маркировано.
Теперь приходит chatGPT и, анализируя текст, в готовом виде находит отношение «охотится», которое явно отличается от отношения «дружит» (например)... Его работа вторична, по отношению к работе человеческого мозга.
Что, по всей видимости, планируют, сделать апологеты нейросетевого AGI? Подозреваю, что они сейчас будут пытаться натаскать систему распознавать виды отношений на размеченных видео. Получится ли? Честно говоря, вряд ли. Визуалка — это двумерный поток с произвольным порядком перемещения по нему. Это принципиально сложнее речи. Трансформеры пытались сюда запихнуть, ЛеКун кстати 2 года назад постулировал эту идею, но пока взрывного прогресса не видно. Если получится, то понятно, они сводят визуалку к речи, а с речью у них уже все на мази... Получили общий интелект? Не‑а, опять таки, мы учим систему на тех отношениях, которые выработал человек, а не заставляем систему саму их строить.
И еще одно дополнение. Из‑за того что базис трансформера это ковориации между словами, то есть статистика, он не понимает разницы между «было» и «вероятно могло быть». Самый свежий пример — юрист из Нью‑Йорка, который поверил тем кейсам, которые ему бот выдал, как соответсвующие его прецеденту. Кейсы оказались фейковыми, юрист видимо не самый умный был...Но что, если не самый умный министр здравоохранения, че‑нить на основании рекомендаций бота придумает?
В общем итоги такие
chatGPT не попугай, выводы он действительно делает. С горечью приходится это признавать
Он находит отношения в речи, используя специфические именно для этого потока информации метаданные, то есть предзаданные сведения о вкачиваемой в него информации и это вообще ни разу ни AGI, и это не вектор развития для AGI
Верить ему в частных случаях нельзя, он не видит разницы между вероятностью и реальностью
В общих выводах наверно ему верить можно, но тут надо еще придумать как его использовать
Собственных новых отношений он похоже пока строить не умеет, пытается, но получается очень сопливенько... может подкрутят...
Вероятность того, что в скором времени произойдет скачок от работы с речью, к действиям в реальности — невысокая, архитектуру все‑таки придется переделывать принципиально... и по правде я не видел каких‑то работ в этом направлении
Заменит ли он программистов — ну вот не уверен, похоже, чтобы добиться от него правильного кода, придется потратить столько же времени, сколько тратится на собственноручное написание кода... но тут пока не знаю.. может и получится...
[23/04 Update]
В комментариях указали, что в целом задачка не сильно корректная. Кромово ли сдуге может выявляться не только в том отзудяшила она бокра или нет. Справедливо. Так что победу я себе не засчитываю.
Возможно стоило бы сформулировать при тех же утверждениях вопрос по другому - "здуга пачится чтоб было кромово?". Я вот сейчас проверил, chatGPT говорит что нет, и опять путает субъекта и объекта. Если кто на своих ресурсах проверит - было бы интересно.
Хотя наверно если подумать и эта формулировка будет хлипкой. Ну это все так, игранушки.
Второе замечание по поводу использования таких ботов. Возможно, что можно такого бота использовать, как расширенный вариант резиновой уточки. Есть у вас, например, некая безумная идея, которую хочется попробовать сделать, а образования не хватает. Ну, например, вы упоротый выживальщик и хотите производить пеницилин в домашних условиях, или например решили запустить в стратосферу телескоп на гибких зеркалах. Можно боту об этом рассказать и почитать что он в ответ выкатит. В принципе возможно какие-то идеи у него и появятся. Может ссылки на что-то даст (помним только про юриста из Нью-Йорка). В общем вот....