Определение универсального разума (AGI)
По «объединённому и расширенному определению» от Ben Goertzel, Pei Wang, Shane Legg, Marcus Hutter — способность достигать сложных целей в различных сложных средах, в условиях ограниченных ресурсов, минимизируя риски, в том числе, обучаясь поведению в новых средах как с учителем, так и без него.
https://golos.id/ru--tekhnologii/@aigents/opredeleniya-ii?invite=aigents
Колонин Антон
Определение требований к AGI и схема деления на компоненты
1. Иметь возможность самостоятельного обучения, начиная с пустой Базы Данных.
2. Иметь возможность получать задания в виде многомерных Образов Требуемых Результатов (ОТР).
3. Иметь возможность получать входные данные из окружающей среды и использовать их для составления собственных метапрограмм, в дальнейшем, приводящих к достижению Требуемого Результата (ТР).
4. Иметь возможность восстанавливать работоспособность, в случае повреждения отдельных компонентов и продолжать выполнять задание.
5. Иметь возможность добавления новых компонентов в систему и использовать их для достижения Требуемых Результатов.
6. Иметь возможность приспосабливаться к различным изменениям в окружающей среде, в том числе, использовать незнакомые ранее орудия труда.
7. Иметь возможность управлять ранее незнакомыми конструкциями роботов.
8. Иметь возможность к взаимосодействию отдельных роботов в достижении общего Требуемого Результата и компонентов одного робота.
9. Иметь возможность копирования содержимого Базы Данных с робота одной конструкции в робота такой же или другой конструкции, т.е. формат метапрограмм должен быть унифицированным.
10. Реализация ПО должна работать в реальном времени на стандартных современных процессорах, без использования специализированных ускорителей.
Определение требований к Базовому Компоненту Разума (БКР)
1. взаимосодействие параллельных компонентов для достижения общего требуемого результата
2. выбор требуемого результата и поиск способа его достижения
3. саморегуляция
4. подражание
Гипотеза: Без реализации этих 4-х свойств, создать универсальный разум не получится.
Каждый Базовый Компонент Разума (БКР) должен обладать всеми 4-мя свойствами.
Далее, попробуем выделить необходимые и достаточные для конструирования БКР процессы из биохимии живых организмов.
Объединение протоклеток в последовательности реакций
Если несколько протоклеток объединились по типу X+Y->Z в замкнутом пространстве, то через какое-то время молекул Z станет много, а молекулы X и Y закончатся, тогда клетки погибнут.
Если пространство открытое и обеспечивает стабильное поступление молекул X и Y, то молекул Z станет много и рядом могут оказаться другие протоклетки, которым для нормального течения реакций нужны молекулы Z.
В этом случае, начинается усложнение многоклеточного организма - протоклетки выстраиваются друг за другом для обеспечения непрерывного течения химических реакций.
Если не найдутся подходящие протоклетки для удлинения/усложнения цепочки реакций, то усложнения не произойдёт - организм остановится в развитии.
Описание усложнения химических реакций, как последовательности результатов
Внутриклеточные химические реакции, находясь в защищённой среде, имеют возможность усложняться, т.е. увеличивать длину молекул. Если получается нестабильная молекула, то она быстро разрушается, иначе живёт долго. Химическая реакция не ограничивается размером клетки, т.к. клетки выстраиваются в цепочки и становятся зависимыми друг от друга - результаты предыдущей клетки становятся пищей для текущей клетки и т.д..
Дерево Результатов (ДР)
1. ДР — это дерево, каждый узел которого состоит из Результата (название результата и параметры результата).
2. Каждый Результат может состоять из одного и более дочерних Результатов.
3. Нельзя получить Родительский Результат, без достижения всех дочерних результатов.
4. Если название одного Результата совпадает с другим Результатом, то это считается одним и тем же результатом, т. е. один узел ДР может иметь более одного родительского узла.
Деревом Результатов удобно описывать внутриклеточные и межклеточные химические реакции.
Нейрон тоже клетка
Нейрон аналогично ожидает ОТР, в виде набора молекул “медиаторов”. Если комбинация молекул удовлетворяет ожиданиям, то нейрон генерирует сигнал АРД, который передаётся при помощи механизма “потенциала действия” на большое расстояние. Алгоритмически нейрон от протоклетки ничем не отличается, кроме как своей сложностью.
Как возникает ОТР?
1. Конструкция и набор химических реакций передаётся по наследству, посредством ДНК.
2. Требуемые “входные данные” для химических реакций - это и есть ОТР.
3. В эмбрионе задаётся разметка из базовых клеток, в процессе роста организма, новые клетки самостоятельно выстраиваются в зависимые цепочки, в соответствии с ходом химических реакций от одних ОТР к другим:
ОТР1 -> новые клетки -> ОТР2 -> новые клетки -> ОТР3 и т.п.
Таким образом, для кодирования в ДНК достаточно знать только разметку организма в виде ОТР.
Общий алгоритм протоклетки
● Протоклетка ожидает Образ Требуемого Результата (ОТР), т.е. ждёт именно те “молекулы” на входе, которые требуются для нормального течения “химической реакции” внутри протоклетки.
● Предполагается, что если молекулы ОТР получены и условия течения химической реакции соответствуют требуемым, то течение химической реакции будет нормальным и она приведёт к получению Требуемого Результата (ТР).
● Фактическое наличие ТР является сигналом Акцептора Результатов Действия (АРД) о достижении результата.
● Отсутствие сигнала АРД вынуждает протоклетку совершать какие-либо действия, с целью поиска в окружающей среде требуемых молекул. Действием может быть синтез каких-либо сигнальных молекул или для сложных клеток - использование протомышц (изменение формы мембраны, реснички, жгутики и т.п.).
Частный алгоритм протоклетки в коде на C++
1. Загружаем параметр - N-мерный Требуемый Результат (ТР)
2. Сравниваем N-мерный сигнал Датчика с ТР, с заданной точностью.
3. Если Требуемый Результат (ТР) получен, то генерируем сигнал Акцептора Результата Действия (АРД).
4. Иначе, выполняем Действие.
5. Ожидаем сигнал с Датчика
6. Сохраняем сигнал с Датчика и крайнее Действие в таблицу преобразования Образов Требуемого Результата (ОТР) в Действия.
Этот алгоритм масштабируется на алгоритм работы клетки и на алгоритм работы нейрона, а также выше по иерархии усложнения организмов.
Пример реализации в коде на C++: https://github.com/LiveBaster/LiveBaster
Атом разума
Отдельные протоклетки и их группы постепенно усложнялись тем самым удлиняя цепь химических реакций. Эта схема работает, при условии наличия в окружающей среде достаточного количества требуемых молекул. Однако, как только требуемых молекул перестаёт хватать всем, то начинается конкуренция за них:
1. протоклеткам надо искать требуемые молекулы:
a. перемещаться
b. выбирать направление перемещения, чтобы найти молекулы раньше, чем химическая реакция прекратится
2. группам протоклеток надо договариваться с соседями, чтобы группа в целом перемещалась за требуемыми молекулами
Атом разума
Допустим есть группа из двух протоклеток К1 и К2.
Группе требуется “протомышцей” переместить “жгутик” из позиции П1 в позицию П2, тогда получится переместиться в сторону еды. К1 чувствует еду, а у К2 есть жгутик. Как им попасть в зону еды?
Атом разума. Вариант 1.
Современное mainstream решение - задача решается при помощи Искусственной Нейронной Сети (ИНС):
1. Пусть К1 и К2 - это Искусственные Нейроны (ИН)
2. К1, “увидев” еду, посылает сигнал К2
3. К2 двигает протомышцей.
Неизвестные параметры:
1. Какой сигнал должна послать К1 в К2?
2. Как К2 поймёт, что это тот самый сигнал, при получении, которого надо двигать протомышцей?
3. На какой угол надо двинуть протомышцей, чтобы уплыть вперёд, а не назад или вбок?
Неизвестные параметры получить просто - нужен dataset, который надо предварительно получить много раз смоделировав успешное достижение еды (сигнал подкрепления).
Где его взять этой группе протоклеток? Ответ очевиден - нигде.
Атом разума. Вариант 2.
1. К1 “увидев” еду, посылает сигнал С1 К2.
2. К2 получив сигнал С1 перемещает протомышцу в позицию П1.
3. Если группа приблизилась к еде, то обе клетки получают требуемые им молекулы (ОТР).
4. Иначе, К1 посылает другой сигнал С2.
5. К2 получив сигнал С2 перемещает протомышцу в позицию П2.
6. Каждая протоклетка в отдельности запоминает соответствие ОТРN->СигналN, поэтому в следующий раз К1 пытается повторить последовательность событий, которые позволили приблизиться к еде, а К2 пытается выполнить все требования К1 также, как выполняла ранее.
Таким образом, Общий Алгоритм Протоклетки позволяет взаимосодействовать отдельным протоклеткам в составе группы, в достижении общей цели.
В отличие от варианта 1, никакой dataset не требуется - протоклетки самодостаточны и имеют возможность образовывать многоклеточные организмы.
Конструирование сложных систем из БКР
Итого, Базовый Компонент Разума (БКР) содержит набор свойств, которые позволяют строить из большого набора параллельных БКР системы с общей для всех компонентов целью (ОТР).
Минимальный конструктивный элемент состоит из 2-х БКР, один выполняет роль Датчика, второй - Мышцы.
N-датчиков на одной, связывающей их платформе, позволяет определить общий N-мерный ОТР.
Например, если на треугольной платформе расположено 3 датчика, то при изменении положения платформы, датчики будут получать зависимые сигналы, соответственно, управление мышцами также будет зависимым друг от друга, хотя каждый БКР работает параллельно.
Стандартная схема конструирования нового робота
1. Разработать тело, достаточное для решения задач роботом.
2. Определить список базовых потребностей - это будет список встроенных ОТР.
3. Определить набор датчиков, достаточный для решения задач роботом.
4. Сгруппировать датчики на несколько общих платформ: “глаза”, “уши”, “местоположение в пространстве” и т.п.
5. Собрать систему управления роботом из пар БКР “датчик-мышца” или более длинных цепей “датчик-БКР-...-БКР-мышца”.
6. В датчики, выполняющие функцию ОТР, записать Образы Требуемых Результатов. Например, для робота-пылесоса таким ОТР может быть фотография зарядного устройства глазами робота в момент зарядки (импринтинг).
7. Для ускорения адаптации робота к среде лучше использовать виртуальный окружающий мир.
Робот без встроенных ОТР
1. Разработать тело, достаточное для решения задач роботом.
2. Определить набор датчиков, достаточный для решения задач роботом.
3. Сгруппировать датчики на несколько общих платформ: “глаза”, “уши”, “местоположение в пространстве” и т.п.
4. Собрать систему управления роботом из пар БКР “датчик-мышца” или более длинных цепей “датчик-БКР-...-БКР-мышца”.
5. Выпустить робота в окружающий мир.
Если у робота термоядерный источник питания, достаточно памяти в БКР и высокая надёжность компонентов, то он потратит значительное, но не бесконечное, время на изучение и адаптацию к среде, но в итоге приспособится к ней - все необходимые ему для жизни ОТР сформируются самостоятельно.
Пример сборки 3D-модели существа в Unity3D С#
На этой картинке видно, что самодостаточный “Страус” просто собран из стандартных 3D-примитивов Unity3D. Сложное поведение формируется
из взаимосодействия составляющих компонентов, в достижении общих целей.
Видео взаимосодействия компонентов: https://dzen.ru/video/watch/601adf1f27294500e479c5f5
Конструирование многомодальных систем из БКР
Развитие до Самодостаточного Разума (СР) > AGI
Особенность алгоритма БКР в том, что он работает в собственной системе координат - это позволяет обеспечить независимость и стабильность поведения от окружающей среды.
Какие хаотические сигналы не приходили бы на датчики, мышцы будут выполнять синтезированные БКР команды, строго выполняя поставленную задачу, адаптируясь к любым изменениям в окружающей среде.
https://dzen.ru/video/watch/604fcb2a0a7d51654ab6bf63