лі, вибір архітектури мережі для вирішення конкретної задачі грунтується на досвіді розробника. Тому запропонована нижче архітектура мережі є одним варіантом з безлічі можливих конфігурацій. Для вирішення поставленого завдання сформує?? м тришарову мережу зворотного поширення, що включає 21 нейрон у вхідному прошарку (по числу компонент вхідного вектора) з передавальної функцією logsig, 15 нейронів у другому шарі з передавальної функцією logsig і 3 нейрона у вихідному шарі (по числу компонентів вихідного вектора) з передавальної функцією purelin. При цьому в якості навчального алгоритму обраний алгоритм Levenberg-Marquardt (trainlm). Цей алгоритм забезпечує швидке навчання, але вимагає багато ресурсів. У випадку, якщо для реалізації цього алгоритму не вистачить оперативної пам'яті, можна використовувати інші алгоритми (trainbfg, trainrp, trainscg, traincgb, traincgf, traincgp, trainoss, traingdx). За замовчуванням використовується trainlm. Зазначена мережу формується за допомогою процедури:
net=newff (minmax (P), [21,15,3], { logsig logsig purelin }, trainlm );
Перший аргумент - матриця Mx2 мінімальних і максимальних значень компонент вхідних векторів обчислюється за допомогою процедури minmax. Результатом виконання процедури newff є об'єкт - нейронна мережа net заданої конфігурації. Мережу можна зберегти на диску у вигляді mat. файлу за допомогою команди save і завантажити знову за допомогою команди load. Більш детальну інформацію про процедуру можна отримати, воспользо-вавшись командою help. Навчання мережі. Наступний крок - навчання створеній мережі. Перед навчанням необхідно задати параметри навчання. Задаємо функцію оцінки функціонування sse.
. performFcn= sse raquo ;;
У цьому випадку в якості оцінки обчислюється сума квадратичних відхилень виходів мережі від еталонів. Задаємо критерій закінчення навчання значення відхилення, при якому навчання буде вважатися закінченим:
. trainParam.goal=0.01;
Задаємо максимальну кількість циклів навчання. Після того, ка буде виконано це кількість циклів, навчання буде завершено:
. trainParam.epochs=1000;
Тепер можна починати навчання: net, tr]=train (net, P, T).
Процес навчання ілюструється графіком залежно оцінки функціонування від номера циклу навчання (див. малюнок 11.1).
Малюнок 11.1. Результати навчання
Таким чином, навчання мережі закінчено. Тепер цю мережу можна зберегти у файлі nn1.mat: save nn1 net;
Тестування мережі. Перед тим, як скористатися нейронною мережею, необхідно дослідити ступінь достовірності результатів обчислень мережі на тестовому масиві вхідних векторів. В якості тестового масиву необхідно використовувати масив, компоненти якого відрізняються від компонентів масиву, використаного для навчання. У нашому випадку для отримання тестового масиву достатньо скористатися ще раз програмою mas1.
Для оцінки достовірності результатів роботи мережі можна скористатися результатами регресійного аналізу, отриманими при порівнянні еталонних значень зі значеннями, отриманими на виході мережі, коли на вхід подані вхідні вектори тестового масиву. У середовищі MATLAB для цього можна скористатися функцією postreg. Наступний набір команд ілюструє описану процедуру:
gt; gt; mas1 - створення тестового масиву P;
gt; gt; y=sim (net, P) - обробка тестового масиву;
gt; gt; [m, b, r]=postreg (y (1, :), T (1, :)) - регресійний аналіз результатів обробки.
Порівняння компонентів З еталонних векторів з відповідними компонентами вихідних векторів мережі. На малюнку 11.2 видно, що всі точки лягли на пряму - це говорить про правильну роботу мережі на тестовому масиві
Малюнок 11.2. Порівняння компонентів З еталонних векторів з відповідними компонентами вихідних векторів мережі
gt; gt; [m, b, r]=postreg (y (2, :), T (2,:));
Малюнок 11.3 Порівняння компонентів А еталонних векторів з відповідними компонентами вихідних векторів мережі
gt; gt; [m, b, r]=postreg (y (3, :), T (3,:));
Малюнок 11.4 Порівняння компонентів S еталонних векторів з відповідними компонентами вихідних векторів мережі
Як видно з малюнків 11.2-11.4, наша мережа відмінно вирішує поставлене завдання для всіх трьох вихідних параметрів. Збережемо навчену мережу net на диску в файл nn1.mat save nn1 net
Моделювання мережі. (Використання мережі ...