[Из песочницы] Аппаратно-программный комплекс имитации мышления

Разрабатываю систему (аппаратно-программный комплекс) имитации мышления (сокращённо СИМ). Как задачу минимум решил сконцентрироваться на собеседнике для одиноких людей, преимущественно престарелых и инвалидов. В перспективе планирую использовать наработки проекта для создания контролируемого искусственного разума (КИР).

Что у меня есть для реализации идеи?

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

2. Продумана архитектура СИМ, основанная на обычном ПК и плате ускорителе логики. На первоначальном этапе ПК будет использоваться для организации ассоциативной памяти, при помощи быстрой ключ-значения СУБД и обеспечения ввода вывода. Ускоритель логики будет изготавливаться на основе микросхем программируемой логики (FPGA), в которых будут размещаться массивы из двухбитных микроядер и сумматоров для коэффициентов.

3. Разработана система говорящих имён для образов (объектов и действий), основанная на множестве признаков, присущих тому или иному образу. Фактически это новый язык программирования — язык образов (ЯО). Всё в мире, это объекты и действия, имеющие свои уникальные наборы признаков и входящие в состав коллекций (моделей окружения).

Квадрологика и ускоритель ИИ


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

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

Так вот здесь речь ведётся о принципиально новом устройстве — ускорителе ИИ, для организации системы (аппаратно-программного комплекса) имитирующего мышление (СИМ). Если математический сопроцессор позволяет работать с различными числами, в привычном для нас виде, в этом случае предлагается разработать логический сопроцессор позволяющий выполнять алгоритмы квадрологики. В дополнение к обычным «истине и лжи», которые и так поддерживаются на аппаратном уровне всеми известными нам микропроцессорами. Эта логика основывается на четырёх состояниях, чего вполне достаточно, для быстрого решения большинства задач и менее затратно в отличие от нечёткой логики, когда используется некий уровень приближения. По сути квадрологика немного расширяет бинарную, позволяет использовать её там, где предполагалось использовать нечёткую логику, а совместно с дополнительными коэффициентами приближения того или иного значения, полностью ей аналогична и даже превосходит её в плане работы с неизвестным. Ускоритель логики должен содержать множество квадро АЛУ и обычные двоичные сумматоры рассчитанные на оперирование числами коэффициентов. При чём блоки квадро АЛУ смогут работать по разному, в зависимости от некоего состояния системы, аналогично эмоциям человека.

Единственно разумный путь, использовать обычные двоичные КМОП инверторы и ключи (уже имеющиеся в FPGA), но организуя их для реализации правил квадрологики. Естественно, что от обычных процессоров, ОЗУ и устройств долговременной памяти, а также от работы с числами отказываться, ни кто не собирается. Данный «ускоритель» будет дополнением, к существующей архитектуре, используемой в универсальных компьютерах.

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

  • положительно (больше) — PO — 10,
  • среднее (равно) — AV — 11,
  • отрицательно (меньше) — NE — 01,
  • неизвестно (безразлично) — UN — 00.


Вдобавок, к этим четырём значениям, возможно использование коэффициентов используемых в расширенных алгоритмах, по аналогии с нечётко логикой и реализуемых «обычными» целыми числами (в разрядности кратной двойке):

  • коэффициент достоверности знания — CRK,
  • степень приближенности значения — DAV,
  • уровень осторожности — LOC.


Соответственно первый — определяет насколько значение, не являющееся UN, может быть достоверным, к примеру, СИМ сам наблюдал или даже мог измерить какое-то значение и ему ни свойственно не верить себе, или наоборот информация поступила из ненадёжного источника.

Второй коэффициент делает условия более мягкими, может быть как положительным, так и отрицательным (в дополнительном коде). К примеру, значение AV, но тяготеет к NE, или значение более чем PO.

