Нейронная сеть Хопфилда
основополагающие открытия и изобретения, которые позволяют использовать машинное обучение с помощью искусственных нейронных сетей.
В простейшем случае это однослойная нейросеть, в которой все нейроны соединены со всеми и каждый нейрон может принимать два значения (-1 и 1 - как знак заряда или спин). Поэтому текущее состояние сети легко нарисовать в виде бинарной картинки. При этом значение каждого нейрона определяется как взвешенная сумма остальных нейронов с пороговой активацией (здесь все похоже на обычный полносвязный слой).
Состояние сети зависит от весов и значений нейронов. Такому состоянию можно поставить в соответствие энергию. Если изменить значение нейрона или веса, это может повлечь за собой изменение остальных нейронов (возмущение). В начале существует простой способ подобрать такие значения весов, чтобы минимальное состояние энергии этой сети соответствовало каким-то заранее заданным паттернам.
Таким образом, мы зафиксируем матрицу весов, соответствующую нашей текущей памяти. То есть процесс обучения сети Хопфилда - это один шаг (никаких градиентных спусков и итерационных алгоритмов - одна формула).
А потом можно возмутить состояние нейронов как угодно (при выученных весах это гарантированно приведет к увеличению энергии системы) и посмотреть на пошаговую эволюцию состояний сети во времени - она сойдется к одному из стационарных состояний, которыми являются выученные паттерны. Но когда паттернов для запоминания становится много, то появляются новые стационарные состояния, которые мы не вкладывали в сеть (их называют химерами).
В этой модели каждый нейрон функционирует подобно магнитному моменту в магните. Мы сначала сильным внешним магнитным полем ориентируем спины в нужном направлении, потом убираем поле, а намагниченность остается.
При этом если теперь вывести их из равновесия, они будут потихонечку возвращаться в устойчивое состояние, минимизируя энергию через переориентацию спинов. Удивительно, что можно использовать концепции физики для объяснения и реализации процессов, связанных с памятью и самоорганизацией.
Например, в этой анимации я обучил сеть запомнить 2 состояния - турбославянина и ящера. А потом дал ей несколько разных картинок