Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Данный вариант реализации ИИ совершенно отличается от варианта с использованием нейронных сетей.
Почему нейронные сети получили такое распространение? Хотя модель того, что так работает мозг человека, лично у меня под большим сомнением. Если бы у нас любое решение возникало мгновенно и не требовало обдумываний, я бы согласился. А раз есть обдумывание и перебор возможных вариантов, то есть какой то процесс, и это уже не нейронные сети.
Вернемся к вопросу, почему так распространились нейронные сети? А очень просто, нейронные сети это вполне рабочий механизм накопления знаний без использования алгоритмов, на основе большого объема данных.
Но у нейронных сетей есть очень большой недостаток, они хороши для решения конкретной и одноступенчатой задачи, но если этапов задачи несколько, то тут нейронные сети бессильны, и упираются в свой предел.
Узловая модель ИИ так же позволяет очень легко накапливать знания без использования алгоритмов, но по другому принципу.
Если нейронные сети хорошо подходят для распознавания картинок, но уже с переводом текста справляются намного хуже, а вот с управлением роботом уже не справятся вообще. Потому что там необходимо многоуровневое принятие решений, с перебором возможных вариантов и выбором самого подходящего в текущей ситуации.
Узловая модель ИИ это более интеллектуальный механизм накопления знаний. И как мне кажется, что то подобное используется в мозге человека.
Об этом может свидетельствовать тот принцип, как у нас происходит обучение в школе и высших заведениях. Если бы нас обучали путем демонстрации наборов образов (картинок) или что то подобное, тогда это было бы похоже на то, что мозг работает по принципу нейронных сетей.
На самом деле, обучение у нас происходит по принципу объяснения и перехода от простого к сложному. Происходит выстраивание логических цепочек и причинно следственных связей.
Даже тот факт, как у нас работают глаза, перемещаясь по рассматриваемому объекту, (как фонариком освещая в темноте отдельные фрагменты) последовательно считывают небольшой чувствительной зоной рассматриваемые данные. Это говорит о том, что где то считанные данные накапливаются и на некоторое время запоминаются. А это уже за пределами механизма нейронных сетей. Не говоря о том, как мы принимаем решение, взвешивая и перебирая все возможные варианты.
Итак, рассмотрим механизм работы узловой модели ИИ. Механизм следующий, сознание (центр внимания) перемещается от одного узла к другому по одной из нескольких связей между узлами.
По аналогии, как поезд перемещается по железнодорожной сети от одной узловой станции к другой.
Накопление знаний в узловой модели ИИ происходит путем добавления новых переходов от узла к узлу. Количество переходов от одного узла к другим неограниченно.
Так же, каждый переход от узла к узлу имеет свой номер (назначение). Данный номер является, по сути, обозначением некоторого понятия. Все назначения номеров переходов между узлами общие для всей системы и обозначают одно и то же. Т.е. если мы хотим к определенному узлу добавить дополнительную информацию определенного вида (понятия), то мы должны создать переход к новому узлу именно этого номера (понятия).
Соответственно, в последствии (во время принятия решения и находясь на этом узле), когда нам понадобится информация именно этого вида, то мы будем искать переход с соответствующим номером.
Вариантов переходов может быть множество, по количеству понятий, которыми оперирует человек. Это может быть и просто перечисление чего либо, или последовательность действий, возможные опасности, варианты решений и т.д.
Процесс накопления знаний происходит путем добавления новых переходов от узла к другому узлу или новому узлу. Причем именно того номера в соответствии с добавляемой информацией.
Например, запоминается некоторое событие(текущий узел), можно сделать переход от этого узла с номером – «участники события» и получить новый узел, от которого можно проследить переходы ко всем участникам события. Отдельно переход итоги события, и так можно добавить любую информацию относящуюся к этому событию. А в последствии, так же получить необходимую информацию.
Сами узлы в данной модели ИИ - являются информационными структурами и тоже могут иметь множество вариантов (типов узла), каждый тип предназначен для хранения своего типа информации.
Процесс мышления (принятия решения) происходит путем выбора необходимого перехода (по его назначению) и последовательным переходом от узла к узлу, пока не будет принято необходимое решение.
Накопленный опыт (то как необходимо действовать в подобной ситуации), так же может быть одним из вариантов перехода. Причем как удачный, так и негативный.
Последовательность действий, так же может быть одним из переходов. Причем, последовательность действий, может быть простой (только последовательность пунктов, что нужно сделать), а может и быть расширенной (с указанием необходимых промежуточных результатов и вариантов их исполнения).
Таким образом, последовательность действий превращается в более детализированную. Работать с каждым пунктом такой последовательности можно по отдельности. А каждый отдельный пункт так же может быть детализирован, и т.д. до самых элементарных действий.
А это уже нечто похожее на то, как действует и мыслит человек. Человек не мыслит алгоритмами, а мыслит последовательностями действий (отдельными пунктами) и для каждого этапа есть необходимые результаты, только по достижению которых, будет происходить переход к выполнению следующего пункта последовательности действий или прекращение выполнения, если промежуточные результаты не будут достигнуты и поиски других возможных вариантов.
Процесс обучения узловой модели ИИ так же будет происходить постепенно. С каждой новой попыткой накапливая новые варианты решения и учет возможных нюансов влияющих на правильность решения. Точно так, как делает человек путем проб и ошибок, накапливая тонкости и возможные варианты.
При этом стараясь как можно больше сделать возможность автономного выполнения каждого этапа последовательности действий. Чтобы потом иметь возможность, получать новые последовательности действий, путем другой компоновки уже знакомых элементов.
Как человек, идя по определенному маршруту, не строит общей программы своих действий, а просто разбивает маршрут на участки. Участки на видимые фрагменты, и только на небольшом участке в несколько шагов, выстраивает последовательность шагов, обходя пешеходов и лужи.
Итак, обобщим вышесказанное. Узловая модель ИИ позволяет очень легко накапливать новые знания без использования алгоритмов. Причем эти знания, всегда будут «под рукой» и в любой момент их можно дополнить новыми вариантами. Это как «навигатор», который всегда подскажет, куда необходимо повернуть, чтобы достичь необходимого места.
В узловой модели ИИ используется новый вариант накопления и хранения информации в виде переходов между узлами. Данный тип ИИ не сможет создавать новые знания, а вот обучаться и в последствии использовать опыт сможет очень даже хорошо.
Сам процесс обучения будет очень похож на то, как это происходит у людей. Данный вариант ИИ хорошо подходит для управления роботами, для выполнения простых но, тем не менее, разнообразных действий. Для совершенно однообразных действий подходит и то, что используется сейчас в производстве (простое повторение одних и тех же действий).
По мнению автора, примерно так и работает мозг человека. В мозге есть много вариантов нейронов, и у многих вариантов не очень много связей с соседними нейронами. У большинства нет вообще длинных аксонов, и они связаны только с несколькими соседними нейронами. Сразу оговорюсь, что не ставлю под сомнение описанные механизмы работы нейронов. Просто в совокупности разные виды нейронов могут функционировать совершенно по другому.
Например, те с длинными аксонами и большим количеством связей вполне могут выполнять роль шины. При помощи которой, уже более мелкими нейронами, происходит выбор необходимого перехода. Т.е. мелкие нейроны с небольшим количеством связей вполне могут выполнять функцию коммутаторов, при помощи которых и происходит выбор необходимого перехода между ключевыми нейронами.
Так что наличие в мозгу нейронов нескольких видов нужно тоже учитывать и не строить модель работы мозга только на работе одного вида. Как работу микропроцессора никто не объясняет через функционал отдельного транзистора (хотя в микропроцессоре есть миллионы транзисторов), так и работу мозга не стоит сводить к совокупности переплетений нейронов. Там все сложнее и интересней и узловая модель один из возможных вариантов.
Да и наличие в мозгу химических синапсов сильно меняет модель работы мозга. Не многие знают, что для связи между нейронами есть два вида синапсов, химические и электрические. Электрические и проще и работают быстрее, но чем умнее вид животного, тем больше у него химических синапсов.
Лично мне химические синапсы очень напоминают оперативную память компьютера, где хранимая информация хранится в виде заряда конденсатора. Так и химический синапс при периодической подпитке сможет длительно подавать сигнал на другой нейрон. А это уже совершенно другая функциональность работы нескольких нейронов. Срабатывание нейрона может происходить на основе нескольких сигналов сдвинутых по времени. Так что аргумент сторонников нейронных сетей, «что так устроен мозг человека», при более тщательном рассмотрении тоже не становится таким безупречным.
Практическая реализация узловой модели ИИ.
Для работы узловой модели ИИ необходим исполнительный механизм, который в своей работе будет использовать сразу два источника обрабатываемых данных.
Первый источник данных, это те данные, которые необходимо обработать.
Второй источник данных, это информационные базы знаний (ИБЗ).
Информационные базы знаний – это и есть те знания, которые накоплены в виде узлов и переходов между ними.
Таким образом, исполнительный механизм должен во время обработки входных данных, одновременно перемещаться по узлам, в соответствии с текущим контекстом обрабатываемых данных.
При этом ИБЗ будет по сути управлять процессом обработки входных данных. Исполнительный механизм будет выполнять роль транслятора, переводящий информацию ИБЗ в исполняемый алгоритм. Т.е. весь вычислительный процесс будет сводиться к перемещению между узлами в соответствии с входными данными и выполнением того, что указано в этих узлах по мере перемещения.
Исполнительный механизм - небольшая универсальная программа, которая выполняется в цикле и отрабатывает необходимые действия для осуществления переходов между узлами. Данная программа не меняется при изменении данных в ИБЗ, так же как компилятор не меняется при компиляции различных программ.
Узловая модель ИИ должна уметь одновременно обрабатывать (осуществлять переходы) на нескольких уровнях обобщения. Т.е. сама обработка никогда не должна сводиться к выстраиванию иерархии вызванных подпрограмм (как это происходит при обычном программировании), а наоборот необходимо стремиться к расчленению большой задачи на список более мелких. А более мелкие, к еще более мелким. При этом снабжая каждую подзадачу всем необходимым для ее успешного автономного выполнения.
Принцип «разделяй и властвуй» как нельзя лучше подходит для этого. Что при этом происходит? Каждая задача из алгоритма превращается в последовательность действий (пунктов, которые необходимо выполнить).
При этом каждый пункт последовательности действий, получает возможность самостоятельно развиваться и усложнятся, приобретая самостоятельность и универсальность. И все это возможно благодаря тому, что каждый пункт последовательности снабжается дополнительной информацией о необходимом результате, который должен быть достигнут при выполнении этого пункта.
С одной стороны это вроде бы усложняет систему, но с другой стороны, только так можно постепенно переходить на более высокие уровни обобщения.
К сожалению, современные методы программирования лишены такой возможности к обобщению, не говоря уже о возможности накапливать опыт в виде программ, поэтому так ухватились за нейронные сети, так как это хоть как то позволяет что то автоматизировать, если не получается построить адаптивный алгоритм.
Можно привести аналогию, современные методы программирования, как бы продолжают строить здания из отдельных песчинок, вне зависимости от того, это одноэтажное здание или небоскреб, вместо того чтобы постепенно переходить к построению из кирпичей или еще больших блоков.
А что этому мешает? А то, что каждая подпрограмма создаваемой программы не универсальна и не будет работать в другом окружении. И невозможно переставить отдельные элементы в другом порядке, и получить рабочую программу. Одного только взгляда на размеры современного программного обеспечения достаточно, чтобы понять, что развитие ПО идет не путем упрощения и унификации, а наоборот создаются новые среды программирования чуть более приспособленные для конкретных задач, а по сути ни чего не меняется.
Короче, одних алгоритмов в создании ИИ мало, и необходима комбинация совершенно разных методов. И главный из них это обучение и накопление опыта путем запоминания готовых вариантов решения. Если вариантов решения несколько, то выявление и запоминание на будущее, когда какой вариант подходит лучше. В дальнейшем необходимый вариант будет определяться автоматически в зависимости от текущих условий.
Опять же метод «проб и ошибок» позволит более точно определиться с конкретной реализацией решения необходимой задачи. Т.е. необходимы методы оценки полученных результатов и анализа когда что-то пошло не так и внесение изменений для предотвращения ошибок.
Как можно понять из вышеизложенного получение рабочего варианта ИИ по узловой модели не очень простая задача, и требует создания некоторого рабочего базового варианта. Который уже в последствии сможет самостоятельно накапливать знания и обучатся. Постепенно усложняя свое функционирование. Так же как новорожденный ребенок имеет какую то базовую основу, способную запоминать и обучаться.
Но тем не менее узловая модель имеет такой потенциал, в отличии от нейронных сетей и простого алгоритмического программирования. Для меня попытки построить ИИ на основе нейронных сетей представляется, как попытку построить такое «переплетение проводов» на все случаи жизни. Как вы понимаете такое в принципе невозможно, всегда будет появляться неучтенная комбинация, и что самое главное, данная нейронная сеть даже не поймет, что что-то идет не так, а сработает по какому то случайному варианту. О чем свидетельствуют аварии с автопилотами на автомашинах. Хотя как по мне, одного того, что есть что-то на пути автомобиля должно его останавливать, но там видно срабатывал вариант, если что-то не идентифицировано, значит этого нет, и автомобиль даже не пытался затормозить. Или другой вариант, если стоять на обочине дороги с майкой, на которой будет изображен знак STOP, то автомобиль Tesla отреагирует на это как на реальный знак STOP. Примитивность принятия решений налицо, и это при вложенных в это миллиардах долларов.
Вернемся к практической реализации ИИ на основе узловой модели. Исполнительный механизм создаем так же на основе узлов. Хоть он по сути и будет являться алгоритмом, но работать по другому принципу.
Узловой алгоритм (УА) – это вариант создания программ, в которые легко вносить изменения и которые потом легко будут сочетаться с ИБЗ, это и будет исполнительный механизм ИИ.
Основой УА является «исполнительный узел». Исполнительный узел – выполняет роль отдельной команды.
Упрощенно, работу исполнительных узлов данной модели, можно представить как процессор, работающий по следующей схеме.
1. Подготовить входные параметры узла
2. Выполнить действие текущего узла
3. Записать выходные параметры узла
4. Получить код результата
5. По коду результата определить следующий текущий узел
6. Перейти к выполнению 1 пункта
Разберем каждый из этих пунктов подробнее.
Каждый исполняемый узел содержит в своей структуре указание на действие, которое необходимо выполнить, если данный узел стал текущим. Под действием узла может пониматься и небольшая функция, выполняющая элементарное вычисление, например сложение данных, а так же действием узла может являться дочерний анализ, который в своей работе использует несколько узлов и даже несколько уровней дочерних анализов.
Каждый исполняемый узел может содержать адрес, откуда нужно получить код результата выполнения действия. Если этот адрес не указан, то используется адрес по умолчанию, где находится код результата.
Так же каждый исполняемый узел имеет таблицу, в которой находится информация о том, к какому узлу перейти при разных кодах результата выполнения действия узла. Если для данного кода результата нет номера узла, куда необходимо перейти, то происходит переход к первому в таблице, как переход по умолчанию.
Если вообще нет в таблице переходов ни одного кода результата, то происходит переход к текущему узлу на более высоком уровне вложенности, т.е. своеобразный возврат из подпрограммы.
Данный вариант работы УА реализован в Системе диалогового программирования (SDP). Это небольшая программа размером всего 200 кБайт, которая берет на себя все взаимодействие с окнами, меню, файлами и позволяет программировать без всяких языков программирования или других навыков в программировании.
Она как нельзя лучше подходит для создания базового ядра ИИ. Ссылку для скачивания SDP можно получить на странице Facebook посвященной данной программе «Система диалогового программирования SDP»
Сразу оговорюсь, это будет вариант для создания ИИ с нуля. Это только готовый инструмент для создания ИИ, а не рабочий ИИ. В ней кроме создания офисных приложений так же реализован механизм работы узлового алгоритма и его взаимодействие с системой (окна, меню, файлы, древовидные базы данных).
Насчет организации и функционирования самих информационных баз знаний (ИБЗ), и способов работы с ней, так это все зависит от вашего воображения. Так же как существует множество нейронных сетей, так и тут возможно множество вариантов, как построите, так и будете использовать. Только нужно учитывать, что алгоритм накопления знаний должен сочетаться с алгоритмом их использования. Т.е. порядок структуризации данных в ИБЗ должен быть одинаковым, как при из записи, так и при их использовании.
Автором узловой концепции ИИ и SDP является Бобров Александр и желающие при желании могут попробовать создать свой ИИ. Так же приглашаются к сотрудничеству заинтересовавшиеся инвесторы. Пока это только концепция, и прототип исполнительного механизма и для получения рабочего варианта необходима работа команды единомышленников.
С автором можно связаться по адресу: bobroval555@gmail.com
В ближайших планах попробовать создать вариант ИИ для понимания смысла текста. Именно понимания смысла, и в последствии на основе понимания текста организация процесса обучения.
Если кто может помочь с переводом на английский язык, буду благодарен.
Все новости и обновления об SDP и созданного на ее основе ИИ узловой модели смотри на страницах Facebook
Страница посвященная SDP
Система диалогового программирования SDP
facebook.com/profile.php?id=100057636692005
Страница посвященная ИИ узловой модели
Искусственный интеллект
facebook.com/profile.php?id=100064330016247
Приглашаются заинтересовавшиеся партнеры и инвесторы, желающие превратить данную программу в коммерческий продукт.
Бобров Александр