Классификатор на основе многослойной нейронной сети.
Е.С.Борисов
четверг, 20 октября 2005 г.
В этой работе построен классификатор распознающий картинки с цифрами от
0 до
9.
Для реализации классификатора используется трёхслойная нейронная
сеть [
1] (рис.
1).
На вход нейронной сети подаётся картинка в формате BMP, размером
17 x 31 точек, представляющая собой матрицу 51 x 31 байт,
таким образом входной (или распределительный) слой сети состоит из
51 x 31 = 1581 нейронов.
Скрытый и выходной слой нейронной сети содержат по 10 нейронов каждый.
На выходе получаем вектор y(y0...y9) .
Номер j , для которого
max(y)=yj,
т. е. выход yj имеет максимальную
активность, соответствует номеру класса входного образца.
Схема искусственной нейронной сети для классификатора представлена на рис.1.
Состояние нейрона i определим следующим образом:
|
(1) |
В качестве функции активации будем использовать сигмоид:
Прежде чем классификатор начнет работать его необходимо обучить на
множестве учебных примеров, которое представляет собой множество пар -
(картинка, выход сети). В качестве алгоритма обучения используется
метод обратного распространения
[1,2].
Весовые коэффициенты изменяются по следующему правилу:
wij[n](t+1)=
wij[n](t)
- a *
ej[n] *
yj[n] *
(1-yj[n]) *
yi[n-1]
|
(3) |
где
- yj[n] - выход нейрона j слоя n ;
- wij[n] - весовой коэффициент синаптической связи, соединяющей
нейрон i слоя n-1
нейрон j слоя n;
- a - коэффициент скорости обучения;
- ej[n] - ошибка нейрона j слоя n;
- - для выходного слоя сети (n=2):
здесь tj - идеальный выход сети
- - для скрытого обрабатывающего слоя сети (n=1):
|
(5) |
Так же необходимо определить :
- Ek - ошибка сети на k-том образце
|
(6) |
- E - максимальная ошибка сети
|
(7) |
- R=0.01 - допустимая максимальная ошибка сети
Алгоритм обучения нейронной сети построен следующим образом:
- Инициализировать матрицы весов случайными значениями на отрезке
[ -0.05 , 0.05 ].
- Последовательно пропустить через нейронную сеть все примеры из учебной выборки,
вычислить максимальную ошибку сети E по (7).
- Если максимальная ошибка E меньше допустимой максимальной ошибки R то конец работы.
- В случайном порядке пропустить через нейронную сеть все примеры из учебной выборки.
Для каждого входа:
- 4.1. Вычислить выход каждого нейрона сети y[n] (фаза прямого распространения сигнала).
- 4.2. Послойно вычислить ошибку e[n] по (4) и (5) (фаза обратного распространения сигнала).
- 4.3. Используя ошибку e[n] и значения выходов всех слоёв
y[n], скорректировать веса сети
wij[n] по (3)
- Перейти на п.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
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.