Отрицание изменяет PO на NE и наоборот, значение AV и UN при отрицании не меняются, практически же первый и второй биты просто меняются местами. Остальные логические операции и таблицы истинности к ним выведены в отдельный файл, они фактически дополняют булевые операции новыми состояниями и разным выводом в зависимости от осторожности СИМа тогда, когда один или несколько операндов неизвестны.

Помимо ускорения работы, за счёт того, что исключаются ветвления (необходимые при бинарных да/нет) при обработке 4-ёх значных чисел, повторю ещё раз, что очень важен механизм работы с неизвестным (безразличным) в каком-то из параметров, характеризующем сущность. Так как возможное состояние осторожности, при принятии решения СИМом, одно главных из особенностей, влияющих на активность живых существ. Борьба между страхом и любопытством основной движитель приспособляемости.

Квадрологика хорошо оптимизирует работу с деревьями, в узлах, вместо обычных да/нет, использовать положительно/средне/отрицательно (больше/равно/меньше) или неизвестно (безразлично). Соответственно при ветвлениях операторы if, case, for, while (do) должны уметь работать в таком режиме. К примеру, сравниваем a и b:

(if с a?=b (f1…) (f2…) (f3…) (f4…))

В результате используем квадрологику. Если a больше b, то выполняется первая функция, при равенстве вторая, если меньше то третья, а если один из операндов неизвестен, то выполняется четвертое выражение, при значении осторожности с равном PO. В случае осторожности с равном NE или AV, может быть выполнено одно из первых трёх выражений.

На аппаратном уровне будет возможна генерация случайных чисел. Также вычислительная система должна включать такие значения как плюс и минус бесконечность, как бесконечно большое, так и бесконечно малое. Не должно быть исключений и критических ошибок, для каждого возможного условия должно быть решение, пусть оно будет даже UN (неизвестно), что в свою очередь для простых алгоритмов приведёт к генерации случайного числа, при принятии решения, а в исключительном случае (когда СИМ будет особо осторожен) задействует расширенные алгоритмы для уточнения значений.

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

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

Для слов алгоритмов необходимо будет предусмотреть отдельные регистры, соединённые напрямую с ключами коммутации функциональных ячеек с регистрами ввода/вывода и между собой. Таким образом любой простой алгоритм, при наличии всех необходимых входных данных, будет выполняться параллельно, более того при состоянии части данных в UN (неизвестно), в зависимости от вида алгоритма функциональные ячейки смогут подставлять случайные значения.

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

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

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

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

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

СИМ (или в перспективе КИР) будет строится на основе образного представления мира. Что такое ЯО (язык образов)?

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

Средним и основным уровнем является множество образов простых объектов и действий, которые уже сами по себе существуют, если просто собрать различные комбинации признаков, достаточно только найти аналогию в реальном мире и описать эти образы выражениями ЕЯ (естественного языка). Сложные объекты и действия состоят соответственно из набора простых. Нематериальные объекты — это продукт анализа различных групп признаков, объектов и действий.

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

Образы это объекты (материальные и нематериальные) и действия описанные множеством признаков. Образы могут быть простыми и составными, обобщающими и конкретными. Признаки образов делятся на постоянные, обычно определяющие основные особенности образа, принадлежность его к различным группам и на переменные, обычно описывающие текущее состояние данного образа в определённой коллекции образов, в определённое время. СИМ (или КИР) является частью одной из коллекций и может воздействовать также на объекты своей коллекции прямо или опосредовано, а возможно и объекты других коллекций.

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

Коллекции строятся на основе заранее запрограммированных и сформированных в процессе обучения шаблонов. Информация о наличии и взаимодействии объектов в реальном мире поступает посредством имеющихся в распоряжении СИМ (или КИР) систем машинного зрения и слуха, других средств ориентации и распознавания. Так же информация может поступать из компьютерной сети или от людей в письменной (устной) форме. Так же от людей может поступать информация о вымышленных коллекциях и сам СИМ (КИР) может создавать коллекции для моделирования будущего взаимодействия разных объектов или анализа подобного взаимодействия в прошлом.

Таблица логических операций.

Список признаков.

© Geektimes