Распознавание устойчивых паттернов в последовательностях

Распознавание устойчивых паттернов в последовательностях

Алексей Тарасов @Atar

Sparse Hash

Цель эксперимента

Эксперимент с последовательностями. Задача найти в последовательности устойчивые паттерны.

Датасет

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

Примеры паттернов: 'TEST', 'HELLO', 'DOLLY'

"__TEST_______DOLLY___DOLLY__________HELLO________TEST_____________HELLO_______________DOLLY____TEST__HELLO____________HELLO___DOLLY________________________DOLLY____________________HELLO_______________"

Итоговая входная последовательность для юнита:

XBTESTLZPZKDKDOLLYOTSDOLLYRDNGFMKWXXHELLOPGJVAEKYTESTTKDYFFMHRXTJDHELLOWUSEHYMVFKWAUNWDOLLYNRTYTESTQXHELLOVBBGCNVGUCDZHELLONDYDOLLYOENUQNIUDHFAJFSVCXPJJRYWDOLLYFUIYGYXXQPGVANPXKSZXHELLOVCVBWYLJQSICUBI

Конфигурация нейросхем

Задействуется только один юнит (ака колонка в коре). На вход юнита подаётся код, соответствующий подпоследовательности символов, выбранных плавающим окном в 8 символов.

[XBTESTLZ]PZKDKDOLLYO...

Каждый символ последовательности перед тем как попасть на вход юнита кодируется в случайное высокоразреженное распределённое представление (SDR). Один и тот же символ в разных позициях окна кодируется уникальным кодом.

Результат

Юнит успешно находит все паттерны, формируя кластеры/ключи, нацеливающиеся на эти паттерны в разных положениях внутри окна: "___DOLLY", "HELLO___", "_HELLO__", "___TEST_" и т.д.