на главную ] 

Классификатор на основе нейронной сети ART-1.

Е.С.Борисов

понедельник, 5 октября 2009 г.


В этой работе построен классификатор, распознающий картинки с цифрами от 0 до 9. Для реализации классификатора используется нейронная сеть ART-1.

Введение

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

Решение этой проблемы было предложено С.Гроссбергом в теории адаптивного резонанса (ART)[1]. Согласно ей общая схема интеллектуальной системы состоит из двух типов памяти: кратковременной (STM) и долговременной (LTM), которые связаны между собой. Текущий входной образ помещается в кратковременную память и сравнивается с хранящимися в долговременной памяти. Если содержимое STM похоже на образ из LTM то возникает состояние резонанса - т.е. система "узнаёт" входной образ. В противном случае текущий входной образ считается "новым". Таким образом реализуется детектор новизны образов[2].

Гипотеза Гроссберга состоит в том, что только резонансные состояния мозга достигают рационального уровня сознания[3]. Это перекликается с понятием естественного (человеческого) языка, который часто ошибочно определяют как средство общения, в то время как средством общения есть речь. Язык же есть средством разделения, инструментом сегментации и классификации окружающего мира. Человек способен видеть (воспринять) только то, что присутствует в его языке (состояние резонанса).

На базе теории адаптивного резонанса было разработано несколько нейросетевых моделей. В этой статье мы рассмотрим нейронную сеть ART-1[4].

Модель

ART-1 относится к дискретным (работает с бинарными сигналами) рекуррентным нейронным сетям и состоит из трёх слоёв (входного и двух обрабатывающих) и двух специальных блоков (управления и сброса). Общая схема этой сети приведена на рис.1.

Рис.1: нейронная сеть ART-1
нейронная сеть ART-1

Нейроны входного слоя соединёны с соответствующими нейронами первого слоя, блоком сброса R и блоком управления G. Каждый нейрон первого слоя соединён со всеми нейронами второго слоя и блоком сброса R. Нейроны второго слоя соединёны со всеми нейронами первого слоя и блоком управления G.

Общая схема функционирования сети выглядит следующим образом.

  1. Сигнал через входной слой X подается на нейроны первого слоя,
  2. Взвешенные (с помощью матрицы весов B) выходы первого слоя Y0 поступают на входы второго слоя.
  3. Взвешенные (с помощью матрицы весов T) выходы второго слоя Y1 возвращаются к первому слою.
  4. Выходы первого слоя Y0 и входной вектор X сравниваются, выполняется проверка состояния резонанса, т.е. проверяется "узнала" система образ или нет.
  5. Если резонанс не установлен то модифицируется второй слой и процедура повторяется со второго шага.

Рассмотрим теперь эти механизмы подробнее.

Первый слой.

Каждый нейрон i первого слоя имеет три входа.

  1. Первый вход это соответствующая компонента xi входного образа.

  2. Второй вход - сигнал от блока управления G, он выдаётся при активном входе X и неактивном втором слое, это состояние соответствует начальному состоянию сети.
    \begin{displaymath}
G=(x_1 \lor \ldots \lor x_n) \land ( \lnot (y^1_1 \lor \ldots \lor y^1_m ) )
\end{displaymath} (1)

  3. Третий вход это взвешенный выход нейронов второго слоя $y^1_k \cdot t_{ki}$,
    где $y^1_k$ - выход k-го нейрона второго слоя, $t_{ki}$ - весовой коэффициент.

    Второй слой реализует алгоритм "победитель берёт всё" (WTA), поэтому выход только одного нейрона второго слоя будет активен.

Выход нейрона $i$ первого слоя будет активен только если активны два или три его входа (т.н. правило "два из трёх").


