задано навчальну множину, що складається з Q пар векторів вхід. Кожний вектор цілі має K елементів, вказуючих клас приналежності, і, таким чином, кожний вектор входу ставиться у відповідність одному з K класів. В результаті може бути утворена матриця зв'язності Т розміру KxQ, що складається з нулів і одиниць, рядки якої відповідають класам приналежності, а стовпці – векторам входу. Таким чином, якщо елемент Т (і, j) матриці зв'язності рівний 1, то це означає, що j-й вхідний вектор належить до класу і.
Вагова матриця першого шару IW11 (net.IW{1,1}) формується з використанням векторів входу з навчальної множини у вигляді матриці Р'. Коли подається новий вхід, блок || dist || обчислює близькість нового вектора до векторів навчальної множини; потім обчислені відстані перемножаються на зсуви і подаються на вхід функції активації radbas. Вектор навчальної множини, найбільш близький до вектора входу, буде представлений у векторі виходу а1 числом, близьким до 1.
Вагова матриця другого шару LW21 (net.LW{2,l}) відповідає матриці зв'язності Т, побудованої для даної повчальної послідовності. Вираз Т*а1 визначає елементи вектора а1, відповідні кожному з K класів. В результаті конкуруюча функція активації другого шару compet формує на виході значення, рівне 1, для найбільшого по величині елемента вектора n2 і 0 в інших випадках. Таким чином, мережа PNN виконує класифікацію векторів входу по К класів. [6]
3 ПРОЕКТУВАННЯ НЕЙРОННОЇ МЕРЕЖІ
3.1 Мережа PNN
Щоб створити нейронну мережу PNN у пакеті програм MatLab призначена М-функція newpnn. Для класифікації двох вимірних векторів на 4 класи за нормальним законом розподілу необхідно їх оголосити за допомогою функції rand. Визначимо наступні вектори входів і співвіднесемо кожний із них з одним із чотирьох класів:
xks1=rand(5,1); yks1=rand(5,1); xks2=1+rand(5,1); yks2=rand(5,1);
xks3=1+rand(5,1); yks3=1+rand(5,1); xks4=rand(5,1); yks4=1+rand(5,1);
P=[xks1 yks1; xks2 yks2; xks3 yks3; xks4 yks4]';
Tc=[1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4];
Вектор Тс назвемо вектором індексів класів. Цьому індексному вектору можна поставити у відповідність матрицю зв'язності Т у вигляді розрідженої матриці вигляду
Т = ind2vec(Tc)
T =
(1,1) 1
(1,2) 1
(1,3) 1
(1,4) 1
(1,5) 1
(2,6) 1
(2,7) 1
(2,8) 1
(2,9) 1
(2,10) 1
(3,11) 1
(3,12) 1
(3,13) 1
(3,14) 1
(3,15) 1
(4,16) 1
(4,17) 1
(4,18) 1
(4,19) 1
(4,20) 1
яка визначає приналежність перших п’яти векторів до класу 1, 5 других – до класу 2, п’ять подальших до класу 3 і п’ять останніх - до класу 4. Повна матриця Т має вигляд:
Т = full(Т)
Т =
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
Масиви Р і Т задають навчальну множину, що дозволяє виконати формування мережі, промоделювати її, використовуючи масив входів Р, і упевнитися, що мережа правильно вирішує задачу класифікації на елементах повчальної множини. В результаті моделювання мережі формується матриця зв'язності, відповідна масиву векторів входу. Для того щоб перетворити її в індексний вектор, призначена М-функция vec2ind:
net = newpnn(P,Т);
net.layers{l}.size % Число нейронів в мережі PNN
ans = 20
Y=sim(net,P);
Yc=vec2ind(Y)
Yc = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4
Результат підтверджує правильність рішення задачі класифікації. Виконаємо класифікацію деякого набору довільних векторів р, не належних навчальній множині, використовуючи раніше створену мережу PNN:
P =
Columns 1 through 10
0.8381 0.0196 0.6813 0.3795 0.8318 1.1934 1.6822 1.3028 1.5417 1.1509
0.5028 0.7095 0.4289 0.3046 0.1897 0.6979 0.3784 0.8600 0.8537 0.5936
Columns 11 through 20
1.4966 1.8998 1.8216 1.6449 1.8180 0.7271 0.3093 0.8385 0.5681 0.3704
1.6602 1.3420 1.2897 1.3412 1.5341 1.7027 1.5466 1.4449 1.6946 1.6213
Виконуючи моделювання мережі для цього набору векторів, одержуємо
ac = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4
Демонстраційна програма (див. додаток А) дозволяє проілюструвати результати класифікації в графічному вигляді (див. додаток Г). [8]
3.2 Приклад застосування мережі
Мною нижче наведений приклад застосування створеної мережі для випадкових значень р
>> load pnn
p =
Columns 1 through 10
0.8121 0.6101 0.7015 0.0922 0.4249 1.9566 1.1472 1.8699 1.7694 1.4442
0.3756 0.1662 0.8332 0.8386 0.4516 0.6206 0.9517 0.6400 0.2473 0.3527
Columns 11 through 20
1.1879 1.4906 1.4093 1.4635 1.6109 0.2460 0.5874 0.5061 0.4648 0.5414
1.0712 1.3143 1.6084 1.1750 1.6210 1.9423 1.3418 1.4018 1.3077 1.4116
a =
(1,1) 1
(1,2) 1
(1,3) 1
(1,4) 1
(1,5) 1
(2,6) 1
(2,7) 1
(2,8) 1
(2,9) 1
(2,10) 1
(3,11) 1
(3,12) 1
(3,13) 1
(3,14) 1
(3,15) 1
(4,16) 1
(4,17) 1
(4,18) 1
(4,19) 1
(4,20)