Правила и условия формирования кадров эпизодической памяти (ЭП)

1. Общая схема эпизодической памяти

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

Правило (кадр эпизода):
Стимул (образ FinalImage) → ответное действие (образ действия, ОД) → эффект (Effect) → ответный стимул оператора (при наличии).

Содержимое кадра:

Ответное действие + ответный стимул образуют «учительское» правило: как оператор отвечает на действие Beast.

Время ожидания ответа — response_waiting_period в пульсах (по умолчанию 15). Закрытие по таймауту в EpisodicMemory_onPulse. Кадры с незаполненным effect остаются на оптимизацию.


2. Условия запуска формирования кадра ЭП

Формирование кадра ЭП запускается только через ориентировочный рефлекс (ОР). Кадр создаётся когда: ОР сработал, выполнены условия ОР (порог OR_well_known и др.), не идёт период ожидания (иначе стимул трактуется как ответный). Вызов save_episodic_memory выполняется из ОР; кадр и прогресс-бар создаются при каждом таком срабатывании ОР (не только в тестовом режиме).


3. Жизненный цикл кадра

  1. Создание (при срабатывании ОР):

    • Закрывается предыдущий незакрытый кадр (если есть и не истёк период ожидания — текущий стимул записывается как ответный; иначе кадр закрывается без ответного стимула).
    • В массив ЭП добавляется «пустой» кадр: заданы perceptionNodeId, stimulusImageId, diffBefore (значение getDiffImportance() до активации стимула, из PrevDiffForEpisode), actionImageId = null, effect = null, responseStimulusImageId = null.
    • Устанавливаются счётчик пульсов и EpisodicMemory_waitingStartedAt; закрытие по пульсам в EpisodicMemory_onPulse. Прогресс-бар виден только при активном ожидании в этой сессии.
  2. Заполнение ответным действием:
    Когда Beast выполняет реакцию (генетическую или условную), в последний кадр записывается actionImageId (образ действия) через EpisodicMemory_setLastFrameActionFromActionId(actionId). Используется stimulusImageId уже записанный в кадре (чтобы кадр заполнялся и при отложенной реакции или снятых стимулах).

  3. Завершение кадра:

    • Ответный стимул в период ожидания: ОР сначала проверяет isInWaitingPeriod(). Если истинно — стимул считается ответом оператора, вызывается closeLastFrameWithResponse(winnerId). Порог OR_well_known для ответного стимула не проверяется.
    • Истечение периода без ответного стимула: в EpisodicMemory_onPulse кадр закрывается. Если actionImageId === null, кадр удаляется; иначе остаётся с вычисленным effect.

Во время периода ожидания любой стимул трактуется только как ответ оператора (без проверки samplesCount).


4. Ориентировочный рефлекс (ОР) и условия для ЭП

Порядок проверок: (1) Нет активных стимулов — выход без сообщения (деактивация). (2) Нет ветки / нет победителя — выход. (3) Регистрация в СЗ. (4) Сначала isInWaitingPeriod() — если true, закрытие кадра с ответом, порог OR_well_known не применяется. (5) Затем проверка samplesCount >= OR_well_known для начала нового процесса. (6) Иначе — save_episodic_memory, кадр и прогресс-бар создаются всегда. Период ожидания только при waitingStartedAt != null (загруженный незакрытый кадр не даёт «в ожидании»).


5. Режим тестирования формирования ЭП

Включается кнопкой «т» в блоке «Активная ветка дерева восприятия». Флаг: global.EpisodicMemory_testMode.

В тестовом режиме:

В тестовом режиме кадр ЭП создаётся и при наличии семантической значимости (runEpisodic = !hasSignificance || EpisodicMemory_testMode), чтобы можно было пошагово наблюдать процесс.


6. Условные рефлексы в контексте ориентировочного рефлекса

Правило: если стимул привлёк ориентировочный рефлекс, по нему не запускается процесс образования условного рефлекса.

Механизм:

  1. ОР при срабатывании блокирует выполнение генетического (или условного) рефлекса на 2 пульса (OR_BLOCK_PULSES). Рефлекс не выполняется сразу, а помещается в очередь отложенных рефлексов (delayedReflexes).
  2. При постановке в очередь и при последующем выполнении отложенного рефлекса в событие записывается флаг noConditionalReflex: true.
  3. Когда отложенный рефлекс выполняется, в startAction передаётся опция noConditionalReflex: true. При этой опции не вызывается synonyms_onGeneticActionFired — подсистема условных (синонимических) рефлексов не получает сигнал для формирования или усиления условного рефлекса по данному стимулу.

Таким образом, стимул, который привлёк ОР (т.е. по которому рефлекс был задержан), не участвует в образовании условного рефлекса; условные рефлексы формируются только по стимулам, по которым рефлекс сработал без блокировки ОР.


7. Сводка ключевых констант и флагов

Параметр Описание Значение по умолчанию
response_waiting_period Длительность периода ожидания ответа (в пульсах) 15
OR_well_known Порог для начала нового процесса ОР/ЭП (не для ответного стимула) 10
EpisodicMemory_testMode Режим пошаговых сообщений по формированию ЭП false
OR_BLOCK_PULSES Число пульсов блокировки рефлекса после ОР 2

Файлы реализации: _10_Episodic_memory/episodic_memory.js, _8_Hippocampus/orientation_reflex.js, _5_Genetic__reflexes/genetic_reflexes_engine.js.