Как стать автором
Обновить

Изображаем память с помощью тетрадки в клеточку

Время на прочтение5 мин
Количество просмотров4.5K
Где-то в архивах этого блога можно найти статью про тетрадь в клеточку и ее душевные переживания. Содержание у этой статьи скорее философское, чем прикладное. Но вот сама идея изобразить работу мозга с помощью карандаша и тетради в клеточку показалась мне довольно интересной. Как заметил автор той статьи, работу любой программы можно изобразить на бумаге. Будь то стек вызовов или регистры процессора – их легко можно изобразить с помощью клеточек.

Но это все низкоуровневые процессы. Возможность изобразить их на бумаге скорее теоретическая. На практике от нее мало пользы. Вот если бы можно было с такой же легкостью описывать более высокоуровневые процессы…

Натачиваем карандаш


Зачем? – спросите вы. Если работу какой-то системы можно легко изобразить схематически, то и смоделировать подобную систему будет проще. А что может быть проще листа в клеточку?

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

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

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

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

Проектируем память на плоскость


Многие представляют память как сеть связанных друг с другом узлов. Казалось бы, как можно подобный клубок изобразить на плоскости, да еще и упорядочить по клеткам?

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

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

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

С помощью параллельных связей нам таки удается воспроизвести алфавит в обратном порядке. Для этого мы обычно представляем его визуально и «видим» одновременно несколько соседних букв.

Если последовательные связи назвать вертикальными, а параллельные – горизонтальными, то сразу становится понятно, как все это изобразить с помощью клеток. Каждый узел будет занимать одну клетку. Все узлы, которые связаны параллельной связью, должны располагаться в одной строке. Тогда узлы, связанные последовательной связью, будут располагаться в соседних строках.

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

tea

Каждому типу узлов соответствует свой столбец. В реальной ситуации столбцов будет намного больше.

Каждая строка содержит один образ – набор узлов, связанных параллельной связью. В приведенной таблице некоторые клетки оставлены пустыми. Это значит, что информация, содержащаяся в них, не относится к процессу заваривания чая и не является частью образа.

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

Модель памяти


Описывать образы словами довольно удобно для человека, чего не скажешь о компьютере. Ему намного привычнее работать с безликими числами. Но наша таблица составлена таким образом, что ее можно довольно естественно привести в понятный компьютеру вид.

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

tea2

Получившаяся в итоге двумерная карта воспоминаний является лишь разверткой памяти. Модель самой памяти можно наблюдать на рисунке слева.

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

Узел


Узел – это единица памяти. Он хранит информацию о конкретном ощущении (запах апельсина) или действии (поворот головы). Из того, что было сказано выше, следует, что в узле хранятся его значение, тип, параллельные связи и последовательные связи.

Связь


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

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

А еще для хранения такой связи подойдет простой массив целых чисел, где числа указывают на интенсивность, а индексы – на тип. Например, образ ложки (твердая – холодная – небольшой звон) можно записать в виде массива [9, 0, 2, 3].

У одного узла может быть множество как параллельных, так и последовательных связей. Например, запах апельсина может быть частью образа апельсина или же апельсинового сока. Чтобы привнести в это какой-то порядок, к каждой связи нужно добавить вес. Этот вес может увеличиваться при повторном запоминании данной связи или при переходе по ней. Соответственно, вес уменьшается, когда нет повторений и переходов. Со временем слабые связи можно просто удалять.

Что дальше?


Не надо относиться к этому, как к точной модели человеческой памяти. Такой задачи я перед собой не ставил. Воспроизвести некоторые свойства и особенности памяти – да, но не саму ее структуру. Приоритетом была простота и возможность легко представить все в уме или изобразить на бумаге.

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

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

Спасибо за внимание.
Теги:
Хабы:
+43
Комментарии29

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн