Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

UnEncrypted (2)

.pdf
Скачиваний:
9
Добавлен:
30.05.2020
Размер:
706.05 Кб
Скачать

 

 

Лабораторна робота №8

 

Персептрони та одношарові персептронні нейронні мережі

Мета

роботи:

Вивчення основного елементу нейронної мережінейрона,

принципів

побудови

на основі нейрона простої

нейронної мережіперсептрона і

освоєння базових прийомів моделювання персептрона в

середовищі MATLAB.

ЗАГАЛЬНІ ВІДОМОСТІ

Нейрон персептрона. Простий нейрон

Елементарним осередком нейронної мережі єнейрон. Структура нейрона з єдиним скалярним входом показана на мал. 1.

Малюнок 1

Скалярний вхідний сигналр множиться на скалярнийваговий коефіцієнт W, і результуючий зважений вхід W·p є аргументом функції активації нейрона f, яка породжує скалярний вихід а.

Нейрон, показаний на мал. 1, доповнений скалярним зсувом b. Зсув підсумовується із зваженим входом W·p і приводить до зрушення аргументу функції на величинуb. Дію зсуву можна звести до схеми зважування, якщо уявити, що нейрон має другий вхідний

сигнал із значенням, рівним 1 (b·1). Вхід п функції активації нейрона як і раніше залишається скалярним і рівним сумі зваженого входу і зсуву b. Ця сума

(W·p+b*1)

є аргументом функції активації f а виходом функції активації є сигнал а.

Константи W і b є скалярними параметрами нейрона. Основний принцип роботи нейронної мережі полягає в настройці параметрів нейрона ,такщоб поведінка мережі відповідала деякій бажаній поведінці. Регулюючи ваги і параметри зсуву, можна навчити мережу виконувати конкретну роботу; можливо також, що мережа сама коректуватиме свої параметри, щоб досягти необхідного результату.

Рівняння нейрона із зсувом має вигляд

Як вже наголошувалося, зсув b - скалярний параметр нейрона, який не є входом, що настроюється. В цьому випадкуb - вага, а константа 1, яка управляє зсувом, розглядається як вхід і може бути врахована у вигляді лінійної комбінації векторів входу

Нейрон персептрона. Нейрон з векторним входом

Нейрон з одним вектором входам з R елементами р1, р2., pR показаний на мал. 2.

1

Малюнок 2

Тут кожен елемент входу множиться на вагиWlh W12., W1R відповідно, і зважені значення передаються на суматор. Їх сума рівна скалярному твору вектора-рядкаW на вектор-стовпець входу р.

Нейрон має зсувb, яке підсумовується із зваженою сумою входів. Результуюча

сума

або

іслужить аргументом функції активації f.

Унотації мови MATLAB цей вираз записується так:

Входом п функції активації нейрона служить сума зсувуb і твір W·p. Ця сума перетвориться функцією активації f, на виході якої отримуємо вихід нейронаа, який в даному випадку є скалярною величиною.

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

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

Одинична функція активації з жорстким обмеженням hardlim

Ця функція описується співвідношенням а = hardlim(n)= 1(n) і показана на мал. 3.

Малюнок 3

2

Вона рівна 0, якщо n < 0, і рівна 1, якщо 0. Щоб побудувати графік цієї функції в діапазоні значень входу від–5 до +5, необхідно ввести наступних операторів мови MATLAB в командному вікні:

n = -5:0.1:5; plot(n,hardlim(n),'b+:');

Лінійна функція активації purelin

Дана функція описується відношенням a=purelin(n)=n та показана на мал.4.

Малюнок 4

Щоб побудувати графік цієї функції в діапазоні значень входу–5віддо +5, необхідно ввести наступних операторів мови MATLAB в командному вікні:

n = -5:0.1:5; plot(n,purelin(n),'b+:');

Логістична функція активації logsig

Дана функція описується відношенням та показана на мал. 5.

