Классификатор на основе однослойной нейронной сети.
Е.С.Борисов
вторник, 18 октября 2005 г.
В этой работе построен классификатор распознающий картинки с цифрами
от 0 до 9.
Для реализации классификатора используется однослойная нейронная сеть.
Классификатор представляет собой однослойную нейронную сеть(персептрон) [1,2]
из 10 обрабатывающих нейронов (рис.1).
Рисунок 1: однослойная нейронная сеть (персептрон)
|
На вход нейронной сети подаётся слово X(x0 ... xn) где
xi=1 или -1,
описывающее образ для обработки.
На выходе получаем слово Y(y0 ... y9) где
yi=1 или -1.
Номер j , для которого выход yj=1 , соответствует номеру класса входного
образца.
Состояние нейрона
i определим следующим образом:
|
(1) |
В качестве функции активации будем использовать пороговою функцию с порогом T=0 :
|
(2) |
В качестве метода обучения используется
дельта-правило Видроу-Хоффа
[
2,
3]
(обучение "с учителем").
wij(t+1)=wij(t)+ a
* xj * eik
|
(3) |
где
- wij - весовой коэффициент связи i -того нейрона с j-тым входом
- a=0.001 - коэффициент скорости обучения
- xj - j-тый вход сети
- eik - ошибка нейрона i на k-том образце
здесь si - состояние (1) нейрона i,
dik - верный выход нейрона i на k-том образце
Так же необходимо определить :
-
Ek - ошибка сети на k-том образце
|
(5) |
- E - максимальная ошибка сети
|
(6) |
- R=0.0001 - допустимая максимальная ошибка сети
Алгоритм обучения нейронной сети построен следующим образом:
- Инициализировать матрицу весов случайными значениями на отрезке [ -0.05 , 0.05 ].
- Пропустить через сеть все образцы из множества учебных примеров и рассчитать ошибку сети E по (6).
- Если ошибка E меньше допустимой максимальной ошибки R то конец работы.
- В случайном порядке подать на вход сети все образцы из множества учебных примеров, для каждого образца k и выхода сети yk рассчитать ошибку ek по (4) и скорректировать веса w по (3).
- перейти на п.2
В этом разделе представлены две реализации, описанной выше модели
классификатора, которые отличаются размерностью сети. Первый вариант
- простой, работает с фиксированным набором входных паттернов,
представленных в текстовом виде. Второй вариант - работает с картинками
в формате BMP. На вход классификатора подается изображение цифр
от 0 до 9
, на выходе получаем слово
Y(y0 ... y9) где
yi=1 или -1.
Номер j , для которого выход yj=1 , соответствует номеру класса входного
образца.
Размерность входного изображения
5 x 7 точек, т.е. всего 5 x 7 = 35
входов сети.
- Результат работы программы на рис.2.
Рисунок 2:
Результат работы первой программы
|
- Исходные тексты программы : [ C++ ] [ Java ]
На вход классификатора подаются картинки в формате
BMP, размером
17 x 31 точек, представляющие собой матрицы
51 x 31 байт,
таким образом входной (или распределительный) слой сети состоит из
51 x 31 = 1581
нейронов. В программе используется библиотека для
работы с картинками
GdkPixbuf v.2.
- 1
- F.Rosenblatt Principles of Neurodinamics. - New York: Spartan Books,1962. Русский перевод: Ф.Розенблатт Принципы нейродинамики. - Москва : Мир, 1965.
- 2
- В.А.Головко, под ред.проф.А.И.Галушкина Нейронные сети: обучение, организация и применение. - Москва : ИПРЖР, 2001
- 3
- В.Widrow, M.Hoff Adaptive switching circuits. // IRE WESCON Convention Record, part 4, pp. 96-104. New York: Institute of Radio Engineers, 1960.
Evgeny S. Borisov
2005-10-21
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.