\begin{displaymath}
y^0_i =
\left\{
\begin{array}{ccc}
1 &,& G + x_i + y^1_k \c...
...
0 &,& G + x_i + y^1_k \cdot t_{ki} \leq 1
\end{array}\right.
\end{displaymath} (2)

Второй слой.

Здесь реализуется немного усложнённый алгоритм "победитель берёт всё" (WTA). "Победителем" считается нейрон второго слоя с максимальным состоянием $s^1_k$.
\begin{displaymath}
s^1_j=\sum\limits_i(y^0_i \cdot b_{ij})
\end{displaymath} (3)


\begin{displaymath}
s^1_k=\max\limits_j (s^1_j)
\end{displaymath} (4)

где $y^0_i$ - выход $i$-го нейрона первого слоя, $b_{ij}$ - весовой коэффициент.

Выходная активность нейрона-победителя устанавливается равной единице, остальные нейроны остаются неактивны.


\begin{displaymath}
y^1_j=\left\{
\begin{array}{ccc}
1 &,& j = k\\
0 &,& j \neq k
\end{array}\right.
\end{displaymath} (5)

Любой нейрон второго слоя может находиться в заблокированном состоянии, т.е. для него установлен сигнал сброса R. Это означает, что он "не допускается до участия в соревнованиях".

Кроме того, любой нейрон второго слоя может быть зарезервирован. Это означает, что он стал частью LTM и весовые коэффициенты связей этого нейрона несут информацию о некотором образе. Отсюда следует, что количество образов, которые способна вместить система, равна количеству нейронов второго слоя.

Блок сброса R.

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


\begin{displaymath}
\frac{\sum\limits_i y^0_i }{\sum\limits_i x_i } > \rho
\end{displaymath} (6)

где $y^0_i$ - выход $i$-го нейрона первого слоя, $x_i$ - $i$-го компонента входного образа, $0 < \rho < 1$ - константа (т.н. параметр бдительности).

Если выполняется отношение (6) то система пришла в состояние резонанса, т.е. входной образ успешно классифицирован, номер класса соответствует номеру нейрона победителя второго слоя.

Если отношение (6) не выполняется то здесь возможны два варианта.

  1. Ложный нейрон-победитель. В этом случае сигнал сброса R блокирует текущий нейрон-победитель второго слоя, далее ищем новый нейрон-победитель, вычисляем выходы первого слоя и снова повторяем сравнение (6).
  2. Новый образ. Все нейроны второго слоя оказались заблокированы. Это означает, что система обнаружила новый образ, который непохож ни на один, из хранящихся у неё в LTM. В этом случае резервируем нейрон второго слоя для нового образа и модифицируем веса его связей.

Правило обучения сети.

Как и в случае перцептрона[5] память системы есть матрицы весовых коэффициентов связей нейронов. Но в отличии от него процесс функционирования сетей ART не разделяется на две фазы обучения и рабочего состояния. ART-1 способна обучаться постоянно и самостоятельно, по мере поступления новых образов. Если система обнаружила новый образ то резервируется нейрон второго слоя и модифицируются веса его связей по следующим правилам.
\begin{displaymath}
b_{ik}= \frac{L \cdot y^0_i}{L-1+\sum\limits_i y^0_i}
\end{displaymath} (7)


\begin{displaymath}
\forall i : t_{ki}=y^0_i
\end{displaymath} (8)

где $L \geq 1$ - константа, $y^0_i$ - выход $i$-го нейрона первого слоя, k- номер нейрона-победителя второго слоя.

Начальные значения весовых матриц следующие.


\begin{displaymath}
b_{ij}(0) = \frac{ L }{ L - 1 + N }
\end{displaymath} (9)


\begin{displaymath}
t_{ji}(0) = 1
\end{displaymath} (10)

где $L \geq 1$ - константа, $N$ - размер выходного вектора X.

Алгоритм функционирования нейронной сети.

  1. инициировать матрицы весов B по (9) и T по (10)
  2. подать вход X
  3. рассчитать выход блока управления G по (1)
  4. рассчитать выходы нейронов первого слоя $y^0_i$ по (2)
  5. рассчитать состояния нейронов второго слоя $s^1_j$ по (3)

  6. найти нейрон второго слоя с максимальной активностью по (4),
    который ещё не был "победителем"
  7. если нет нового нейрона-победителя
    то перейти на п.14
    иначе перейти на следующий пункт
  8. рассчитать выход блока управления G
  9. рассчитать выходы нейронов первого слоя $y^0_i$
  10. рассчитать значение блока сброса R по (6)
  11. если не выполняется (6) то удалить текущий нейрон-победитель из соревнований, перейти на п.6
    иначе перейти на следующий пункт
  12. если текущий нейрон-победитель второго слоя не зарезервирован
    то обнаружен новый образ, перейти на п.16
    иначе перейти на следующий пункт
  13. состояние резонанса,
    вход X успешно классифицирован,
    номер класса равен номеру текущего нейрона-победителя второго слоя,
    перейти на п.17
  14. обнаружен новый образ,
    найти свободный нейрон второго слоя
  15. если нет свободного нейрона второго слоя,
    то память заполнена, невозможно запомнить новый образ, перейти на п.17
    иначе перейти на следующий пункт
  16. зарезервировать найденный свободный нейрон второго слоя,
    модифицировать его веса согласно (7) и (8)
  17. конец работы

Отметим, что это несколько упрощённый алгоритм ART-1, в оригинале веса связей модифицируются в любом случае: как при обнаружении нового образа, так и при успешной классификации. Таким образом моделируется адаптивность системы. Однако такой алгоритм ведёт к постепенному, необратимому обнулению матриц весов и рано или поздно система перестанет работать. Своеобразная математическая модель русской поговорки "много будешь знать - скоро состаришься".

Реализация

В этой работе реализован классификатор бинарных (черно-белых) картинок с изображением цифр.

На вход нейронной сети подаётся картинка в формате BMP, размером 17 × 31 точек, представляющая собой матрицу 51 × 31 байт, таким образом входной слой сети (X на рис.1) состоит из 51 × 31 = 1581 нейронов. Размер первого слоя равен размеру входного вектора X. Размер второго слоя определяет емкость памяти системы, в данном случае - 10 нейронов.

Рис.2: результаты работы классификатора
 image   type   cluster 
  new   0
  new   1
  new   2
  new   3
  new   4
  new   5
  new   6
  new   7
  new   8
  new   9
 image   type   cluster 
  old   0
  old   1
  old   2
  old   3
  old   4
  old   5
  old   6
  old   7
  old   8
  old   9
 image   type   cluster 
  old   0
  new   all busy
  old   2
  old   3
  new   all busy
  old   5
  old   6
  new   all busy
  old   8
  old   9

Данная реализация классификатора показала способность к обобщению немного хуже двухслойного перцептрона. Однако, она обладает способностью отделять новые образы от искажённых старых (тех, что уже предъявлялись), а так же ART-1 (в отличии от перцептронов) способна постоянно (быстро) обучаться, не "забывая" при этом старые образы.

В программе используется библиотека для работы с картинками GdkPixbuf v.2.

Исходные тексты программы [ здесь ].


Литература

1
Grossberg S. Competitive learning: From interactive activation to adaptive resonance // Cognitive Science N11/1987, p.23-63 - http://www.cns.bu.edu/Profiles/Grossberg/

2
Сергей А. Терехов Лекции по теории и приложениям искусственных нейронных сетей - http://alife.narod.ru/lectures/neural/Neu_index.htm

3
С.Гроссберг Внимательный мозг // Открытые системы, N4/1997 - http://www.osp.ru/os/1997/04

4
James A.Freeman, David M.Skapura Neural networks : algorithms, applications, and programming techniques. - Addison-Wesley Publishing Company, 1991, ISBN 0-201-51376-5

5
В.А.Головко, под ред.проф.А.И.Галушкина Нейронные сети: обучение, организация и применение. - Москва : ИПРЖР, 2001



Evgeny S. Borisov
2009-10-08
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.