Главная
Лабораторная работа №1
Лабораторная работа №2
Лабораторная работа №3
Лабораторная работа №4
Лабораторная работа №5
Скачать архив

Лабораторная работа №5.

«Моделирование и обучение нейронной сети, типа перцептрон»





Цель: изучить модель и принцип функционирования нейронной сети, типа перцептрон.

Теория:

Формальные нейроны могут объединяться в сети различным образом. Самым распространенным видом сети стал многослойный перцептрон.

Сеть состоит из произвольного количества слоев нейронов. Нейроны каждого слоя соединяются с нейронами предыдущего и последующего слоев по принципу "каждый с каждым". Первый слой (слева) называется сенсорным или входным, внутренние слои называются скрытыми или ассоциативными, последний (самый правый, на рисунке состоит из одного нейрона) — выходным или результативным. Количество нейронов в слоях может быть произвольным. Обычно во всех скрытых слоях одинаковое количество нейронов.

Обозначим количество слоев и нейронов в слое. Входной слой: NI нейронов; NH нейронов в каждом скрытом слое; NO выходных нейронов. x — вектор входных сигналы сети, y - вектор выходных сигналов.

Существует путаница с подсчетом количества слоев в сети. Входной слой не выполняет никаких вычислений, а лишь распределяет входные сигналы, поэтому иногда его считают, иногда — нет. Обозначим через NL полное количество слоев в сети, считая входной.

Чтобы построить многослойный перцептрон, необходимо выбрать его параметры. Чаще всего выбор значений весов и порогов требует обучения, т.е. пошаговых изменений весовых коэффициентов и пороговых уровней.

Общий алгоритм решения:


      1. Определить, какой смысл вкладывается в компоненты входного вектора x. Входной вектор должен содержать формализованное условие задачи, т.е. всю информацию, необходимую для получения ответа.
      2. Выбрать выходной вектор y таким образом, чтобы его компоненты содержали полный ответ поставленной задачи.
      3. Выбрать вид нелинейности в нейронах (функцию активации). При этом желательно учесть специфику задачи, т.к. удачный выбор сократит время обучения.
      4. Выбрать число слоев и нейронов в слое.
      5. Задать диапазон изменения входов, выходов, весов и пороговых уровней, учитывая множество значений выбранной функции активации.
      6. Присвоить начальные значения весовым коэффициентам и пороговым уровням и дополнительным параметрам (например, крутизне функции активации, если она будет настраиваться при обучении). Начальные значения не должны быть большими, чтобы нейроны не оказались в насыщении (на горизонтальном участке функции активации), иначе обучение будет очень медленным. Начальные значения не должны быть и слишком малыми, чтобы выходы большей части нейронов не были равны нулю, иначе обучение также замедлится.
      7. Провести обучение, т.е. подобрать параметры сети так, чтобы задача решалась наилучшим образом. По окончании обучения сеть готова решить задачи того типа, которым она обучена.
      8. Подать на вход сети условия задачи в виде вектора x. Рассчитать выходной вектор y, который и даст формализованное решение задачи.

Задание:

Необходимо разработать программу, имитирующую работу нейронной сети, типа перцептрон, который должен распознавать образы.
     Структура сети:

Первая матрица размера nxn представляет собой матрицу рецепторов. Вторая матрица размера nxn – это матрица нейронов. От каждого рецептора выходит v возбудительных связей и t тормозных связей (в какой нейрон они будут входить определяется случайным образом). Каждый нейрон имеет одну выходную связь, все эти связи приходят на сумматор.

Входные данные:


     • Размер матриц n (матрицы квадратные, одинакового размера, максимальный размер = 10)
     • Порог, одинаковый для всех нейронов матрицы - p
     • Количество тормозных t и возбудительных v связей, исходящих из каждого элемента рецепторной матрицы (количество связей каждого типа не более 10).
     • Веса возбудительных (), тормозных () и выходных() связей
     • Приращение весов связей (, , )
     • Количество шагов обучения - h.
     • Направление связей задается один раз от рецепторов до нейронов и сохраняется на протяжении всей работы программы.

Работа сети:

     1. На матрице рецепторов задается раздражение. В качестве раздражения подается образ представленной в виде матрицы, состоящей из 0 и 1.
     Например: буква «Т» в матрице размера 5х5 будет выглядеть следующим образом:
     2. Все образы должны быть закодированы в матрицу одинакового размера.
     3. Набор образов выбираете в соответствии с вашим вариантом.
     4. Если рецептор возбужден (то есть на него подается 1), то по всем исходящим от него связям поступают сигналы величиной ? и ? (в зависимости от типа связи).
     5. Нейрон суммирует все приходящие на него сигналы по заданным связям. Если получается значение, превышающее значение порога p, то на выходе нейрон выдает сигнал весом ?.
     6. На сумматоре складываются все значения, и выдается окончательный результат.

1 1 1 1 1
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0

Прежде, чем использовать нейронную сеть (по алгоритму описанному выше) ее необходимо обучить.

Обучение НС происходит по правилу Хэбба, которое заключается в увеличение весов связей (входящих и выходящих) активированного нейрона (нейрон, который выдает сигнал). Наращивание весов происходит по следующей формуле:
Х i+1 = Х i+ alpha, где Х i+1 - новый вес связи, X i- вес связи, alpha - приращение веса.

Разрабатываемая вами программа должна работать в двух режимах: режим обучения и режим работы.

Для обучения необходимо закодировать набор образов в соответствии с вариантом. Каждый образ подается на рецепторную матрицу h раз. Для каждого образа обучение выполняется по правилу Хэбба.

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

Вариант
Набор образов
Новый образ
1 В, Д, О, Л, И, З
Й
2 3, 5, 0, 9, 8
В
3 Ц, П, Н, Е, В
Ф
4 I, J, L, T, E
X
5 H, U, R, B, N
D
6 М, W, B, N, Ж
А
7 A, Г, С, Е, И
U
8 L, К, У, Х, F
Б
9 3, 6, 5, 9, 0
8
10 T, O, Л, N, П
U
11 Б, В, С, Ь, Я
О
12 L, D, P, O, E
В
13 B, 6, 8, 5, Б
Ь
14 Н, Й, С, Л, И
К
15 Н, U, K, R, B
P