Е.С.Борисов
воскресенье, 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(y0...y9) . Номер j , для которого yj[2]> 0, соответствует номеру класса входного образца.
Первый слой - слой Хемминга, представляет собой нейронную сеть с прямыми связями. Этот слой вычисляет меру подобия (расстояние Хемминга) между всеми эталонными образцами, хранящимися в сети, и текущим входом сети. Расстояние Хемминга это количество отличающихся компонент во входном и эталонном векторах.
Для этого слоя используется линейная функция активации ( yi[1] = si[1] ). Состояние и выходное значение нейрона i слоя 1 определяется следующим образом:
где
Второй слой это сеть Хопфилда, она используется для разрешения конфликтов, когда входной вектор оказывается похож по Хеммингу на более чем один идеал.
Начальное состояние нейронов слоя 2 определяется выходом первого слоя:
Отношение переходов между состояниями нейронов слоя 2 определяется следующим образом:
где
Легко видеть, что отношение переходов (1) эквивалентно обычному определению состояния нейрона (сумма взвешенных входов) с постоянной матрицей весов(2).
В качестве функции активации слоя 2 будем использовать следующую функцию :
Весовые коэффициенты слоя 1 определяются следующим образом:
где
Весовые коэффициенты слоя 2 фиксированы отношением переходов(1).
Алгоритм обучения нейронной сети сводится к начальной инициализации матрицы весов слоя 1 по (3).
В этом разделе представлена реализация, описанной выше модели классификатора, который работает с картинками в формате BMP.
На вход классификатора подаются картинки размером 17 x 31 точек, на выходе получаем - номер класса, к которому принадлежит входная картинка. Такой классификатор обладает хорошими способностями к обобщению, может корректно распознавать даже сильно искаженные и зашумленные картинки, к тому же, в отличии от классификатора на основе многослойной нейронной сети, он не требует идеальных выходных векторов и длительного процесса обучения. В программе используется библиотека для работы с картинками GdkPixbuf v.2. Результат работы программы на рис.2.