Е.С.Борисов
воскресенье, 23 октября 2005 г.
В этой работе построен классификатор распознающий картинки с цифрами от 0 до 9 . Для реализации классификатора используется нейронная сеть Хемминга.
Искусственная нейронная сеть Хемминга (рис. 1 ) была предложена в 1987 г. Р. Липманом [ 1 , 2 ]. Она представляет собой сеть с двумя обрабатывающими слоями: первый слой - слой Хемминга, второй слой - немного изменённая сеть Хопфилда .
На вход нейронной сети подаётся картинка в формате BMP , размером 17 x 31 точек, представляющая собой матрицу 51 x 31 байт, таким образом входной (или распределительный) слой сети (слой 0 на рис. 1 ) состоит из 51 x 31 = 1581 нейронов.
Размерность скрытого слоя ( слой 1 на рис. 1 ) определяется количеством идеальных образцов, хранимых сетью, т.е. 10 нейронов. Размерность выходного слоя ( слой 2 на рис. 1 ) равна размерности скрытого слоя нейронной сети, т.е. так же 10 нейронов.
На выходе получаем вектор y(y 0 ...y 9 ) . Номер j , для которого y j [2] > 0 , соответствует номеру класса входного образца.
Первый слой - слой Хемминга, представляет собой нейронную сеть с прямыми связями. Этот слой вычисляет меру подобия (расстояние Хемминга) между всеми эталонными образцами, хранящимися в сети, и текущим входом сети. Расстояние Хемминга это количество отличающихся компонент во входном и эталонном векторах.
Для этого слоя используется линейная функция активации ( y i [1] = s i [1] ). Состояние и выходное значение нейрона i слоя 1 определяется следующим образом:
где
Второй слой это сеть Хопфилда , она используется для разрешения конфликтов, когда входной вектор оказывается похож по Хеммингу на более чем один идеал.
Начальное состояние нейронов слоя 2 определяется выходом первого слоя:
Отношение переходов между состояниями нейронов слоя 2 определяется следующим образом:
где
Легко видеть, что отношение переходов ( 1 ) эквивалентно обычному определению состояния нейрона (сумма взвешенных входов) с постоянной матрицей весов( 2 ).
В качестве функции активации слоя 2 будем использовать следующую функцию :
Весовые коэффициенты слоя 1 определяются следующим образом:
где
Весовые коэффициенты слоя 2 фиксированы отношением переходов( 1 ).
Алгоритм обучения нейронной сети сводится к начальной инициализации матрицы весов слоя 1 по ( 3 ).
В этом разделе представлена реализация, описанной выше модели классификатора, который работает с картинками в формате BMP.
На вход классификатора подаются картинки размером 17 x 31 точек, на выходе получаем - номер класса, к которому принадлежит входная картинка. Такой классификатор обладает хорошими способностями к обобщению, может корректно распознавать даже сильно искаженные и зашумленные картинки, к тому же, в отличии от классификатора на основе многослойной нейронной сети , он не требует идеальных выходных векторов и длительного процесса обучения. В программе используется библиотека для работы с картинками GdkPixbuf v.2 . Результат работы программы на рис. 2 .
Реализация в системе Octave [ здесь ].