Логіка свідомості. Частина 3. Голографічна пам'ять на клітинному автоматі

Раніше ми описали клітинний автомат, в якому можуть виникати хвилі, що мають хитрий внутрішній візерунок. Ми показали, що такі хвилі здатні поширювати інформацію по поверхні автомата. Виявилося, що будь-яке місце автомата може бути, як приймачем, так і джерелом хвиль. Щоб прийняти хвилю в якому-небудь місці, досить подивитися, який візерунок виходить в ньому в момент проходження хвилі. Якщо цей візерунок запам'ятати і згодом відтворити в тому ж місці, то від цього візерунка пошириться хвиля, повторює на своєму шляху візерунок вихідної хвилі.

Все це сильно нагадує радіозв'язок. В будь-якому місці землі можна прийняти повідомлення і запам'ятати. Потім з будь-якого місця, його можна знову запустити в ефір. При цьому трансляція на увазі не конкретного одержувача, а доступність сигналу для всіх.

Автомат, який ми описуємо володіє пам'яттю. Точніше, пам'яттю володіють всі його елементи. Пам'ять елемента специфічна. Єдине, що бачить елемент автомата – це візерунок, складений з активності своїх сусідів. Єдине, як елемент може відреагувати на той чи інший візерунок – це або самому стати активним, або, навпаки, вимкнутися. Пам'ять елемента – це набір запам'ятованих їм візерунків із зазначенням, як на них реагувати: включатися чи виключатися.

Інтерференція візерунків у клітинному автоматі
Наявність у елементів автомата власної пам'яті дозволяє використовувати сам клітинний автомат, як універсальне запам'ятовуючий пристрій, що реалізує асоціативний масив. Асоціативний масив – це сховище пар виду «ключ-значення». Щоб мати можливість маніпулювати з збереженими даними асоціативний масив повинен підтримувати операції: додавання пари, пошуку пари (по ключу або по даними) і видалення пари. Покажемо, як це можна реалізувати в нашому клітинному автоматі.

Для великих аналогій з корою мозку перейдемо від плоского клітинного автомата до об'ємного. Розташуємо елементи в вузлах регулярної просторової решітки. Замінимо плоске простір стеження на об'ємне, утворює циліндр. Будемо вважати, що товщина автомата істотно менше розмірів його поверхні. Виділимо для спостереження циліндричний об'єм, розміри якого порівнянні з областю стеження елементів автомата (малюнок нижче). Будемо називати обсяг такого розміру елементарними, маючи на увазі, що це мінімальний обсяг, що дозволяє гарантовано запустити хвилю, якщо усередині цього обсягу відтворити фрагмент візерунка цієї хвилі.


Просторовий клітинний автомат і виділений циліндричний фрагмент

Припустимо, що ми послідовно запустили в автоматі дві інформаційні хвилі. Нехай, перша хвиля несе значення, яке ми хочемо зберегти, а друга хвиля – унікальний ключ, який ми хочемо зробити ідентифікатором зберігається інформації. Кожна з хвиль поширить свій візерунок по всьому простору автомата, тобто в кожному його місці послідовно пройдуть два візерунка, утворені першою і другою хвилею, відповідно. В спостережуваному фрагменті перша хвиля залишить слід, наприклад такий, як показано на малюнку нижче.


Слід від інформаційної хвилі, що несе значення, яке необхідно запам'ятати

Дозволимо елементів пам'ятати своє недавнє стан. Тобто, після проходження хвилі активність елементів зникає, але факт того, що вони були активні зберігається елементами до загального сигналу скидання. Інакше кажучи, до загального скидання зберігається залишений хвилею слід.

Друга хвиля залишить свій слід в тому ж обсязі (малюнок нижче). Позначимо елементи кожної з хвиль своїм кольором, при цьому деякі елементи можуть отримати відразу два кольори.


Сліди від двох хвиль. Жовті – елементи, що кодують значення. Чорні – елементи, що кодують ключ

