Багатошаровий перцептрон. Побудова нейронних мереж в середовищі MATLAB (Практична робота № 3.2), страница 2

X = reshape (A,[N,1])  -             процедура перетворення двовимірного масиву A[N1,N2] в

одновимірний вектор-стовпець X[N,1], де N=N1*N2.

Процедура множення масиву на 1 призводить до зміни типу елементів масиву з logical (для елементів бітового формату) на double.

              Для ефективної роботи ШНМ недостатньо використання лише однієї навчальної реалізації для кожного класу. Це пов’язано з тим, що реалізації на етапі безпосереднього розпізнавання) відрізняються від навчальних по ряду причин:

              - різноманіття шрифтів і стилів друкованих символів;

              - неточності сканування;

              - низька якість друку, дефекти паперу, тощо.

Таким чином, в програмі необхідно сформувати додаткові навчальні реалізації шляхом незначного спотворення еталонних образів, які були завантажені з графічних файлів. Спотворення еталону реалізується шляхом додавання до нього рівномірного шуму типу «Сіль та перець», який полягає у випадковому спотворенні частини пікселів зображення. Ступінь спотворення характеризується числом p=[0;1], що визначає долю спотворених пікселів.

Такий підхід при формуванні реалізацій дозволить, по-перше, оперативно отримати велику кількість навчальних реалізацій, і,по-друге, регулювати (шляхом зміни значення p) ступінь внутрікласової різноманітності.

підготовка даних, необхідних для створення нейронної мережі

              Така підготовка даних полягає в:

1)  формуванні двовимірного масиву навчальних реалізацій XR[N,K], кожний стовпець якого складається з N значень ознак, а число стовпців K дорівнює загальна кількості реалізацій для всіх класів;

2)  формуванні двовимірного масиву міток (бажаних значень на виході ШНМ) YR[NY,K], де NY – число виходів ШМН (число нейронів вихідного шару); K – загальна кількість реалізацій для всіх класів. Мітка YR[:,k] (в загальному випадку – вектор-стовпець) відповідає k-тій реалізації XR[:,k];

3)  формування двовимірного масиву R[N,2], що визначає нижній R(n,1) та верхній R(n,2) допуск для n-ої ознаки, n=1,…,N.

створення ШНМ, завдання параметрів навчання нейронної мережі та її навчання

              Створення ШНМ mynet виконується за допомогою команди:

mynet = newnnn (P1,P2,…PL), 

де newnnn – тип ШНМ;

P1,…,PL      – параметри ШНМ.

              В даній роботі використовується ШНМ типа багатошаровий перцептрон, який створюється за допомогою команди команди:

mynet = newff (R, [A1 A2 … AL], {F1 F2 … FL}, BTF, PF),

де R -  масив мінімальних і максимальних значень входних нейронів (ознак);

Ai -  число нейронів i-го шару, починаючи з першого прихованого прошарку, i=1,…,L;

Fi -  функція активації нейронів i-го прошарку, за замовчанням ‘tansig’;

BTF -  функція навчання мережі, за замовчанням ‘trainlm’;

PF -  критерій зупину, за замовчанням ‘mse’ (мінімум середньо квадратичного відхілення).

Додаткові параметри, що задаються при створенні мережі:

mynet.performFcn=’msereg’     - навчання ШНМ виконується за методом регуляризації;

mynet.performParam.ratio=0.1    -  значення параметру регуляризації;

mynet.trainParam.show=5 -  число епох, після виконання яких виводяться параметри навчання;

mynet.trainParam.epochs=500 - максимальне число епох при навчанні мережі;

mynet.trainParam.goal=0.02 - значення цільової функції, при досягненні якого процес навчання зупиняється.

              Процес навчання ШНМ виконується командою:

mynet = train (mynet, XR, YR) .

              Для розв’язання задач розпізнавання друкованих символів рекомендується використовувати тришарову ШНМ (один прихований прошарок) з числом нейронів:

              N= N1 ·N2          -             у вхідному прошарку;

              A1=20                 -             у прихованому прошарку;

              A2=1                    -             у вихідному прошарку.

Розпізнавання друкованих символів за допомогою ШНМ

              Робота ШНМ, тобто формування вихідного сигналу Y при вхідному X[N,1] виконується  командою:

              Y = sim (mynet, X).

Для випадку, коли вихідний сигнал приймає цілочисельні значення, рекомендується використовувати округлення

              Y = round (sim (mynet, X)).

              На рис. 2 подані приклади розпізнавання символів, поданих на рис. 1. Навчання ШНМ проводилось для M=10 класів для кожного виду символу і при значені параметра спотворення символів p=0,1.

                                             Описание: S0_SP_02_TR_1           Описание: S0_SP_02_FA_3           Описание: S0_SP_02_FA_5

Результат розпізнавання:        «2»                        «3»                   «5»