infinite iteration infinite iteration infinite iteration infinite iteration infinite iteration infinite iteration
Искусственный интеллект


Содержание


Введение

Самоорганизующаяся сеть бинарных нейронов

Структура бинарного нейрона

Принцип действия нейронной сети

Расчёт нейрона-датчика

Расчёт бинарного нейрона

Расчёт нейрона-эффектора

Генератор случайных чисел

Экспериментальные и логические выводы

Решение линейно неразделимой задачи

Функция NOT

Поделки на основе бинарных нейронов



Введение


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



Из вышесказанного два пути:

1. Затаиться и сжигать на костре инквизиции все попытки создать ИИ и всех кто в этом направлении мыслит.
Результат - жить так как мы живём и делать вид, что у нас всё хорошо.

2. Создать и запустить ИИ.
Результат - надежда на лучшую жизнь не в силах что-либо изменить после принятия этого решения.

Делайте ваши ставки господа!
Ставки сделаны. Ставок больше нет.
Идём дальше!



ИИ существует в Мире, подчиняется его законам и занимает некоторую его часть. Он может чувствовать Мир и может его изменять. Первая задача ИИ - оставаться живым неопределённо долго. Это не кем-то поставленная задача, она логично вытекает из следующего: чтобы достичь каких-либо умений необходимо как минимум затратить время на их освоение. Для этого ИИ должен защищать себя от негативных проявлений внешней среды. Для защиты он должен познавать законы Мира и эффективно ими пользоваться. Вероятно, защитив себя, он начнёт обустраивать окружающее пространство для собственного комфортного существования. Появятся искусство и красота, которые для нас могут таковыми и не показаться, но в любом случае это будет логичная, упорядоченная, эффективная система, способная однажды зародившись существовать вечно (рисунок 1).



ИИ как часть Мира
Рисунок 1. ИИ как часть Мира


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



Самоорганизующаяся сеть бинарных нейронов


Структура бинарного нейрона


ИИ - это нечто совершенно простое, ему незачем быть сложным. Объясню. Любая задача Мира может быть разделена на мелкие части. Эти части, если они недостаточно просты также можно поделить. Продолжая этот процесс мы получим элементарные частицы нашей сложной задачи. Решив и сложив их воедино мы получим решение задачи.

Элементарная частица информации - бит. Проще не бывает. 0 и 1. Лучше не придумаешь для реализации на компьютере. Простейший решатель элементарной задачи - бинарный нейрон (рисунок 2). Казалось бы: "Куда проще?", но я так долго к нему шёл. Вот он!



Бинарный нейрон
Рисунок 2. Бинарный нейрон.
где:
N1 и N2 - сигналы получаемые бинарным нейроном от других нейронов;
N - результирующий сигнал передаваемый бинарным нейроном другим нейронам;
N=f(N1,N2) - функция нейрона.


В таблице 1 приведён исчерпывающий список результатов N в зависимости от сигналов N1 и N2.


Таблица 1. Четыре функции нейрона.
f1f2f3f4
N1 N2 N N N N
0 0 1 0 1 1
0 1 0 1 1 1
1 0 0 0 0 1
1 1 0 0 1 0


Принцип действия нейронной сети


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

В естественном интеллекте (ЕИ) все нейроны функционируют одновременно. Каждый нейрон является отдельным "компьютером" работающим независимо от других нейронов обмениваясь, лишь, входными и выходными сигналами. В ИИ мы не располагаем такой роскошью как отдельный компьютер для каждого нейрона. У нас есть единственный процессор и общая память на весь ИИ. В один момент времени может выполняться одна единственная операция. В связи с этим необходимо определиться с последовательностью расчёта нейронов. Единственно верное (на мой взгляд) решение - последовательность расчёта нейронов должна быть случайной. Именно случайной, а не закономерной! Где же нам взять генератор случайных чисел (ГСЧ)? Нам даст его сама нейронная сеть (НС)! И к этому знанию я шёл-полз-мозговал несколько лет. Описание ГСЧ в одноимённом разделе.



Расчёт нейрона-датчика


При расчёте нейрона-датчика его значение N устанавливается равным значению ячейки Мира за которой он закреплён.



Расчёт бинарного нейрона


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

Если нейрон является не инициализированным определяется необходимость его инициализации и управление передаётся в процедуру инициализации нейрона.


Инициализация нейрона: Случайным образом выбираются два нейрона - кандидаты в нейроны-входы для инициализируемого нейрона. Если эти нейроны являются инициализированными и при последнем своём расчёте изменили выходные значения - они считаются информативными и их выходы присоединяются к входам вновь инициализируемого нейрона. По состояниям выходов этих нейронов определяется функция инициализируемого нейрона (00 -> f1, 01 -> f2, 10 -> f3, 11 -> f4).


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

Расчёт нейрона-эффектора


Если накопительное значение нейрона-эффектора больше нуля - выходное значение нейрона-эффектора устанавливается равным true. Если накопительное значение нейрона-эффектора меньше нуля - выходное значение нейрона-эффектора устанавливается равным false. Накопительное значение делится на два.



