ZP ZapolyarnyDev
research article

Как измерять ответ резонатора

Метрики реакции поля: распространение сигнала, output-активность, сравнение голоса с тишиной и повторяемость ответа

К группе К исследованиям

Как измерять ответ резонатора

Самая опасная часть таких экспериментов - это моё любимое: “О!! на глаз вроде работает”. Поле движется, визуализация красивая, звук есть, и далее мозг додумывает то, чего ещё нет.

Если я хочу честно исследовать резонатор, мне нужны метрики. МНОГО МЕТРИК, Я СЕРЬЁЗНО.

Что можно измерять

Внутри поля уже есть несколько полезных величин:

  • глобальная синхронизация;
  • локальная синхронизация;
  • средний и минимальный метаболит;
  • след активности;
  • активность отдельных регионов;
  • реакция output-региона относительно поведения по умолчанию.

Отдельно считаются региональные метрики для упомянутых мною в прошлой части input, assoc и output. Благодаря этому можно смотреть как на всё поле сразу, так и на маршрут сигнала: от входа до выхода.

Проверка распространения

Первый тест - распространение импульса.

Сценарий простой:

  • прогреть поле несколько шагов;
  • измерить baseline;
  • подать фазовый импульс в input-регион;
  • смотреть, как меняются input, assoc и output;
  • сохранить CSV, JSON summary и график.

Здесь важны задержки и пики. Если output-регион вообще не реагирует, значит текущая конфигурация поля плохо проводит сигнал. Если реагирует мгновенно и слишком сильно, возможно, вход просто пробивает всю среду насквозь. Интереснее всего промежуточная зона: сигнал доходит, но не уничтожает локальную динамику поля.

Голос VS тишина: FIGHT

Второй тест - сравнить голос с тишиной такой же длины.

Это очень полезная проверка против самообмана. Если поле “реагирует” на голос, но почти так же реагирует на нулевой WAV, значит я измеряю не реакцию на аудио, а внутренний дрейф или красивую генерацию.

Поэтому прогоняем два сценария:

  • настоящий WAV с голосом;
  • тишина с такой же длиной и форматом.

Потом сравниваются пики output-активности, событийный счётчик, скорость ответа и общий дрейф. Это всё ещё не доказывает понимание, но сильно помогает не повестись на то, что мы получаем от обычной динамики поля.

Повторяемость и слабая память

Третий тест - проиграть один и тот же сигнал два и более раз через одно поле.

Я задал вопрос: будет ли второй ответ похож на первый, или среда после первого прохода заметно изменилась?

В проекте для этого есть специальный скрипт. Он прогревает поле, проигрывает сигнал, делает паузу, проигрывает сигнал второй раз и сравнивает:

  • корреляцию ответов;
  • RMSE (Root Mean Square Error, среднеквадратичная ошибка) между повторениями;
  • изменение пиков;
  • скорость ответа;
  • событийный счётчик.

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

Где легко допустить ошибку

Вообще, тут много подводных камней:

  • Можно перепутать реакцию на вход с естественным дрейфом поля;
  • Можно слишком сильно настроить управляющий сигнал и получить грубый удар по фазам осцилляторов;
  • Несколько раз, увы, я принимал красивую визуализацию за доказательство ранее выдвинутой гипотезы;
  • Можно подобрать конфиг под один удачный пример и зациклиться на нём;
  • Можно начать говорить слишком громкие слова раньше времени.

Последнее чаще всего было проблемкой, ибо мне хочется, чтобы проект оставался исследованием, а подобное часто манит своей красотой. (Я купился :(. НО ЗАФИКСИЛ!)

Что дальше

Я хочу собрать несколько одинаково описанных запусков:

  • синтетический импульс;
  • отличие тишины от поступающего голоса;
  • повторение голоса;
  • разные уровни управляющего сигнала.