Лабораторная работа №1


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
Лабораторная работа №
1


Модель нейрона.
Графическая визуализация вычислений в
системе MATLAB
.
Персептроны и однослойные персептронные
нейронные сети


Цель работы:

1. Изучение
структурных схем модели нейрона и средств системы

MATLAB, используемых для построения графиков

функций активации
нейрона.


2.
Изучение модели нейрона персептрона и архитектуры
персептронной однослойной нейронной сети; создание и исследование
моделей персептронных нейронных сетей в системе MATLAB


Простой

нейрон


Элементарной ячейкой нейронной сети является
нейрон
. Структура
нейрона с единственным скалярным входом показана на рис
унке
1,
а
.


Вход Нейрон без смещения

Вход Нейрон со смещением


Рис
унок

1

Скалярный входной сигнал
p
умножается на скалярный
весовой
коэффициент w
, и результирующий взвешенный вход
w*p

является

аргументом
функции активации нейрона f
, которая порождает ска
лярный
выход
а
.

Нейрон, показанный на рис
унке

1,
б
, дополнен скалярным
смещ
ением

b
.

Смещение суммируется со взвешенным входом
w*p

и
приводит к

сдвигу аргумента функции
f

на величину
b
. Действие смещения
можно свести к схеме взвешивания, если представить, что нейрон имеет

второй входной сигнал со значением, равным 1
(
b
*1)
. Вход
n
функ
ции
активации нейрона по
-
прежнему остается скалярным и равным

сумме
взвешенного входа и смещения
b
. Эта сумма
(
w*p + b*
1)

явля
ется
аргументом функции активации
f
, а выходом функции активации является
сигнал
а
. Константы
w
и
b

являются скалярными пара
метрами нейрона.
Основной прин
цип работы нейронной сети состо
ит в настройке параметров
нейрона таким образом, чтобы поведение

сети соответствовало некоторому
желаемому поведению. Регулируя

веса и параметры смещения, можно
обучить сеть выполнять конкретную
работу; возможно также, что сеть сама
будет корректировать свои параметры, чтобы достичь требуемого результата.

Уравнение нейрона со смещением имеет вид

a = f
(
w*p + b*
1).





(1)

К
ак уже отмечалось, смещение
b



настраиваемый скалярный параметр
нейрона, который не является входом. В этом случае
b



вес,

а константа 1,
которая управляет смещением, рассматривается как

вход и может быть
учтена в виде линейной комбинации векторов

входа

n
=











=
w
*
p
+
b
*1.


Нейрон с векторным входом


Нейрон с одним вектором входа
p

с
R

элементами
p
1
,
p
2
,…,
p
R

показан
на рис
унке
2. Здесь каждый элемент входа умножается на веса

w
11
,
w
12
,…,
w
1
R

соответственно,
и взвешенные значения передаются

на сумматор. Их сумма
равна
скалярному произведению вектора
строки
W
на вектор
-
столбец
входа

p
.

Нейрон имеет смещение
b
, которое суммируется со взвешенной

суммой входов. Результирующая сумма


n

=
w
11
p
1

+
w
12

p
2

+… +
w
1
R

p
R

+
b
*1

или

n

=
w
11
p
1

+
w
12

p
2

+… +
w
1
R

p
R

+
b



Вход Нейрон с векторным входом


Рис
унок
2

и служит аргументом функции активации
f
. В нотации языка

MATLAB это
выражение записывается так:

n
=
W
*
p
+
b
.

Структура нейрона, показанная выше,
является развернутой. При

рассмотрении сетей, состоящих из большого числа нейронов, обычно

используется укрупненная структурная схема нейрона (рис
унок

3).


Рис
унок
3

Вход нейрона изображается в виде темной вертикальной черты,

под
которой указывается количество элементов входа
R
. Размер вектора входа
p
указывается ниже символа
p
и равен
R
x1.

Вектор входа умножается на вектор
-
строку
W
длины
R
. Как и

