на главную ] 

Классификатор на основе многослойной нейронной сети.

Е.С.Борисов

четверг, 20 октября 2005 г.


В этой работе построен классификатор распознающий картинки с цифрами от 0 до 9. Для реализации классификатора используется трёхслойная нейронная сеть [1] (рис. 1).

1 Модель

На вход нейронной сети подаётся картинка в формате BMP, размером 17 x 31 точек, представляющая собой матрицу 51 x 31 байт, таким образом входной (или распределительный) слой сети состоит из 51 x 31 = 1581 нейронов. Скрытый и выходной слой нейронной сети содержат по 10 нейронов каждый. На выходе получаем вектор y(y0...y9) . Номер j , для которого max(y)=yj, т. е. выход yj имеет максимальную активность, соответствует номеру класса входного образца.

1.1 Параметры сети

Схема искусственной нейронной сети для классификатора представлена на рис.1.

Рисунок 1: Классификатор
Классификатор

Состояние нейрона i определим следующим образом:


\begin{displaymath}
s_i=\sum\limits_{j=0}^{n} x_j\cdot w_{ij}
\end{displaymath} (1)

В качестве функции активации будем использовать сигмоид:


yi=1/(1+e-Si) (2)

1.2 Метод обучения

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


wij[n](t+1)= wij[n](t) - a * ej[n] * yj[n] * (1-yj[n]) * yi[n-1] (3)

где

Так же необходимо определить :


Алгоритм обучения нейронной сети построен следующим образом:

  1. Инициализировать матрицы весов случайными значениями на отрезке [ -0.05 , 0.05 ].

  2. Последовательно пропустить через нейронную сеть все примеры из учебной выборки, вычислить максимальную ошибку сети E по (7).

  3. Если максимальная ошибка E меньше допустимой максимальной ошибки R то конец работы.

  4. В случайном порядке пропустить через нейронную сеть все примеры из учебной выборки.
    Для каждого входа:

    4.1. Вычислить выход каждого нейрона сети y[n] (фаза прямого распространения сигнала).
    4.2. Послойно вычислить ошибку e[n] по (4) и (5) (фаза обратного распространения сигнала).
    4.3. Используя ошибку e[n] и значения выходов всех слоёв y[n], скорректировать веса сети wij[n] по (3)

  5. Перейти на п.2

2 Реализация

В этом разделе представлена реализация, описанной выше модели классификатора, который работает с картинками в формате BMP. Такой классификатор обладает заметно лучшими способностями к обобщению, чем классификатор на основе однослойной нейронной сети, т.е. он может корректно распознавать сильно искаженные картинки.

На вход классификатора подаются картинки размером 17 x 31 точек, на выходе получаем - номер класса, к которому принадлежит входная картинка. В программе используется библиотека для работы с картинками GdkPixbuf v.2.


Литература

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

2
D.E.Rumelhart, G.E.Hinton, R.J.Williams Learning internal representations by error propagation. // In Parallel distributed processing, vol. 1, pp. 318-62. Cambridg, MA: MIT Press, 1986.



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