Тепер, виконаємо запам'ятовування. Для цього на всіх елементах жовтого кольору запам'ятаємо візерунок, утворений елементами чорного кольору. У свою чергу, на всіх чорних елементах запам'ятаємо візерунок, утворений жовтими елементами. Перше фіксує інформаційний візерунок з необхідним ключем. Друге, навпаки, фіксує візерунок ключа, при цьому «ключем» є сам інформаційний візерунок. В результаті такої своєрідної «інтерференції» в зазначеному обсязі збережеться пара «ключ-значення».

Процес зворотного відтворення дуже простий. Запустимо в автомат ключ. Тобто, запустимо ту ж саму чорну хвилю. В обсязі, за яким ми стежимо, активуються жовті елементи. Для них патерн чорних елементів буде сигналом, що зберігаються в їх пам'яті і викликає їх активність. В результаті, ми відновимо жовтий візерунок, який є значенням для відповідного ключа. Цей жовтий патерн запустить хвилю, яка поширить витягнуту з пам'яті інформацію по простору автомата. Власне, описане – це і є реалізація запису інформації і її пошуку по ключу.

Якщо всі ключі будуть унікальні, то відтворення інформації по ключу буде викликати єдину відповідну інформаційну хвилю, відповідну значенню пари для цього ключа. Якщо коди значень так само будуть унікальні, то буде можливий і зворотний пошук ключа за значенням.

Для збереження однієї інформаційного пар «ключ-значення» достатньо виконати запам'ятовування в одному елементарному обсязі. Якщо яким-небудь способом при запам'ятовуванні вказувати автомату місце, де ми хочемо зберігати спогад, то можна отримати просторово-розподілену систему зберігання. Однак ніщо не заважає виконати і «надлишкове» розподілене запам'ятовування. Тобто запам'ятати одну і ту саму інформацію не в одному місці, а по всьому просторі клітинного автомата. І те й інше — дуже важливі властивості, які знадобляться нам у майбутньому.

Кожний елементарний об'єм може зберігати безліч спогадів. Розміри його пам'яті пропорційний того, скільки візерунків може зберігати окремий елемент автомата. Якщо один запоминаемый візерунок становить, наприклад, два відсотки активності всіх елементів, то загальна кількість можливих спогадів для елементарного об'єму буде приблизно в 20-30 разів більше, ніж пам'ять одного елемента.

Своєрідна інтерференція двох інформаційних хвиль і розподілене запам'ятовування роблять описаний механізм вкрай схожим на оптичну голографію. Принципи голографії відкрив і описав Денеш Габор. Якщо мати джерело світла зі стабільною частотою, то розділивши його допомогою напівпрозорого дзеркала на два, ми отримаємо два когерентних світлових потоку. Один потік можна направити на об'єкт, а другий на фотографічну пластинку.


Створення голограми

В результаті, коли відбитий від об'єкта світло досягне фотографічної пластини, він створить з висвітлюють пластину потоком інтерференційну картину. Інтерференційна картина, отпечатавшись на фотопластинці, збереже інформацію не тільки про амплітудних, але і про фазових характеристик світлового поля, відбитого об'єктом. Тепер, якщо освітити раніше експонованих пластину, то відновиться вихідний світловий потік, і ми побачимо запам'ятований об'єкт у всій його тривимірному об'ємі.


Відтворення голограми

Голограма має кілька дивних властивостей. По-перше, світловий потік зберігає об'єм, тобто, розглядаючи фантомний об'єкт під різними кутами, можна побачити його з різних сторін. По-друге, кожна ділянка голограми містить інформацію про весь світловому полі. Так, якщо ми разрежем голограму навпіл, то спочатку ми побачимо тільки половину зображення. Але коли ми подивимося на голограму збоку, то за краєм залишилася голограми ми зможемо розглянути другу «обрізану» частина. Чим менше фрагмент голограми, тим нижче її роздільна здатність, але навіть через маленький ділянку можна, як через замкову щілину, розглянути всі зображення.

Відповідно, описана пам'ять по своїй суті, цілком може називатися голографічного, але з тим застереженням, що в її основі лежить не класична хвильова інтерференція, а дещо інша за своїм алгоритмом інтерференція патернів. Хоча, якщо копнути глибше, то в поданні цифровий фізики, що розглядає простір, як клітинний автомат, ці інтерференції можуть бути тотожними за своєю природою.