прежде,
константа 1 рассматривается как вход, который умножается

на скалярное
см
ещение
b
.

Входом
n
функции активации нейрона служит сумма смещения
b

и
произведение
W
*
p
. Эта сумма преобразуется функцией активации

f
, на
выходе которой получаем выход нейрона
а
, который в данном

случае
является скалярной величиной.

Структурная схема, прив
еденная на рис
унке

3, называется
слоем

сети
.
Слой характеризуется
матрицей весов
W
, смещением
b
, опе
рациями
умножения
W
*
p
, суммирования и функцией активации
f
.

Вектор входов
p
обычно не включается в характеристики слоя.

Каждый раз, когда используется
сокращенное обозначение сети,

размерность матриц указывается под именами векторно
-
матричных

переменных (см. рис
унок

3). Эта система обозначений поясняет строение

сети и связанную с ней матричную математику.


Функции активации


Фу
нкции активации (передаточн
ые функции) нейрона могут

иметь
самый различный вид. Функция активации
f
, как правило, при
надлежит к
классу сигмоидальных функций, которые имеют две горизонтальные
асимптоты и одну точку перегиба, с аргументом функции
n
(входом) и
значением функции (выходом)
a
.

Рассмотрим три наиболее распространенные формы функции
активации.

1.
Единичная функция активации с жестким ограничением
hardlim

Эта функция описывается соотношением
a
= hardlim

(
n
) = 1(
n
) и

показана на рис
унке

4.


Рис
унок

4

Она равна 0, если
n

0
, и равна 1, если
n

0
.

Чтобы построить график этой функции в диапазоне значений входа

о
т

5 до +5, необходимо ввести следующие операторы языка

MATLAB в
командном окне:



n =
-
5

:

0.1

:

5;


plot

(n,

hardlim

(n),

'b+:');


2.
Линейная функция активации
purelin

Эта функция описывается соотношением
a
= purelin(
n
) =
n
и по
казана
на рис
унке
5.


Рис
унок

5

Чтобы построить график этой ф
ункции в диапазоне значений вхо
да

от

5 до +5, необходимо ввести следующие операторы
языка

MATLAB

в
командном окне:



n=
-
5

:

0.1

:

5;


plot

(n,

purelin

(
n),'b+:');


3.
Логистическая функция активации
logsig

Эта функция описывается соотношением
a
= logsig(
n
) =

1/(1 + exp(
-
n
)) и
показана на рис
унке
6.


Рис
унок

6

Данная функция принадлежит к классу сигмоидальных функций,

и ее
аргумент может принимать любое значение в диапазоне от



до

+

, а
выход изменяется в диапазоне от 0 до 1. Благодаря свойству

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

Чтобы построить график этой функции в диапазоне значений входа

от

5 до +5, необходимо ввести следующие операторы языка

MATLAB
в
командном окне:


n=
-
5

:

0.1

:

5;

plot

(n,

logsig

(n),'b+:');


На укрупненной структурной схеме для обозначения типа функции
активации применяются спец
иальные графические символы; не
которые из
них приведены на рис
унке

7, где
а


ступенчатая,
б


линейная,
в


логистическая.


Рис
унок

7


Построение
графиков функций одной переменной

в системе MATLAB


Для построения графика функции одной переменной в системе

MATLAB

используется оператор plot. При этом графики строятся в

отдельных масштабируемых и перемещаемых окнах. Например, для

построения графика фун
кции sin
x
достаточно вначале задать диапазон и шаг
изменения аргумента, а затем использовать оператор plot

(
рис
унок

8):



x=
-
5

:

0.1

:

5;


plot

(x,

sin

(x))



Рис
унок

8

Оператор plot является мощным инструментом для построения

графиков функций
одной переменной. Он позволяет строить графики

сразу
нескольких функций и имеет различные формы, синтаксис которых можно
узнать, воспользовавшись командой help plot.

