Предисловие
В моей статье «Конструктивное определение искусственного интеллекта» ( https://habr.com/ru/articles/823458/ ) дано определение искусственного разума и общая схема системы искусственного разума. А также, сказано, что на основе этой схемы можно начать разработку реальной системы искусственного разума. И даже то, что эта разработка уже начата. Сейчас настало время рассказать о первых результатах.
Требования к проекту
Основные требования к такому проекту:
– он должен максимально наглядно продемонстрировать все основные функции разума;
– при этом для начала он должен быть минимален по объёму;
– у него должен быть потенциал для развития в универсальную, полнофункциональную систему.
Описание текущего проекта
Наверное, идеальным вариантом такого проекта является игра. Простая игра стрелялка. Самая простая, которая бы позволила сосредоточить внимание именно на процессе самообучения, не отвлекая его на события сюжета. Достаточно двух объектов, один из которых будет самообучаться, а второй – заставлять его это делать. Первого назовём субъектом (обучения), второго – охотником. Охотником управляет пользователь. У охотника есть пушка, стреляющая снарядами, которую охотник может направить на субъекта. А также охотник может перемещаться влево или вправо на любое количество шагов. У субъекта свободы меньше, он может сделать от нуля до, скажем, трёх шагов влево или вправо за один раз. То есть, и субъект и охотник находятся на параллельных прямых линиях и могут двигаться только по ним влево или вправо.
Попадание снаряда в субъекта считается плохим событием, вызывающим у него отрицательное состояние. Соответственно, задачей субъекта является научиться избегать попадания в это состояние, то есть, научится избегать попаданий снарядов из пушки охотника. Не просто уворачиваться, а избегать с просчётом ситуации на несколько шагов вперёд. Это, по определению, и есть разумное поведение.
Программа, выполняющая все функции игры, имеет общую структуру системы искусственного разума. Мир, в котором эта система находится, формально состоит из четырёх объектов: субъект, охотник, пушка и снаряд. Явных органов чувств у субъекта нет, но результат восприятия субъектом мира есть – это список параметров. Среди которых координаты объектов, вид снаряда, которых может быть несколько, и другие параметры. Всего их сейчас около трёх десятков. Этот список параметров есть то, что на схеме ниже обозначено словом «состояние».
При изменении значения хотя бы одного параметра состояние мира изменяется и запоминается.

В результате запоминания возникает последовательность состояний, которая и является процессом изменения мира.
Классификация процессов это генерация знаний. На входе этого модуля процессы, на выходе – алгоритмы этих процессов, полученные в результате работы функции обобщения. Любой объект изменяется в результате действия, совершаемого им самим или другим объектом. Поэтому, простейшими элементами алгоритма-знания являются правила. Правило состоит из трёх частей: вход, действие, выход. Вход – описание диапазонов значений входных параметров объектов, участвующих в действии. Выход – то же для выходных параметров этих же объектов. Действие – это описание параметров самого действия. Выходные параметры могут иметь функциональные зависимости, как от входных параметров, так и от других выходных. Всё это определяется в процессе обобщения. Таким образом, база знаний, в конечном счёте, состоит из правил.
Изначально база знаний пуста. Первое правило появляется после трёх поражений субъекта. В программе принято производить обобщение событий (процессов) при повторении их три и более раз. Поражение это действие, изменяющее состояние субъекта из положительного в отрицательное. Чтобы выяснить закономерность, приводящую к такому результату, система обобщает процессы, предшествовавшие поражению. А это движение снаряда по направлению к субъекту. В результате получается правило поражения. Теперь, используя это правило для анализа происходящего в мире, субъект может отследить опасную для него ситуацию, а именно, подлёт к нему снаряда. При этом субъект начинает «чувствовать» опасность.
Ощущение опасности должно конструктивно принуждать субъекта к поиску действия, которое поможет избежать поражения. Какое действие может совершить субъект, когда у него нет никаких знаний о себе? Только случайное, пробное из списка возможных. Например, шаг влево. Действие совершается и запоминается его результат. А он либо положительный, когда снаряд пролетел мимо, либо отрицательный, когда попал. Субъект будет совершать одно и то же пробное действие в случае опасности, пока не поймёт, что оно бессмысленно. А это произойдёт тогда, когда появится правило. Например, что шаг влево три раза дал отрицательный результат. После этого он будет делать другое пробное действие, например, шаг вправо. Допустим, оно тоже даст отрицательный результат. Но, теперь появился один важный положительный результат: субъект получает знания о себе. Если обобщить все совершённые субъектом сдвиги (шаги влево и шаги вправо), можно выяснить закономерность, что шаг меняет координату по горизонтали. И даже точную функциональную зависимость между шагом и изменением координаты. А если сравнить все процессы полёта снаряда, можно выяснить закономерность в полёте снаряда и получить правило полёта снаряда.
Теперь самое главное: этих знаний достаточно для моделирования развития опасной ситуации при движении снаряда к субъекту. Можно смоделировать действие субъекта. Например, представить, что сделан шаг влево. Потом смоделировать продолжение движения снаряда и определить, будет поражение или нет. Если будет, то выбрать другой вариант действия и продолжать моделирование, пока будут варианты. Если найдётся успешный вариант, то совершить это действие в реальности, если нет, то продолжить совершать другие варианты пробных действий. Два шага влево и так далее.
Моделирование производится следующим образом. Сначала из правил выстраивается алгоритм возможных действий субъекта и охотника. Это делается модулем «синтез алгоритмов». Потом просчитываются все конкретные варианты, и выбирается лучший вариант по заданному критерию. Таким критерием может быть вероятность положительного исхода, энергозатраты и т.п. Затем, лучший вариант исполняется реально. Это уже осуществляется модулем «воздействие».
Те смоделированные действия, которые реально дали положительный результат, могут быть обобщены и в результате получено правило, которое можно назвать проверенным действием. Оно совершается тогда, когда реальная ситуация соответствует входу этого правила. Уже без моделирования. То есть, без рассуждений, как рефлекс.
Итого получилось три вида реакции субъекта на опасность:
– пробное действие;
– смоделированное действие;
– проверенное действие.
Пробное действие это примерно то, что делает человек в совершенно новой для него ситуации. Моделирование – это, по сути, размышление. Проверенное действие – это уже навык, высшая степень обученности. Поэтому, если субъект научился полностью избегать попадания в отрицательное состояние, и делает это только проверенными действиями, он полностью адаптировался к жизни в своём мире.
Есть ещё один важный момент. Сейчас в игре два вида снарядов. Первый снаряд летит по прямой до препятствия любое расстояние. Второй снаряд самонаводящийся, но имеет ограничение по дальности полёта. От первого снаряда можно увернуться, уйдя с линии, по которой он летит. От второго – только отойдя на безопасное расстояние. Но, это не всегда можно сделать сразу, так как количество шагов сдвига у субъекта ограничено. Если сумма текущего расстояния до охотника и максимального сдвига меньше максимального расстояния полёта снаряда, то поражение неизбежно. И моделирование не даёт положительного результата. Что делать? Выход в том, чтобы включить «стресс» и заглянуть в прошлое на большее количество шагов (действий). В результате появятся знания о других действиях других объектов. Например, о движении охотника, совершении выстрела и т.п. Это даст возможность моделировать ситуацию в игровом режиме на несколько шагов вперёд. И находить положительное решение. Именно так в программе и сделано. Но, при довольно близком расстоянии между субъектом и охотником, с первого раза уйти от поражения всё равно не удастся. У субъекта не хватает свободы передвижения для этого. Поэтому, он просчитывает все варианты на три хода вперед и выбирает вариант с максимальной вероятностью оторваться от охотника через один или два хода. Особенно это проявляется, когда субъект подходит к краю и ему надо «прорываться» обратно в сторону центра. Однако там у него появляются другие возможности, о которых пока умолчим, чтобы в игре осталась хоть какая-то интрига. Есть также интересное решение и для охотника в плане полной победы, которое пользователь должен будет найти, используя силу своего интеллекта.
Перспективы развития проекта
Чем больше в системе элементов (объектов) и связей между ними (действий), тем больше система по размеру и сложности. Текущее решение можно считать системой искусственного разума минимального размера. Но, это уже разум! Он генерирует знания, существуя в агрессивной среде, и применяет эти знания в борьбе за существование. Каковы могут быть перспективы развития этого решения?
Первое – масштабирование. Больше объектов и действий. Мир станет сложнее, и поведение субъекта станет интереснее. Но, не только. На схеме, приведённой выше, четыре модуля выделены жирными линиями. Они составляют универсальное ядро разума. Остальные модули осуществляют связь с конкретным миром. Сейчас это ядро нельзя считать вполне универсальным, там для этого много чего не хватает. Хотя, основные функции присутствуют, они имеют не совсем универсальные решения. По мере масштабирования ядро будет становиться всё более универсальным.
Второе – увеличение глубины моделирования. Ясно, что это один из параметров, влияющих на силу разума. Чем на большее количество шагов делается моделирование, тем больше вероятности найти решение в сложной ситуации. Но, увеличивается время реакции.
Однако, для того, чтобы считать такой разум (интеллект) сильным, этих пунктов мало. В моей статье «Сильный интеллект, что это значит?» (https://habr.com/ru/articles/735136/ ) указаны ещё два необходимых пункта:
– способность находить решение в условиях недостатка конкретных знаний, что ещё называется решением творческих задач;
– способность активного поиска знаний, которая состоит в том, чтобы делать гипотезы и планировать и осуществлять эксперименты по их проверке.
Реально ли воплотить эти пункты в рамках развития проекта? Не только реально, но и не очень сложно. В текущем решении механизм гипотез уже работает. Например, когда при классификации ситуации, она подходит для описания входа какого либо правила, но, не совсем. Формально, это гипотеза. С ней можно поступить двояко.
Первое, сделать действие в соответствии с правилом на свой страх и риск. То есть, использовать его, как вероятное решение. Но такой вариант допустим только, если цена ошибки невелика. Как в этой игре.
Второе, спланировать и провести эксперимент по проверке гипотезы. Спланировать, значит, построить алгоритм последовательности таких действий, в результате которых будет получен однозначный ответ. Провести, значит, выполнить реально эту последовательность действий. Уже сейчас эти способности у системы есть, но, в текущем конкретном мире у субъекта нет необходимой для этого возможности – возможности влиять (изменять состояние) на другие объекты. Думаю, к третьей – четвёртой версии игры такие возможности появятся. Это по активному поиску знаний.
Что касается творчества, оно становится возможным при появлении правил более высокого уровня абстрактности, которые получаются при обобщении более конкретных правил. Это тоже уже есть, но для демонстрации «творчества» пока маловато сложности мира.
Таким образом, достичь сильного интеллекта можно уже к третьей – четвёртой версии данной игры. Но, конечно, это будет ещё не то, что называют общим интеллектом. Для этого сильный интеллект должен быть ещё и большим. А это вряд ли можно достичь простым масштабированием. При создании больших систем появляются специфические трудности. Так что это будет не просто.
Сравнение с аналогами
Так как данная игра является только демонстрацией системы искусственного разума, сравнение имеет смысл производить не с играми, а с существующими общими решениями по самообучению в процессе функционирования. Пока среди таких решений только глубокое машинное обучение многослойных нейронных сетей. Только оно способно на основе обобщения ситуаций моделировать развитие конкретной ситуации. Выглядит это как вычисление наиболее вероятного следующего состояния на основе анализа последовательности предыдущих состояний. Например, генеративная текстовая модель вычисляет наиболее вероятное следующее слово в предложении, на основе анализа уже готовой части предложения. Да, это моделирование. И это значит, что теоретически возможно сделать аналогичную игру, в которой субъект будет обучаться в процессе игры. А практически?
Нейронная сеть очень долго обучается, прогресс вряд ли можно заметить в течение приемлемого времени игры. Скажем, пять, десять минут. Для обучения чему-то простому требуется сотни и тысячи повторений. По сравнению с этим, в данной игре обучение происходит очень быстро. Три повторения и готово правило. Дальше оно только уточняется уже в процессе применения. Правда, есть одно но. Здесь объекты и действия описаны заранее. Объект – это список параметров. Действие – список характеристик и список участвующих в нём объектов. Если этого не сделать, то обучение займёт больше времени, так как система должна будет выяснить это сама. Универсальное ядро будет на это способно. Но, всё равно, возможность предварительного описания объектов и действий – это удобство.
Главный вопрос в том, можно ли на основе нейронной сети сделать сильный интеллект в том понимании, которое было представлено выше? Пока этого сделано не было.
Дело в том, что нейронная сеть не генерирует знания в явном виде. В виде правил. Это делает невозможным автоматическое, а главное, явное, расслоение знаний по уровням абстрактности. А значит, исключает элемент творчества. Наверное, возможны какие либо частные творческие решения для разработки таких систем. Но общее решение вряд ли возможно.
Творчество подразумевает активный поиск знаний. Как это происходит? Система пытается решить поставленную задачу (смоделировать ситуацию), и обнаруживает нехватку конкретных знаний. Тогда она «поднимается» на более высокие уровни абстрактности и пытается найти абстрактное решение задачи. Если удаётся, то она может выяснить, каких конкретно знаний у неё не хватает. И добыть их. Способа два: «почитать литературу» или практически методом гипотеза – эксперимент. То есть, без наличия знаний в явном виде активный поиск знаний в полной мере организовать нельзя.
Из всего этого следует вывод, что на основе нейронной сети сильный интеллект сделать либо нельзя, либо решение будет «некрасивым». Если это действительно так, то нейронные сети являются тупиком на пути к сильному, и тем более, общему искусственному интеллекту.
Выводы
Если даже нейронные сети и не являются тупиком на пути к сильному интеллекту, то предлагаемый альтернативный поход является красивым решением этой проблемы. И он лишён главных недостатков нейронных сетей:
– он не потребует гигантских затрат на обучение в виде времени и исходных текстов;
– возможен ввод знаний в явном виде, в виде правил, через формальный интерфейс или на естественном языке, что тоже экономит ресурсы;
– после достижения некоторого уровня обученности, система будет сама защищаться от ложной информации. Это сделать просто, достаточно попытаться встроить новую информацию в базу знаний при помощи моделирования. Если возникнут противоречия, их несложно будет разрешить;
– пользуясь явным представлением знаний и алгоритмов решения задач, система будет способна обосновать свои решения, что повысит доверие к ним.
Заключение
Как было сказано выше, целью развития данного проекта является создание сильного интеллекта в виде практически полезных систем. Пока это будут игры. Насколько это возможно в рамках предложенного автором подхода, покажет только практика, как конечный критерий истины.
Игру можно скачать по ссылке, которая появится в комментариях.
Автор: vasiljevserg