Малюнок 5

Дана функція належить до класу сигмоїдальних функцій, її аргумент може приймати будь-яке значення в діапазоні від – Х до +Х, а вихід змінюється в діапазоні від 0 до 1. Завдяки властивості диференційованості (немає точок розриву) ця функція часто використовується в мережах з навчанням на основі методу зворотного розповсюдження помилки.

Щоб побудувати графік цієї функції в діапазоні значень входу–5віддо +5, необхідно ввести наступних операторів мови MATLAB в командному вікні:

n=-5:0.1:5; plot(n,logsig(n),'b+:');

3

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

Малюнок 6

Нейрон, використовуваний в моделі персептрона, має ступінчасту функцію активації hardlim з жорсткими обмеженнями (мал. 7, використано спрощене зображення нейрона).

Малюнок 7

Кожне значення елементу вектора входу персептрона помножене на відповідну вагу Wij, і сума отриманих зважених елементів є входом функції активації. Якщо вхід функції активації п≥0, то нейрон персептрона повертає 1, якщо п<0, то 0.

Функція активації з жорсткими обмеженнями додає персептрону зда класифікувати вектори входу, розділяючи простір входів на дві області, як це показано на мал. 8, для персептрона з двома входами і зсувом.

Малюнок 8

4

Простір входів ділиться на дві області розділяючою

L,лінієюяка для

двовимірного випадку задається рівнянням

 

Wт·p + b = 0.

 

Ця лінія перпендикулярна до вектора вагівW і зміщена на величинуb. Вектори

входу вище лініїL відповідають позитивному потенціалу нейрона, і,

отже, вихід

персептрона для цих векторів буде рівний1; вектори входу нижче лініїL відповідають виходу персептрона, рівному 0.

При зміні значень зсуву і вагів межа лінії L змінює своє положення.

Персептрон без зсуву завжди формує розділяючу лінію, що проходить через початок координат; додавання зсуву формує лінію, яка не проходить через початок координат. У разі, коли розмірність вектора входу перевищує2, тобто вхідний вектор р має більше 2 елементів, розділяючою межею служитиме гіперплощина.

Персептрон

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

Малюнок 9

Персептрон складається з єдиного шару, включаючого S нейронів, як це показано на мал. 9; ваги Wij - це коефіцієнти передачі від j-го входу до i-го нейрона.

Рівняння одношарового персептрона має вигляд

Архітектура мережі

 

мал. 9, називається шаром

мережі. Шар

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

характеризується

матрицею

вагівW,

зсувом b, операціями

множення W·p,

5

підсумовування і функцією активаціїf. Вектор входів р зазвичай не включається в характеристики шаруючи.

Кожного разу, коли використовується скорочене позначення мережі, розмірність матриць указується під іменами векторно-матричних змінних(див. мал. 9). Ця система позначень пояснює будову мережі і пов'язану з нею матричну математику.

Моделювання персептрона засобами MATLAB

Для формування моделі одношарового персептрона в системі MATLAB призначена функція newp

net = newp(PR, S)

з наступними вхідними аргументами: PR - масив мінімальних і максимальних значень для R елементів входу розміру R 2; S - число нейронів в шарі.

Наприклад, функція net = newp([0 2], 1);

створює персептрон з одноелементним входом і одним нейроном; діапазон значень входу - [0 2].

Як функція активації персептрона за умовчанням використовується функ hardlim.

ВИКОНАННЯ РОБОТИ

Модель нейрона

Для виконання роботи запустіть MATLAB і перейдіть в DEMOS - режим:

Help>Demos>Toolboxes>Neural Networks>

В процесі роботи познайомтеся з простим одновхідним нейроном і з нейроном, що має векторний вхід (декілька входів). Для ознайомлення з простим нейроном виберіть і запустіть приклад

Simple neuron and transfer functions>Run Simple neuron and...