После изучения функций активации перейдем к рассмотрению
персептрона.

Персептроном называе
тся простейшая нейронная сеть, веса и
смещения которого могут быть настроены таким образом, чтобы решить

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


Архитектура персептрона


Нейрон персептрона


Нейрон, используемый в модели персептрона, имеет ступенчатую

функцию активации hardlim с жесткими ограничениями (рис
унок

9
).


Вход

Нейрон персептрона


Рис
унок 9

Каждое значение элемента вектора входа персептрона умножено

на
соответствующий вес
w
1
j
, и
сумма полученных взвешенных эле
ментов
является входом функции активации.

Если вход функции активации
n

0, то
нейрон персептрона
возвращает

1, если
n

0, то 0.

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


Рис
унок

10

Пространство входов делится на две области разделяющей линией
L
,
которая для двумерного случая задается уравнением

W
т
p
+
b
= 0






(1)

Эта линия перпендикулярна к вектору весов
w
и смещена на
величину

b
. Векторы входа выше линии
L
соответствуют положительному
потенциалу нейрона, и, следовательно, выход персептрона для

этих векторов
будет равен 1; векторы входа ниже линии
L
соответ
ст
вуют выходу
персептрона, равному

0.

При изменении значений смещения и вес
ов граница линии
L
изменяет
свое положение.

Персептрон без смещения всегда формирует разделяющую линию,
проходящую через начало координат; добавление смещения

формирует
линию, которая не проходит через начало координат, как

это показано на
рис
унке 10
.

В сл
учае, когда размерность вектора входа превышает 2,

т.е. входной
вектор
Р
имеет более 2 элементов, разделяющей границей будет служить
гиперплоскость.


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


Персептрон состоит из единственного слоя, включающего
S
нейронов,
как это показано на
рис
унке

11
,

а
и
б
в виде развернутой и укрупненной
структурных схем соответственно; веса
w
ij



это коэффициенты передачи от
j
-
го входа к
i
-
му нейрону.

Уравнение однослойного персептрона имеет вид

a
=
f
(
Wp
+
b
).







Входы

Слой нейронов



Вход Слой 1


Рис
унок

11


Модель персептрона


Для формирования модели однослойного персептрона в системе

MATLAB предназначена функция newp

net = newp(PR, S)

со следующими входными аргументами:
PR


массив минимальных

и
максимальных значений для
R
элементов входа размера
R
x2;

S


число
нейронов в слое.

Например, функция

net = newp([0 2], 1);

создает персептрон с одноэлементным входом и одним нейроном;

диапазон
значений входа


[0 2].

В качестве функции активации персептрона по умолчанию
используется функция hardlim.


Моделирование персептрона


Рассмотрим однослойный персептрон с одним двухэлементным

вектором входа, значения элементов которого изменяются в диапазоне


от


2

до 2 (
p
1

= [

2 2],
p
2

= [

2 2], число нейронов в сети
S
= 1):



clear, net = newp

([
-
2 2;
-
2 2],

1);


%Создание персептрона net


По умолчанию веса и смещение равны нулю, и для того, чтобы

установить желаемые значения, необходимо применить следующие

операторы:

net.IW

{1,1} = [
-
1 1]; % Веса w
11
=
-
1; w
12

= 1

net.b

{1} = [1]; % Смещение b = 1

Запишем уравнение (1) в развернутом виде для данной сети:















+
b
1=0,















+1=0.

В этом случае разделяющая линия имеет вид

L
:
-
p
1 +
p
2 + 1 = 0

и соответствует линии
L
на рис
унке

2.

Определим реакцию сети на входные векторы
p
1

и
p
2
, расположенные
по разные стороны от разделяющей линии:


p1 = [1; 1];


a1 = sim(net,p1
)


% Моделирование сети net с входным вектором p1


a1 =1


p2 = [1;
-
1];


a2 = sim(net,p2)


% Моделирование сети net с входным вектором p2

