Удержание входного образа

Удержание входного образа

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

Sparse Hash

Установим размер хеш-слоя равным размеру входного слоя и объединим их. Таким образом хеш-нейроны будут иметь связи друг с другом. Первоначальную активность слоя будем задавать прямым проецированием её на хеш-слой. В такой конфигурации работа сети ничем не отличается от обычной. Но что если оставить картину активности хеш-нейронов и понаблюдать за её эволюцией, повторив обработку множество раз.

Внесём некоторую модификацию. Пусть активность хеш-слоя на текущем шаге равна пересечению активности на прошлом шаге с её хешем.

image(t) = image(t-1) & hash(image(t-1));

, где: image(t) — образ активности слоя на шаге t.

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

Отсюда следует, что потеряв активность, нейрон не может снова её получить, кроме как по прямому пути.


Вот пример работы такой сети. На картинке в верхней строке изображены 18 исходных входных образов одной и той же цифры из MNIST. Ниже следуют 20 строк, каждая строка — итерация.


Исходный входной образ постепенно деградирует и в итоге стабилизируется. В стабилизированном состоянии единичные биты образа полностью совпадают с соответствующими битами хеша этого образа.

В большинстве случаев такая деградация не сказывается на правильном распознавании. Ошибку вносят не до конца сформировавшиеся ключи.


К текущей активности мы применили хеш как маску, теперь маской пусть будет выступать код ключа образа.

image(t) = image(t-1) & key(hash(image(t-1)));

, где: key() — функция, возвращающая код ключа-победителя при распознавании образа.

Можно переформулировать правило следующим образом: активный нейрон сохраняет свою активность, если он входит в код ключа-победителя при распознавании образа.


Справа - код ключа.

Как видим образ более не распадается и стабилизируется на первом же шаге. Слой будет хранить его сколь угодно долго. Для сброса образа необходимо затормозить нейроны. Ошибка распознавания возникает в редких случаях.

Здесь интересно ещё и то, что запечатлённый образ одновременно является частично и кодом собственного класса.

В итоге, такая архитектура способна, как удерживать в активности слоя входной образ, так и кодировать его кодом класса.

Report Page