Після запуску прикладу відкриється вікно, показане на мал. 10. У цьому вікні представлена схема нейрона, віртуальні органи для його настройки і графі характеристика нейрона. Змінюючи настройки нейрона і вид функції активації вивчити їх вплив на властивості простого нейрона. Зміна настройок здійснюється переміщенням відповідних движків мишею.

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

Для завершення роботи з прикладом клацніть кнопку Close.

6

Малюнок 10

Для вивчення властивостей нейрона з векторним входом необхідно запусти приклад:

Neuron with vector input>Run Neuron with vector.

Вікно прикладу подібно до попереднього вікна і відрізняється великою кількістю настройок. Вивчити властивості нейрона з векторним входом і вплив настроювань на характеристику нейрона.

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

Вийдіть з Demos-режима і перейдіть в командне вікноMatlab. Якщо у нинішній момент це вікно не відображається на екрані, то набудуйте екран Matlab, використовуючи пункт меню Desktop. Подальша робота виконується в командному вікні шляхо послідовного введення команд і проглядання результатів.

Розглянемо одношаровий персептрон з одним двоелементним вектором входу, значення елементів якого змінюються в діапазоні від–2 до 2 (p1 = [–2 2], p2 = [–2 2], число нейронів в мережі S = 1):

clear, net = newp([-2 2;-2 2],1); %Створення персептрона net

За умовчанням ваги і зсув рівні нулю, і для того, щоб встановити бажані значення, необхідно застосувати наступних операторів:

net.IW{1,1} = [-1 1];

% Ваги w11= -1; w12 = 1

net.b{1} = [1];

% Зсув b = 1

Запишемо рівняння (1) в розгорненому вигляді для даної мережі:

7

В цьому випадку розділяюча лінія має вигляд

і відповідає лінії L на мал. 8.

Визначимо реакцію мережі на вхідні векториp1 і p2, розташовані по різні сторони від розділяючої лінії:

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, net = newp([-2 2;-2 2],1);

Запитаємо характеристики вагів входу

 

 

net.inputweights{1, 1}

 

 

 

ans =

 

 

 

 

delays: 0

 

 

 

initFcn: ‘initzero’

 

 

 

learn: 1

 

 

 

learnFcn: ‘learnp’

 

 

 

learnParam: []

 

 

 

size: [1 2]

 

 

 

userdata: [1x1 struct]

 

 

weightFcn: ‘dotprod’

 

 

 

З цього списку виходить, що

як функція

ініціалізації за

умовчан

використовується функція initzero, яка

привласнює вагам

входу нульові значення. У

цьому можна переконатися, якщо витягувати значення елементів матриці вагів і зсуву:

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

 

 

wts =

0

 

 

 

0

 

 

 

bias =

 

 

 

 

8

0

Тепер переустановимо значення елементів матриці вагів і зсуву: net.IW{1,1} = [3, 4];

net.b{1} = 5;

wts = net.IW{1,1}, bias = net.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).

5.Побудувати графік, аналогічний представленому на мал. 2, для своїх початкових даних.

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

7.Роздрукувати текст програми.

8.Скласти звіт, який повинен містити :

–мета лабораторної роботи;

9

–структурну схему нейронної мережі;

–алгоритм, текст програми і графік;

–виводи.

№ п/п

Число входів

Межі зміни входів

Нейронів в шарі

 

 

 

 

1

2

-7…7

2

2

2

- 3 3

2

3

2

-9…9

3

4

2

- 5 5

3

5

2

- 8 8

2

6

2

- 1 1

3

7

2

-2…2

3

8

2

-4…4

2

9

2

-6…6

3

10

2

-4…4

3

11

2

-7…7

3

12

2

- 3 3

3

13

2

-9…9

2

14

2

- 5 5

2

15

2

- 8 8

3

16

2

- 1 1

2

10

Соседние файлы в предмете Искусственный интеллект