Классификатор на основе однослойной нейронной сети.
Е.С.Борисов
вторник, 18 октября 2005 г.
В этой работе построен классификатор распознающий картинки с цифрами
от
0
до
9
.
Для реализации классификатора используется однослойная нейронная сеть.
Классификатор представляет собой однослойную нейронную сеть(персептрон) [
1
,
2
]
из
10
обрабатывающих нейронов (рис.
1
).
Рисунок 1:
однослойная нейронная сеть (персептрон)
|
На вход нейронной сети подаётся слово
X(x
0
... x
n
)
где
x
i
=1
или
-1
,
описывающее образ для обработки.
На выходе получаем слово
Y(y
0
... y
9
)
где
y
i
=1
или
-1
.
Номер
j
, для которого выход
y
j
=1
, соответствует номеру класса входного
образца.
Состояние нейрона
i
определим следующим образом:
|
(1)
|
В качестве функции активации будем использовать пороговою функцию с порогом
T=0
:
|
(2)
|
В качестве метода обучения используется
дельта-правило Видроу-Хоффа
[
2
,
3
]
(обучение "с учителем").
w
ij
(t+1)=w
ij
(t)+ a
*
x
j
*
e
i
k
|
(3)
|
где
-
w
ij
- весовой коэффициент связи
i
-того нейрона с
j
-тым входом
-
a=0.001
- коэффициент скорости обучения
-
x
j
-
j
-тый вход сети
-
e
i
k
- ошибка нейрона
i
на
k
-том образце
здесь
s
i
- состояние (
1
) нейрона
i
,
d
i
k
- верный выход нейрона
i
на
k
-том образце
Так же необходимо определить :
-
E
k
- ошибка сети на
k
-том образце
|
(5)
|
-
E
- максимальная ошибка сети
|
(6)
|
-
R=0.0001
- допустимая максимальная ошибка сети
Алгоритм обучения
нейронной сети построен следующим образом:
-
Инициализировать матрицу весов случайными значениями на отрезке
[ -0.05 , 0.05 ]
.
-
Пропустить через сеть все образцы из множества учебных примеров и рассчитать ошибку сети
E
по (
6
).
-
Если ошибка
E
меньше допустимой максимальной ошибки
R
то конец работы.
-
В случайном порядке подать на вход сети все образцы из множества учебных примеров, для каждого образца
k
и выхода сети
y
k
рассчитать ошибку
e
k
по (
4
) и скорректировать веса
w
по (
3
).
-
перейти на п.2
В этом разделе представлены две реализации, описанной выше модели
классификатора, которые отличаются размерностью сети. Первый вариант
- простой, работает с фиксированным набором входных паттернов,
представленных в текстовом виде. Второй вариант - работает с картинками
в формате
BMP
. На вход классификатора подается изображение цифр
от
0
до
9
, на выходе получаем слово
Y(y
0
... y
9
)
где
y
i
=1
или
-1
.
Номер
j
, для которого выход
y
j
=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
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.