Операции поиска
Представим себе некоторый искусственный нервный узел, выполняющий поиск какого-то значения в подведомственной ему памяти. Допустим, у этого узла имеется в наличии память из пяти ячеек, хранящих пять разных поименованных свойств с их числовыми значениями. Пусть имена свойств (ячеек памяти) будут представлять имена пяти членов семьи, а числа в свойствах - возраст каждого члена семьи. Нужно найти возраст человека по имени "Петя". Вот условная схема такого узла.
На входной дендрит поискового нейрона ПН передается извне нервный сигнал, в котором закодирована команда, что требуется найти. На языке программирования такая команда понималась бы как "взять значение свойства ПЕТЯ". Поисковый нейрон ретранслирует эту команду в свой аксон, чтобы нейроны памяти Я1, Я2, Я3, Я4 и Я5 могли немедленно приступить к обработке принятой команды. Обратите внимание, как механизм поиска отличается от традиционного программного поиска. Каждая ячейка памяти выполняет поиск самостоятельно, причем для ускорения поиска они все выполняют его синхронно. Ячейка памяти не отзывается, если переданное в команде имя свойства не равно имени ячейки. Отзывается только та ячейка, чье имя совпало с именем свойства. В свой аксон она выдает ответ, который попадает в дендрит поискового нейрона. В итоге поисковый нейрон через свой аксон возвращает наружу (за пределы нервного узла) ответ в виде возраста человека по имени "Петя".
Важная особенность подобных схемных решений памяти в том, что за два такта операции поиска (ретрансляция в аксон команды поиска, подача в аксон нервного паттерна с ответом) находится требуемое значение независимо от объема памяти. Аксон поискового нейрона в нервном узле используется как для ретрансляции команды поиска нейронам памяти, так и для передачи команды ответа наружу. Но тогда обязательно требуется, чтобы наружное окружение, которое запрашивало у нервного узла исполнить операцию поиска, реагировало только на команду ответа, игнорируя прочие команды, пущенные поисковым нейроном в свой аксон и предназначавшиеся для нейронов памяти. Можно, конечно, избавиться от трудности по-другому, установив на выходе дополнительный нейрон, следящий, чтобы на выход нервного узла не попадало ничего, кроме команды ответа. Однако это не скрывает в полной мере проблем типизации сигналов. Даже на скорую руку выясняется, что должны существовать как минимум типы сигналов "запрос исполнения" и "ответ". К тому же первый из них логично снабдить субтипами: какой конкретно запрос - с ответом или без; запрос чего именно - исполнения действия или возврата состояния, и тому подобное. Прибавим сюда и необходимость управленческих типов сигналов: что-то в духе "отбой предыдущего запроса", "временно отложить" и так далее. Не отрицается разумная нужда в сигналах типа "переброс, перемещение, замещение данных", когда связи цепочки нейронов используются просто как транспортные каналы. Сразу возникает потребность в указании источника и получателя. А это ведет к неизбежному структурному устройству нервного паттерна. В общем, проблему типизации предстоит когда-нибудь решить, сейчас же в этой связи приходится больше гадать, чем опираться на какие-нибудь практические знания.
Иерархическая память
Основные нервные центры способны хранить данные со сложной иерархией - структуры данных. Структурирование данных подразумевает вложение под некоторым именем еще каких-либо наборов данных со своими субименами, каждое из которых может иметь свои субнаборы, причем вложенность и размеры субнаборов неограниченны. В итоге структура данных похожа на ветвящееся дерево, где каждая ветвь обозначает некоторое имя данных, а веточки ветви обозначают вложенные в это имя наборы субимен данных.
Простой блок памяти представляет собой поисковый нейрон с каким-либо количеством нейронов памяти (ячеек). Однако в иерархической памяти каждая ячейка памяти может стать блоком простой памяти, где бывшая ячейка памяти превратится в поисковый нейрон, у которого имеется в распоряжении свое количество нейронов памяти, каждый из которых тоже может стать блоком простой памяти, обеспечивая ветвление структуры данных. Как же ячейка памяти становится поисковым нейроном, получая "в подарок" собственный набор нейронов памяти?
В ходе развития организма в нервной системе создается множество нейронов. У каждого из них имеется достаточно большое количество дендритов. В результате количество контактов дендритов с аксонами других нейронов достигает больших значений. Но не каждый физический контакт обозначает электрическое соединение. У определенного нейрона имеется множество дендритов, и только часть из них "припаяна" к аксонам других нейронов, остальная часть дендритов просто заведена к местам возможных подключений, но не подключена. Если в месте контакта нет нейротрансмиттеров - химических веществ, проводящих нервные сигналы, - никакого контакта не будет. Однако контакт может быть установлен по требованию. В этом случае в области контакта с помощью физико-химических процессов генерируются нейротрансмиттеры, "припаивая" дендрит к аксону. Таким же образом бывшая ячейка памяти получает в личное пользование набор свободных нейронов.
Интересно, что в иерархической памяти требуемое значение тоже находится за два такта операции поиска (для запросившего операцию поиска внешнего окружения не видны внутренние субтакты поискового нервного узла), причем независимо от объема и сложности структуры данных. В центральный поисковый нейрон нервного узла с иерархической памятью поступает команда поиска с закодированным полным именем искомых данных, включая все субимена требуемой ветви. Программистам известна такая запись пути к данным, когда последовательно указываются имена всех ветвлений на пути, разделенные знаком точки. Получается что-то типа записи "Человек.рука.палец.кожа.цвет", обозначающей данные цвета кожи пальца на руке человека. Поисковый нейрон пропускает в свой аксон команду поиска для обработки ячейками памяти. Каждая ставшая поисковым нейроном бывшая ячейка памяти сохраняет в себе часть функций от ячейки памяти. Другими словами, она - ячейка памяти и поисковый нейрон совместно. Все такие ячейки начинают синхронно сравнивать свое имя с первым именем искомых данных в полученной команде поиска. Ячейки, представляющие собой неподходящие ветви структуры данных, молчат, а продолжает обработку только та ячейка, чье имя равно имени искомой ветви данных. В свой аксон она ретранслирует ту же самую команду поиска, отсекая из полного пути к искомым данным первое (свое) имя. Вложенные ячейки синхронно выполняют такую же операцию, пока в команде поиска не останется последнее имя, на которое отзовется требуемый нейрон ветви.
Нужно отметить тот факт, что аксоны реальных ячеек памяти (не ставших поисковыми нейронами) заведены на центральный поисковый нейрон. Таким образом, ячейки-поисковики выдают в аксон команду поиска, не дожидаясь ответа на нее, так как ответ всегда уйдет на центральный поисковый нейрон. Во-первых, это ускоряет операцию поиска. Во-вторых, упрощается схемное решение, так как поисковой ячейке памяти передается только часть функций поискового нейрона, в результате чего она может формировать команду поиска, но не имеет механизмов принятия команды ответа.
...
Дмитрий Сахань, 18 июня 2002 года
Добавлено спустя 18 минут 35 секунд:
так вот, в переводе на язык электронщиков это обычная микросхема памяти с параллельным доступом!
входы это адрессация выход это шина данных
и самое главное никакого тактования!!!
т.е. как только изменятся данные на входах адрессной линии, на выходе шины данных мгновенно появится новое значение
т.е. будет произведен мгновенный поиск значения внезависимости от размера самой памяти!!!
минус как бы тут один, не рациональное использование памяти, т.е. под один вид данных уйдет весь объем микросхемы, хотя при этом никто не запрещает ввести в адресацию старших битов кодировки к какому типу относится данный запрос.
именно для этого в первую очередь я и сделал на миниботе-про SD-card для ассоциативной памяти
ведь технически флеш-память можно расматривать как скучкованную в одном месте гору микросхем отдельных параллельных памятей по 512 байт. В случае с 2ГБ карточкой это 3.967.488 микросхемок по 512б всего за 200р.!!!
Добавлено спустя 3 минуты 12 секунд:
таким образом можно производить не только мгновенный поиск, но и например любые математические операции, например мгновенное перемножение тридцатидвухразрядных чисел, лишь бы адресации хватило...
Добавлено спустя 8 минут 10 секунд:
и самое главное, голосование в распозновании образов я думаю именно так и постоенно...