Это одна из попыток решить mnist за минимальное количество операций умножения.

В качестве примера рассмотрим задачу MNIST, где permutation neuron с тремя классических нейронами и есть вся наша сеть.

Permutation neuron — это вычислительный блок, реализующий преобразование входных сигналов на основе перестановки. Нейрон поддерживает набор внутренних векторов, которые переупорядочиваются на основе их взаимодействия с входными данными. Этот процесс переупорядочения отображает входное пространство в дискретный набор выходных шаблонов, где каждый шаблон соответствует определенной перестановке внутренних векторов.

Для классификации 10 цифр датасета MNIST требуется не менее 10 различных состояний нейрона. Поскольку число перестановок определяется факториалом количества нейронов, минимально необходимо 4 нейрона (4! = 24 перестановки), чтобы покрыть 10 классов. Однако, вычитая значение одного нейрона из остальных (нормализация), можно ограничиться вычислением трёх нейронов, задавая четвёртый нейрон равным нулю, без нарушения порядка перестановок. Это позволяет сократить вычислительные затраты, сохраняя 24 уникальных состояния для классификации.

Для задачи классификации 10 цифр датасета MNIST permutation neuron работает следующим образом: три нейрона с линейной функцией активации вычисляют значения на основе входных данных изображения, а четвёртый нейрон фиксируется равным нулю. Эти четыре значения упорядочиваются, формируя одну из 24 возможных перестановок (4!), например, ACZB. С помощью кода Лемера каждая перестановка преобразуется в уникальное число от 0 до 23, которое затем отображается на один из 10 классов MNIST, определяя, например, цифру от 0 до 9.

Обучение с помощью генетического алгоритма

Не самая очевидная задача это обучение сетей с подобными нейронами, с градиентным спуском возникает ряд проблем, а мне хотелось понять примерный потенциал подобных нейронов - поэтому я остановился на генетическом алгоритме.

Пространство поиска параметров ограничено 2355 значениями, где каждый из трёх нейронов обрабатывает входные данные размером 784 (пиксели изображения MNIST) плюс bias (3 × (784 + 1)). Двадцать четыре состояния перестановок, формируемые permutation neuron, определяются жадным алгоритмом на основе обучающей выборки MNIST, что позволяет отображать перестановки на 10 классов.

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

Для оптимизации весов permutation neuron применён генетический алгоритм с популяцией из 50 особей. Использован кроссовер BLX-Alpha (с параметром k=2) над двумя родителями и вероятность случайной мутации в 2%. Эти настройки и позволили достичь точности классификации 77% на датасете MNIST.

Код

Сам код доступен на github, там же лежит лучшее найденное решение и с этим вы можете помочь.

Если найдете решение лучше — с удвольствием опубликую за вашим авторством

Комментарии (0)