Фильтр Хебба

Далее мы будем часто обращаться к нейросетевым моделям. В принципе, практически все основные концепции из теории нейронных сетей имеют прямое отношение к строению реального мозга. Человек, сталкиваясь с определенными задачами, придумал множество интересных нейросетевых конструкций. Эволюция, перебирая все возможные нейронные механизмы, отобрала все, что оказалось для нее полезным. Не стоит удивляться, что для очень многих моделей, придуманных человеком, можно найти четкие биологические прототипы. Поскольку наше повествование не ставит целью хоть сколько-либо детальное изложение теории нейронных сетей, мы коснемся только наиболее общих моментов, необходимых для описания основных идей. Для более глубокого понимания я крайне рекомендую обратиться к специальной литературе, например, Саймон Хайкин «Нейронные сети. Полный курс» (Хайкин, 2006).

В основе многих нейросетевых моделей лежит хорошо известное правило обучения Хебба. Оно было предложено физиологом Дональдом Хеббом в 1949 году (Hebb, 1949). В немного вольной трактовке оно имеет очень простой смысл: связи нейронов, активирующихся совместно, должны усиливаться, связи нейронов, срабатывающих независимо, должны ослабевать.

Состояние выхода линейного сумматора можно записать:

\[y=\sum_{i=1}^{m}\omega_{i}x_{i}\]

Если мы инициируем начальные значения весов малыми величинами и будем подавать на вход различные образы, то ничто не мешает нам попробовать обучать этот нейрон по правилу Хебба:

\[\omega_{i}(n+1)=\omega_{i}(n)+\eta y(n)x_{i}(n)\]

Где n – дискретный шаг по времени, – \(\eta\) параметр скорости обучения.

Такой процедурой мы увеличиваем веса тех входов, на которые подается сигнал \(x_{i}(n)\), но делаем это тем сильнее, чем активнее реакция самого обучаемого нейрона \(y(n)\) . Если нет реакции, то не происходит и обучение.

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

\[\omega_{i}(n+1)=\frac{\omega_{i}(n)+\eta y(n)x_{i}(n)}{\sqrt{\sum_{i=1}^{m}(\omega_{i}(n)+\eta y(n)x_{i}(n))^{2}}}\]

При таком обучении происходит перераспределение весов между синапсами. Понять суть перераспределения легче, если следить за изменением весов в два приема. Сначала, когда нейрон активен, те синапсы, на которые поступает сигнал, получают добавку. Веса синапсов без сигнала остаются без изменений. Затем общая нормировка уменьшает веса всех синапсов. Но при этом синапсы без сигналов теряют по сравнению со своим предыдущим значением, а синапсы с сигналами перераспределяют между собой эти потери.

Правило Хебба есть не что иное, как реализация метода градиентного спуска по поверхности ошибки. По сути, мы заставляем нейрон подстроиться под подаваемые сигналы, сдвигая каждый раз его веса в сторону, противоположную ошибке, то есть в направлении антиградиента. Чтобы градиентный спуск привел нас к локальному экстремуму, не проскочив его, скорость спуска должна быть достаточно мала. Что в Хеббовском обучении учитывается малостью параметра \(\eta\).

Малость параметра скорости обучения позволяет переписать предыдущую формулу в виде ряда по \(\eta\):

\[\omega_{i}(n+1)=\omega_{i}(n)+\eta y(n)(x_{i}(n)-y(n)\omega_{i}(n))+O(\eta^{2})\]

Если отбросить слагаемые второго порядка и выше, то получится правило обучения Ойа (Oja, 1982):

\[\omega_{i}(n+1)=\omega_{i}(n)+\eta y(n)(x_{i}(n)-y(n)\omega_{i}(n))\]

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

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

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

Обучение нейрона ведет к тому, что на его весах выделяется (фильтруется) определенный образ. Когда подается новый сигнал, то чем точнее совпадение сигнала и настройки весов, тем выше отклик нейрона. Обученный нейрон можно назвать нейроном-детектором. При этом образ, который описывается его весами, принято называть характерным стимулом.