Опис стану автомата через бітовий масив
Будь елементарного об'єму автомата може бути зіставлений бітовий масив. У початковому стані всі його елементи дорівнюють нулю. Проходження хвилі звертає частина елементів в одиниці. У клітинному автоматі після проходження фронту хвилі елементи повертаються в неактивний стан. У сопоставленном бітовому масиві введемо дещо інші правила. Будемо залишати біти масиву в одиничному стані, накопичуючи активність після проходження чергової хвилі. Будемо здійснювати загальний скид стану масиву, коли будемо вважати це за необхідне.

Кожна хвиля кодує тільки одне поняття. Додавання слідів хвиль дозволяє скласти опис, що складаються з декількох понять одночасно. Скидання стану бітового масиву скидає опис. Послідовне проходження хвиль створює опис. Закінчений опис з'являється, коли поширюються всі необхідні хвилі.

Описана структура відповідає фільтру Блума. Припустимо, що у нас є безліч C, що складається з понять, якими ми оперуємо. Кожному елементу cі безлічі C зіставимо бінарний код bі розрядності m, що містить k одиниць. Виберемо позиції одиниць випадковим чином. Складемо безліч I з декількох понять множини C.

Фільтр Блума містить бітовий масив B m біт. У початковому стані він обнулений. Додавання елемента до фільтру Блума – це звернення в одиницю тих елементів фільтра, які відповідають одиницям бінарного коду доданого елемента. Відображення множини I на фільтр Блума еквівалентно логічному складання двійкових кодів елементів, складових I, і перенесення отриманого коду на бінарний масив фільтра.

Фільтр Блума дозволяє перевірити належність будь-якого елемента множини C, безлічі I. Для перевірки треба взяти бінарний код елемента і переконатися, що всім одиницям коду відповідають одиниці у фільтрі Блума. Якщо хоча б одна з позицій фільтра не відповідає, то елемент гарантовано не належить множині I. Якщо перевірка пройдена, то з високою ймовірністю, яка залежить від параметрів фільтра, елемент міститься в I. Приклад перевірки наведено на малюнку нижче.


Фільтр Блума. Елемент w не належить заданому безлічі {x, y, z}

Одне поняття у клітинному автоматі в елементарному об'ємі кодується паттерном, що складається з невеликого числа елементів по відношенню до загального числа елементів в цьому обсязі. Відповідно, про бінарному коді поняття можна говорити, як про довгому бінарному розрядженому коді.

Після формування бітового масиву, відповідного довгого опису, щільність одиниць зросте, що буде відповідати довгому бінарним середньо-розрядженому кодування.

Для нашого автомата будемо вважати, що загальна розрядність, рівна числу елементів в елементарному об'ємі, досить висока, загальне число використовуваних понять розумно обмежена і, що можливе число понять в одному описі не особливо велика. Тоді з'являється можливість взяти бітовий масив, отриманий після передачі опису, складається з декількох понять, і відновити самі вихідні поняття. Для цього треба приміряти до бітовому масиву, як до фільтру Блума, коди для всіх можливих понять і подивитися, які з них дадуть позитивний результат. У зроблених допущення можна домогтися, щоб при перевірці ймовірність хибнопозитивних спрацьовувань була низька.

Це значить, сумарні двійкові коди можна використовувати, як аналоги вихідного опису. Тобто, у кожному місці автомата отриманий після поширення складного опису сумарний бінарний код буде містити всю повноту вихідного опису.

Створення хеш складних описів у клітинному автоматі
Щоб зберегти в клітинному автоматі складне опис у всій його повноті достатньо провести процедуру описану раніше запам'ятовування. Створити ідентифікатор спогади і здійснити інтерференцію опису та ідентифікатора. При запам'ятовуванні елементів, кодирующим візерунок ідентифікатора спогади, доведеться запам'ятати картину опису, що містить досить багато одиниць. При комп'ютерному моделюванні клітинного автомата це не становить проблем, але, як буде показано пізніше, запам'ятовування при великій кількості сигналів важко для біологічної системи. Відповідно, постає питання: чи не можна зменшити кількість активних елементів, що складають опис (або ідентифікатор), звівши їх кількість до кількості розрядженого кодування?