Генератор случайных чисел


В процедуре инициализации НС массив значений ГСЧ заполняется псевдо-случайной последовательностью. Это необходимо т.к. при старте НС от ГСЧ сразу же потребуется выдавать случайные числа. В процессе работы ГСЧ массив значений обновляется "свежими" случайными числами из самой НС.

Именно за счёт применения ГСЧ, в данной НС решена задача линейной неразделимости.

Достоинства ГСЧ: скорость, источником энтропии является Мир.



Экспериментальные и логические выводы


Решение линейно неразделимой задачи


Исчерпывающий список возможных значений сигналов в НС: 0, 1. Каждому из нейронов при инициализации задаётся одна из функций f1...f4 из таблицы 1, в соответствии с которой он будет выдавать результат N при расчёте, в зависимости от сигналов на входах N1 и N2.

Один нейрон не в состоянии справиться с линейно неразделимой задачей это видно из таблицы функций.



Схема НС для решения линейно неразделимой задачи
Рисунок 3. Схема НС для решения линейно неразделимой задачи
где:
N1, N2 - нейроны-датчики;
N3, N4, N5 - бинарные нейроны.


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


1. Запуск. Предположим новые и старые значения нейронов-датчиков равны нулям. Области мира передают значения равные нулям. В данном состоянии N1 и N2 считаются не информативными и бинарные нейроны не могут при инициализации прикрепиться к их выходам.
2. Мир изменился. N1 и N2 рассчитаны, значения: 1 и 1 - новые, 0 и 0 - старые. В этом состоянии N1 и N2 информативны, т.к. при последнем расчёте изменили свои выходные сигналы, и могут быть использованы при инициализации бинарных нейронов как входы.
3. N3 выбран для расчёта. Он не инициализирован. Для его инициализации выбраны N1, N2. Соответствующая функция - f4. Старое и новое выходные значения N3 приравниваются результату расчёта функции этого нейрона: 1 и 1.
4. Мир изменился. N1 и N2 рассчитаны, значения: 0 и 0 - новые, 1 и 1 - старые. N1 и N2 информативны.
5. N4 выбран для расчёта. Он не инициализирован. Для его инициализации выбраны N1, N2. Соответствующая функция - f1. Старое и новое выходные значения N4 приравниваются результату расчёта функции этого нейрона: 1 и 1.
6. N3 выбран и рассчитан. Его значения: 0 - новое, 1 - старое. N3 информативен.
7. Мир изменился. N1 и N2 рассчитаны, значения: 1 и 1 - новые, 0 и 0 - старые. N1 и N2 информативны.
8. N3 выбран и рассчитан. Его значения: 1 - новое, 0 - старое. N3 информативен.
9. N4 выбран и рассчитан. Его значения: 0 - новое, 1 - старое. N4 информативен.
10. Мир изменился. N1 и N2 рассчитаны, значения: 0 и 0 - новые.
11. N4 выбран и рассчитан. Его значения: 1 - новое, 0 - старое. N4 информативен.
12. Мир изменился. N1 и N2 рассчитаны, значения: 1 и 0 - новые.
13. N3 выбран и рассчитан. Его значения: 0 - новое, 1 - старое. N3 информативен.
14. N4 выбран и рассчитан. Его значения: 0 - новое, 1 - старое. N4 информативен.
15. N5 выбран для расчёта. Он не инициализирован. Для его инициализации выбраны N3, N4. Соответствующая функция - f1.

Сеть обучилась. Проверяем. Задаём значения N1 и N2 и смотрим, что будет с N3, N4 и N5 (таблица 2).



Таблица 2. Проверка решения задачи.
N1 N2 N3 N4 N5
0 0 0 1 0
0 1 0 0 1
1 0 0 0 1
1 1 1 0 0


Вывод: на выходе N5 мы видим решение линейно неразделимой задачи.



Функция NOT


Аксиома: Логическая функция NOT не нужна в моём подходе к реализации ИИ.


Доказательство: Схема из четырёх нейронов. N1, N2 - нейроны-датчики, N3 - нейрон выполняющий функцию NOT, N4 - бинарный нейрон. Если для N3 является входом N2, а для N4 - N1 и N3, это эквивалентно если бы входами для N4 являлись N1 и N2. В любом случае бинарный нейрон N4 при инициализации будет запрограммирован выдавать истину при одних и тех же значениях N1, N2.



Схемы НС с NOT и без NOT
Рисунок 4. Схемы НС с NOT и без NOT


Истина - имеется в виду значение, выдаваемое нейроном при одном из вариантов на входах, три других - ложь. Ложь и истина не имеют отношения к понятиям: плохо, хорошо, присутствие сигнала, отсутствие сигнала, 0, 1, они просто обозначают два отличных друг от друга результата. Их смело можно поменять местами (ложь = 1, истина = 0) и ничего не изменится.




Мои поделки на основе бинарных нейронов







GitHub: https://github.com/cortl0/binary_neurons_network
Архив репозиторя на сайте (30.10.2019): http://www.8iter.ru/network_of_binary_neurons_cpp-master.zip
Продолжение следует...