a2 =0


Персептрон правильно классифицировал эти два вектора.

Заметим, что можно было бы ввести
последовательность двух

векторов
в виде массива ячеек и получить результат также в виде

массива ячеек


p3 = {[1; 1] [1;
-
1]}

a3 = sim(net,p3)


% Моделирование сети net при входном сигнале p3

p3 = [2x1 double] [2x1 double]

a3 =

[1]

[0]


Инициализация параметров


Для однослойного персептрона в качестве параметров нейронной

сети
в общем случае выступают веса входов и смещения. Допустим,

что создается
персептрон с двухэлементным вектором входа и одним

нейроном


clear
,

=
newp

([
-
2 2;
-
2 2]
,1);


Запросим характеристики весов входа



net.inputweights

{1, 1}


ans =


delays: 0


initFcn: 'initzero'


learn: 1


learnFcn: 'learnp'


learnParam: [ ]


size: [1 2]


userdata
: [1
x
1
struct
]


weightFcn
: '
dotprod
'

Из этого списка следует, что в качестве функции инициализации

по
умолчанию используется функция initzero, которая присваивает

весам входа
нулевые

значения. В этом можно убедиться, если извлечь значения
элементов матрицы весов и смещения:



wts = net.IW {1,1}, bias = net.b {1}


wts

= 0
0


bias

= 0


Теперь переустановим значения элементов матрицы весов и смещения:



.
IW

{1,1} = [3, 4];
.
b

{1} = 5;


wts

=
.
IW

{1,1},
bias

=
.
b

{1}


wts

= 3


4


bias

= 5


Для того чтобы вернуться к первоначальным установкам параметров
персептрона, предназначена функция init:



net = init (net); wts = net.IW {1,1},
bias = net.b {1}


wts

= 0

0


bias

= 0


Можно изменить способ, каким инициализируется персептрон с

помощью функции init. Для этого достаточно изменить тип функций

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

функцией
инициализации rands, которая устанавливает случайные

значения параметров
персептрона:


% Задать функции инициализации весов и смещений


net.inputweights {1,1}. initFcn = 'rands';


net.biases {1}.
initFcn = 'rands';

% Выполнить инициализацию ранее созданной сети с новыми функциями


net = init(net);


wts = net.IW {1,1}, bias = net.b {1}


wts

=
-
0.1886

0.8709


bias

=
-
0.6475


Видно, что веса и смещения выбраны случайным образом.






Порядок выполнения работы


1. Для заданного преподавателем варианта (таблица) разработать

структурную схему персептронной нейронной сети.

2.
Разработать алгоритм создания и моделирования персептронной
нейронной сети.

3. Реализовать разработанный алгоритм

в системе MATLAB.

4. Определить параметры созданной нейронной сети (веса и смещение)
и проверить правильность работы сети для последовательнос
ти входных
векторов
.

5.
Переустановить значения матриц весов и смещений с помощью

рассмотренных функций инициализ
ации.

6.
Построить графики функций активации в заданных диапазонах

значений
.

7.
Используя функцию plot, построить графики всех заданных

функций,
согласно варианту, в одном графическом окне.

8
. Составить отчет, который должен содержать:



цель лабораторной
работы;



структурную схему нейронной сети;



алгоритм, текст программы и график
и
функций;



выводы.


Номер


варианта

Количество

входов

Диапазоны

значений
входов

Количество

нейронов в
слое

Имя

функции

1

2


9…+9

3

hardlim

2

2


7…+7

2

hardlim
s

3

2


5…+5

3

purelin

4

2


3…+3

2

poslin

5

2


6…+6

3

satlin

6

2


3…+3

2

satlins

7

2


1…+1

3

radbas

8

2


4…+4

2

tribas

9

2


2…+2

3

logsig

10

2


8…+8

2

tansig






Приложенные файлы

  • pdf 1206453
    Размер файла: 658 kB Загрузок: 0

Добавить комментарий