Ньейн Эй

Научный руководитель – , к. т.н., доцент

Московский инженерно-физический институт (государственный университет)

нейронная сеть для распознавания образов

Требуется создать нейронную сеть для распознавания 10 символов цифр 0-9. В качестве датчика предполагается использовать стандартное поле, в котором выполняется оцифровка каждого символа. В результате каждый символ будет представлен шаблоном размера 5*7.

Нейронная сеть

На вход сети поступает вектор входа с 35 элементами; вектор выхода содержит 10 элементов, только один из которих равен 1, а остальные -0. Правильно функционирующая сеть должна ответить вектором со значением 1 для элемента, соответствующего номеру символа.

Каждый нейрон может принимать одно из двух состояний (+1 или -1) [1]. Значение состояния нейрона будет определяться следующим уравнением:

Xi = f ( Si )

Si = S Xj * wij

f ( S ) = { 1, если S ³ 0-1, если S < 0

Архитектура сети

Для работы нейронной сети требуется 35 входов и 10 нейронов в выходном слое. Для решения задачи выберем нейронную сеть с одним слоем нейронов. Для программной реализации данной модели нейросети использована программа, написанная на языке С из [2]. Структура данных для нее выглядит следующим образом :

typedef struct { /* слой сети: */

int Units; /* - количество нейронов в этом слое */

float* Activation; /* - активация нейрона i */

int* Output; /* - выход нейрона i */

float* Error; /* - ошибка нейрона i */

float** Weight; /* - веса связи к нейрону i */

} LAYER;

НЕ нашли? Не то? Что вы ищете?

typedef struct { /* сеть: */

LAYER* InputLayer; /* - слой входа */

LAYER* OutputLayer; /* - слой выхода */

float Eta; /* - скорость изучения */

float Error; /* - полная ошибка сети */

float Epsilon; /* - ошибка закончить обучение */

} NET;

Процедура обучения

Сеть обучена с данным массивом входов с помощью процедуры обратного распространения.

Wt+1 = Wt + DW

DW = h * Error * Output,

где h-это скорость изучения.

Процесс обучения продолжается, пока ошибка не становится ниже предоприделенной заранее величины.

Обучающий алгоритм для нейронной сети выглядит следующим образом[3].

Шаг 1. Инициализировать веса. Установить значение коррекции h.

Шаг 2. Пока не выполнятся условия останова, выполнять шаги 4-7.

Шаг 3. Для каждой пары x : t, выполнять шаги 4 – 5.

Шаг 4. Вычислить значение входа нейрона:

y = b+S xi * wi

Шаг 5. Изменить значение смещения и весов:

b_new=b_old+ h (t-y). wi_new = wi_old+ h (t-y_in) xi.

Шаг 6. Вычислить значение общей ошибки:

E = S p=1 to m [( Si=1 to n ( xi(p) – t(p) )]2

Шаг 7. Условия останова. Если значение общей ошибки больше не меняется, тогда стоп, в противном случае – продолжать.

Выводы

1.  Рассмотрены результаты практической реализации задачи распознавания образов с помощью нейросети.

2.  Цель работы состоит в том, чтобы классифицировать изображения цифр от 0 до 9, в соответствующие классы.

3.  Экспериментальное исследование показало, что из-за ограниченных возможностией нейросети с одним слоем, сеть распознает только точные образцы цифр.

Список литературы

1.  С. Короткий. Нейронные сети: основные положения (www. *****/~stasson/neuroe. html)

2.  Кастен Кутза. Нейронные сети в ваших кончиках пальца( Neural Networks at your Fingertips ) (www. /CapeCanaveral/1624/)

3.  Адаптивный линейный нейрон. (Институт транспорта и связи им. Ломоносова, Департамент компьютерных наук) ( www. ai. tsi. lv/ru/neuro/neuro_files. html)