В результаті ми приходимо до задачі хеширования. Хешування – це перетворення за певним алгоритмом вхідного масиву даних довільної довжини в вихідний бітову рядок фіксованої довжини. Такі перетворення називаються хеш-функціями або «функціями згортки», а їх результати називають хеш-кодом або «зведенням повідомлення».

Щоб привести наш клітинний автомат до умов завдання хешування введемо для елементарного об'єму новий бітовий хеш-масив відносно невеликої довжини.

Потрібне нам хеш-перетворення повинне зменшити розрядність довгого бінарного коду до розмірів хеш. Хороша хеш-функція повинна при цьому мінімізувати кількість можливих колізій. Тобто бажано, щоб ймовірність того, що два різних опису можу отримати один і той же хеш була мінімальною.

Ми не будемо зараз зупинятися на тому, яку хеш-функцію краще використовувати в нашому випадку. Це питання досить цікавий, але складний. Просто, наведемо, як приклад, один з найпростіших варіантів.

Можна розбити елементи вихідного бітового масиву на групи і обчислити яку-небудь однобітних логічну функцію від елементів групи (малюнок нижче). Після чого сформувати хеш-код з отриманих біт.


Приклад обчислення одного біта хеш для групи елементів

Введемо в клітинний автомат додаткові елементи, які будуть відповідати елементам хеш-масиву. Не будемо зачіпати регулярну сітку вихідних комірок. Створимо для нових елементів власну ґрати, що знаходиться в тому ж геометричному просторі. Дозволимо старим елементів автомата бачити картину активності оточуючих хеш елементів і дамо їм можливість запам'ятовувати її.

Крім того, модифікуємо вихідні елементи таким чином, щоб вони могли накопичувати інформацію про своєї активності за ті кілька хвиль, поки передається повідомлення.

Спробуємо запам'ятати складне опис, що складається з декількох понять. Для цього, послідовно розповсюдимо хвилі, відповідні поняттям з опису, по простору автомата. Назбираємо інформацію про активності. Тобто, сформуємо сумарну картину сліду хвиль у всьому обсязі автомата. Потім, обчислимо активність хеш-елементів.

На малюнку нижче показаний результат додавання декількох хвильових візерунків і результат їх хеш-перетворення. Зелені елементи утворюють патерн хеш-коду. Ці елементи існують окремо від вихідних основних елементів, але перебувають з ними у тому ж просторі. Тобто доступні для спостереження.


Додавання декількох патернів


Результат хеш-перетворення

Тепер розповсюдимо ключ і збережемо спогад. Тільки зараз елементи, які беруть участь у візерунку ключа, будуть запам'ятовувати не інформаційну картину активності основних елементів, а візерунок отриманого хеш.

Після завершеия запису ми можемо скинути активність автомата і заново подати початкове опис. Картина активності основних елементів повториться, повториться і обчислений від неї хеш. Поява знайомого хеш-коду викличе появу візерунка, відповідного ключа раніше зробленого спогади.

Якщо опису відповідає єдине подія, то автомат може витягти і поширити ідентифікатор події. Якщо ж у пам'яті є кілька спогадів з однаковими описами, то виявиться сумарна картина, складена з ідентифікаторів цих описів. Така ситуація вимагає більш складної обробки.

Підведемо короткий підсумок:

  • Дві інформаційних хвилі можуть «интерферировать» між собою. Одна хвиля зазначає елементи, які повинні щось запам'ятати, а інша хвиля малює візерунок того, що саме вони повинні запам'ятати;
  • Занадто щільний візерунок при запам'ятовуванні можна замінити його сумі;
  • Запам'ятовувати можна локально в невеликій області автомата. Тоді можна зберігати в кожному місці щось своє;
  • Запам'ятовувати можна глобально. Тоді в кожному місці автомата буде зберігатися своя копія однієї і тієї ж інформації.
Я не випадково загострюю увагу на можливості локального і глобального запоминия. Далі я покажу, що саме ці два механізму є ключовими для розуміння роботи мозку.

Олексій Редозубов

Логіка свідомості. Вступ
Логіка свідомості. Частина 1. Хвилі в клітинному автоматі
Логіка свідомості. Частина 2. Дендритні хвилі
Логіка свідомості. Частина 3. Голографічна пам'ять на клітинному автоматі
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.