Опубликован: 22.04.2006 | Уровень: специалист | Доступ: платный
Лекция 11:

Методы классификации и прогнозирования. Нейронные сети

Пакет Matlab

Пакет MATLAB (The MathWorks) также предоставляет пользователям возможность работы с нейронными сетями. Входящий в стандартную поставку MATLAB "Neural Network Toolbox" предоставляет широкие возможности для работы с нейронными сетями всех типов.

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

Рассмотрим пример конструирования нейронной сети в пакете Matlab.

Пусть имеется 15 независимых переменных - показателей деятельности фирмы и одна зависимая переменная - объем продаж. Имеем базу данных за прошедший год. Необходимо построить понедельный прогноз объемов продаж на месяц. Для решения задачи предлагается использовать трехслойную сеть обратного распространения.

Сформируем такую сеть, которая включает 15 нейронов во входом слое (по количеству входных переменных), 8 нейронов во втором слое и 1 нейрон в выходном слое (по количеству выходных переменных).

Для каждого слоя выберем передаточную функцию: первый слой - tansig, второй - logsig, третий - purelin.

В среде Matlab синтаксис такой нейронной сети выглядит следующим образом:

Net=netff(PR, [S1,S2, : , Sn],{TF1,TF2, : , TFn},btf, blf, pf),

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

Si - количество нейронов в i-м слое ;

TFi - функция активации слоя i;

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

blf - функция настройки, реализующая метод обратного распространения ;

pf - критерий качества обучения.

Активационной функцией может выступать любая дифференцируемая функция, например, tansig, logsig, purelin.

Net=netff(minmax (P), [n,m, l],{ tansig, logsig, purelin },trainpr),

где P - множество входных векторов;

n - количество входов НС;

m - количество нейронов в скрытом слое ;

l - количество выходов НС.

Необходимо также установить метод расчета значения ошибки. Например, если выбран метод наименьших квадратов, то эта функция будет выглядеть так: Net.performFcn='SSE'.

Для установления максимального количества эпох равным 10000 воспользуемся функцией: net.trainParam.epochs=10000.

Запустить процесс обучения можно таким образом:

[net,tr]=train(net,P,T);

После окончания обучения сети ее можно сохранить в файле, например, с именем nn1.mat.

Для этого необходимо выполнить команду:

save nn1 net;

Таким образом, в пакете возможно конструирование сети любой сложности и нет необходимости привязываться к ограничениям, накладываемым нейросимуляторами. Однако для работы с нейронными сетями в пакете Matlab необходимо изучить как саму среду, так и большинство функций Neural Network Toolbox. Для более детального изучения конструирования нейронных сетей в Neural Network Toolbox можно порекомендовать [49, 50].

Михаил Щукин
Михаил Щукин
Россия, Москва, МТУСИ