Читать книгу Семена. Второе лето (Роман Викторович Душкин) онлайн бесплатно на Bookz (5-ая страница книги)
bannerbanner
Семена. Второе лето
Семена. Второе лето
Оценить:

3

Полная версия:

Семена. Второе лето

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

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

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

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

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

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

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

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

Но как интересно. Вот моя Аурелия изобразила себя как девушку с синими волосами и бирюзовыми глазами. А Злата у отца нарисовала себя как обычную девушку с золотыми волосами. Хотя и Злата, и Аурелия в своём имени имеют один и тот же корень – «золото», первая на славянском, вторая на латыни.



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

– А как устроена Аурелия?

Отец ответил:

– Точно так же. Она – полный динамический клон Златы.

– Что значит «динамический клон».

– Это значит, что как только я вношу изменения в функциональность Златы, они тут же появляются и у Аурелии.

– Но ведь есть же какие-то особенности, связанные с персонализацией пользовательского опыта.

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

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

– Вроде бы, интуитивно понятно, но как обычно всё это привело к излишней антропоморфизации агентов, – вздохнул отец. – Я был против такого подхода, но в итоге махнул рукой и согласился, так как это в целом очень удобно.

Отец заканчивал свою презентацию и под конец сказал:

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

– Звучит очень круто, – сказал я.

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

– Да, ты говорил, что у тебя некоторого рода форма этого явления.

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

– Понимаю…

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

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

Пока отец рассказывал и показывал мне свою платформу, я зарисовывал то, что он говорил. По итогам у меня получилось что-то типа архитектуры искусственного когнитивного агента, как он объяснял. Вышло вот так:



Я показал эту диаграмму отцу, когда он спросил меня, всё ли я понял, и он восторженно кивнул и сказал:

– Отлично, Данила. Я бы и сам нарисовал не так красиво. Вижу, ты вошёл в тему. Теперь попробуй сделать себе нового помощника, который будет учить тебя программированию. А я посмотрю, как у тебя это получится.

* * *

У меня, конечно, чесались руки попробовать сделать нового искусственного когнитивного агента. Я зарегистрировался на платформе, и передо мной открылась основная панель разработки. Я смотрел на неё, и у меня тут же пропали все мысли и идеи – я не мог понять, с чего начать. Вроде бы, всё было понятно. И отец же даже сказал мне, какого бота надо сделать. Но всё равно стало непонятно.

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

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



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

Через некоторое время я резко открыл глаза, поняв, что сплю. Спать одному в лесу? Это было для меня что-то новенькое. Я удивился тому, как беспечно сознание и как резко меня разбудили глубинные структуры мозга, когда «поняли», что что-то происходит не то. Конечно, в нашем лесу не было никакого серьёзного зверья, но тем не менее.

Я встал и пошёл домой. Голова начала варить.

* * *

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

Я положил перед собой планшет со своими заметки и архитектурой искусственного когнитивного агента. Менее надо было начать с осмысления того, что мне надо, какие результаты мне должен он выдавать. Чего я хотел от новой сущности, которая вот-вот должна была зародиться на платформе?

Я вспомнил, что отец говорил о том, что надо начать с общего предназначения системы, а потом перечислить её функции и те задачи, которые она должна решать. Так что я решил сосредоточиться на задачах – это было понятнее всего. Мне нужен был агент-помощник для того, чтобы он и помогал мне писать исходные коды на языках программирования, и обучал меня премудростям в области программирования и информатики. Так что я так и записал:

Решаемые задачи:

1) По запросам пользователя писать исходный код на различных языках программирования, заданных пользователем.

2) Обучать пользователя концепциям информатики и идиомам программирования.

Я подумал некоторое время и добавил ещё одну задачу:

3) Разрабатывать новые языки программирования и вычислительные системы.

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

У меня в голове с щелчком сошлась идея, так что я просто взял и написал:

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

Я посмотрел на это и понял, что это то, что нужно.

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

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

Я откинулся и посмотрел на это всё. У меня получилось описание персонажа, которое состояло из, собственно, описания его идентичности, его предназначения и навыков. Тут я заметил, что над этим текстом, который я ввёл, мигает кнопка с буквой «О». Я навёл на неё курсор, и из-под него возникла подсказка: «Оптимизировать». Интересное дело. На всякий случай, я скопировал весь текст и сохранил в виде отдельного файла у себя на рабочем столе, а потом нажал эту кнопку.

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

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

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

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

Сгенерируй свой аватар.

Результат не заставил себя ждать. Через несколько секунд на экране появилась картинка:

bannerbanner