Немного времени уделим изучению ИНС с относительно простыми кластерами. Сразу же замечу, что эта ветвь исследований на данный момент считается мной промежуточной и отработавшей свое. Я такие схемы больше не использую. Зачем же их рассматривать? Ответы:
1) На этих простых схемах были отработаны некоторые части алгоритмов, применимые и в дальнейшем
2) Начинать изучение лучше с простого – так легче учиться
3) После изучения недостатков становятся понятны причины, по которым введены более сложные схемы.
(Четвертое – маленький исторический экскурс. Небольшой – потому, что над такими схемами я работал большую часть времени, а рассмотрены они будут поверхностно. Но кого интересуют десятки моделей старых поршневых самолетов, когда на подходе ознакомление с реактивной авиацией?).
Для начала нужно указать, почему кластеры простые. Простые они в сравнении с более поздними версиями. В простых кластерах минимальна специализация между нейронами. Самый простой кластер – с нейронами одного типа, который можно аппроксимировать одним искусственным нейроном. Так и будем поступать в дальнейшем – все однотипные нейроны внутри кластера по возможности объединять в один сложный квазинейрон (обычно будем называть просто «нейрон»). Объединение производится для экономии памяти, быстродействия и получения простоты модели. С памятью понятно – меньше нейронов и связей, меньше используется память. С быстродействием тоже – меньшее количество нейронов нужно будет обрабатывать. Дополнительно – например, вместо нескольких циклов, за которые будут осуществляться внутрикластерные пересылки, можно держать эквивалентную усредненную активацию на квазинейроне. Тогда быстродействие можно будет повысить также уменьшением частоты дискретизации тактов нейросети. Это – короткое напоминание после перерыва между публикациями.
Сейчас попытаемся собрать воедино рассмотренные ранее аспекты, добавить дополнительные характеристики, и получить систему с новыми качествами. На данный момент известно, как:
- создавать примитивные распознающие (гностические) и нисходящие (прогностические) цепочки воспоминаний
- коэффициенты необходимости и достаточности, концепция их использования при запоминании ( «№29 Распознавание и прогнозирование, активация и торможение, необходимость и достаточность» ( http://neurocod.net/blog/2008/2008/08/№29-распознавание-и-прогнозирование-а ) )
Попытаемся создать ИНС, которая будет учитывать все эти аспекты. Где надо, рассмотрим их более пристально, для выявления незамеченных.
В одной из моделей, прежде чем заносить активированный признак в цепочку быстрой памяти, происходило ожидание в течении нескольких циклов. Может, признак будет заторможен уже в течении первых циклов после активации? Так можно было бы значительно уменьшить нагрузку на цепочку быстрой памяти. Ведь подавляющее количество признаков – это низкоуровневые признаки, которые очень быстро тормозятся распознанными высокоуровневыми. Например, в «текстовой ИНС» буквы тормозятся слогами, корнями и т. д., так что уже через несколько циклов про отдельные буквы будет уже и не вспомнить. Для зрения и слуха это еще более важно.
Сценарий: признак активирован. Нейросети, связывающие с гиппокампом (быстрой памятью), накапливают активацию/значимость признака. После достижения критического порога, признак заносится в цепочку быстрой памяти.
Чтобы не усложнять схему, связывающие с гиппокампом нейросети не моделировались. Накапливание происходило в числовом счетчике, который был лишь очередным параметром каждого нейрона. При сбрасывании активации нейрона счетчик также обнулялся. За время накапливания сигнала на счетчике, активация на нейроне также угасала.
Проблема: за время накапливания силы для попадания в цепочку памяти, признак мог встретиться повторно. Для некоторых типов данных (например, звуки), если дискретность нейросети по времени выбрана большая, то такой случай можно считать как продолжение срабатывания все того же признака. Но для многих случаев такая стратегия не подходит. Например, одинаковые буквы в слове, разделенные промежуточной буквой, должны считаться разными признаками.
Появляется задача создать для некоторых видов сенсоров нейроны (либо другой механизм), которые будут реагировать на повтор признака, как на один признак. Например, созданием нового нейрона «признак А повторяется некоторое время не более N циклов», с механизмом срабатывания такого нейрона по нужным законам. В биологии за такое поведение вполне могут отвечать специализированные зоны. Но не буду гадать.
В случаях повторной встречи признака можно было бы вводить дублирующие нейорны-кластеры. (См. заметку «о создании нейронов»). Например, на лету клонировать признак вместе со связями, инициализировать счетчик, … Но это некрасивый способ. Концептуально более правильно клонировать только вхождение признака в память, а не сам признак… При существовании похожих кластеров в медленной памяти, ситуация более размыта. Там действительно может иметь место такое «клонирование признака». Но в ИНС можно изначально работать с системами без дублирования.
Было принято следующее решение. Двойная активация признака означает, что признак активирован в то время, когда еще не заторможена активация с предыдущей встречи этого же признака. Форсировано занесем признак в цепочку быстрой памяти, сбавим активацию на один порог, счетчик инициализируем заново.
Если быть точнее, то двойную активацию использовать было нельзя, так как активация со временем угасала. Но это учитывать не сложно – если знать закон, по которому активация угасает, то для каждого цикла можно рассчитать, какое значение активации пороговое для того, чтобы принять решение о повторной встрече признака.
Есть еще один аспект. Если данный признак А тормозился не своим гностическим обобщением, а признаком Б, у которого коэффициент необходимости был менее единицы, то признак желательно все же оставить в цепочке памяти, так как информация о нем может быть потеряна безвозвратно. Приходилось балансировать, выбирать значение, при котором признак заносится в память. Наиболее правильное решение в таком случае – признак в память заносить практически всегда, только с меньшим коэффициентом важности, который будет влиять на более быстрое забывание признака. (Признак заторможен – значит частично учтен следующим элементом).
Задача: попытаться создать архитектуру нисходяще-восходящей цепочки памяти на самых простых кластерах – с минимальной специализацией нейронов.

Рис. 59.1
На рисунке показано три цепочки. Для простоты и наглядности рисунка, в каждом шаге распознавания каждой цепочкой распознаются по три признака. Красным выделены нейроны, производящие распознавание. У всех трех цепочек есть общий недостаток: нет разделения на режим распознавания и прогнозирования. После распознавания очередного элемента цепочки, по нисходящим связям шлется прогнозирующий сигнал на признаки следующего шага. Это полезно и близко к биологии – после распознавания, подготавливается ассоциативный контекст для более легкого последующего распознавания признаков. Но это также снижает прогнозируемость работы ИНС для разработчика. Что, если прогнозирующие сигналы приведут к ложному срабатыванию признаков и занесению их в память? Система с галлюцинациями – ужас разработчика ИИ. Механизмы прогнозирования нужно уметь контролировать точнее. Можно выдвинуть предположение, что механизм контроля над прогнозированием не вшит в архитектуру цепочки памяти, а появляется как надстройка над большим количеством цепочек памяти, может, и при участии ассоциаций на специализированные отделы мозга. (Детали этого механизма сейчас рассматривать не к месту). В более поздних архитектурах, для контролируемости прогнозирования было применено другое решение, более простое: изменена архитектура цепочки памяти, так что контроль над прогнозированием стал присущ всем воспоминаниям.
Оставим пока рассуждения о контролируемости прогнозирования, и посмотрим на различия в схемах на рисунке выше. Схема вверху – самая простая и минималистская. В ней присутствуют и нисходящие, и восходящие связи. Распознавание производится нейронами верхней линии, как и на остальных схемах. Именно нейроны на верхней горизонтальной линии и олицетворяют собой нейронную цепочку.
Первая схема: после распознавания начального набора признаков, распознающим нейроном (выделенным красным) шлется прогнозирующий сигнал на признаки следующего шага. Также шлется сигнал на нейрон следующего кластера цепочки. Чтобы распознавание работало правильно, эта связь должна быть гностической, а не прогностической.
Будем называть группы нейронов по номерам соответствующих столбцов. В случае, если в столбце только один нейрон, будем называть нейрон по номеру.
Для срабатывания распознающей схемы первой цепочки необходимо, чтобы выполнялся один из следующих сценариев.
1) Нейроны столбцов 2 и 3 срабатывают одновременно, поэтому сигналы на нейроне столбца 4 суммируется одновременно. Но тогда прогнозирующие сигналы с 2 придут на признаки 3 с запозданием в один такт.
2) Нейроны соответствующих столбцов срабатывают в такты, соответствующие нумерации столбцов. В этом варианте, буквы воспринимаются нейросетью на каждом втором такте работы ИНС. (Соответствующие сенсорные нейроны активируются каждый второй такт). Но тогда возникают следующие проблемы. На такте 2, нейрон 2 в случае распознавания пошлет сигнал на нейрон 4. За такт 3 активация на 4 успеет уменьшиться. (В некоторых моделях – совсем пропасть). Возможное решение (2.1) – слать активацию с запасом на ее снижение в течении цикла. Главное – не перестараться, чтобы нейрон не сработал ложно. Еще одно решение (2.2) – обрабатывать нейроны типа 2-4-6 только каждый второй такт.
Но разве в биологических цепочках памяти наблюдаются такие проблемы? Плюс-минус один такт, цепочка не сработала… При большой дискретизации срабатывания нейронов (как в биологических НС), и при значительной нечеткости цепочек памяти («№42 Методы привнесения нечеткости в нисходящие и восходящие нейронные цепочки» ( http://neurocod.net/blog/2008/2008/08/№42-методы-привнесения-нечеткости-в-ни )), эти проблемы для НС не существенны. Но мы исследуем вопрос максимально допустимой оптимизации ИНС. Например, минимально допустимая дискретизация при восприятии чтении ИНС букв – хватит ли одного такта на чтение одной буквы? И двух нейронов на одну ассоциацию? Или придется читать букву раз в два, три, десять, пятьдесят тактов? Выделять на чтение одной буквы сотню спайков и триста нейронов в одном кластере? Минимализм интересен не только с точки зрения теории, но и важен на практике, для ускорения работы ИНС. До какого минимально допустимого уровня можно снижать нечеткость цепочки? Да и чтобы строить нечеткие цепочки, нужно научиться и отточить мастерство на четких.
Во второй цепочке, проблема синхронизации распознающих нейронов решена введением нейронов задержки. Они не являются гностическими нейронами, потому и не выделены красным. Сенсоры в такой цепочке должны также наполняться лишь каждый второй такт.
Наконец, третья цепочка памяти показывает, что будет, если не ждать каждый второй такт. Распознавание будет работать нормально, но прогнозирование – запаздывать. Возможно также появление запаздывающей волны, которая идет вслед за распознаванием, спускаясь по прогнозирующим связям вниз и поднимаясь вверх снова.