Самостоятельная работа 6: Применение нейронных сетей для расчета и прогнозирования значений процесса
Подготовка к работе
По указанной литературе изучить приёмы работы построение нейронных сетей в программе MATLAB.
Контрольные вопросы
- Правила создания нейронных сетей.
- Порядок использования графического интерфейса для построения нейронных сетей.
- Как происходит процесс обучения сети?
- Назначение закладки Train.
- Как просмотреть результаты обучения сети?
- Порядок прогнозирования значений процесса?
Задание к работе
- Создайте нейронную сеть для выполнения операций указанных в таблице 11.1
- Обучите нейронную сеть
- Сделайте прогнозирование значений процесса
№№ | Функции | №№ | Функции |
---|---|---|---|
1 | у = cos(x) | 4 | y = cos(x-1) |
2 | y = sin(2*x) | 5 | y = sin(x-2) |
3 | y = cos(3*x) | 6 | y = sin(x2) |
Пример выполнения задания
Создадим нейронную сеть для выполнения операции у = sin (x)
X=[-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1];
Y =[-0.84 -0.72 -0.48 -0.19 0 0.09 0.29 0.56 0.78 0.84]
Откроем основное окно интерфейса при помощи функции nntool (рисунок 11.1) сформулируем последовательность входов и целей, используя окно Network/Data Manager, которое открывается с помощью команды "New".
В окне Create Network or Data выберем закладку Data. В открывшемся окне в поле Name введем имя переменной, в области Value – вектор значений, используя кнопки Inputs для х, а Targets соответственно для у как показано на рисунке 11.2. Ввод завершим нажатием кнопки Create (Создать).
Создадим новую нейронную сеть. Для этого в окне Create Network or Data выбираем закладку Network (Рисунок 11.3) затем в полях Input data, Target data выбираем значения х и у соответственно, остальные установки при создании сети оставим по умолчанию. Ввод завершим нажатием кнопки Create.
После этого в окне Network/Data Manager появится имя новой сети – network1 (Рисунок 11.4).
Сеть можно открыть с помощью кнопки Open, или активизировать с помощью мышки (Рисунок 11.5).
Применяя эти закладки можно установить имена последовательностей входа и цели, а также значения параметров процедуры обучения. После установления всех параметров нажатием кнопки Train начинаем обучение сети. Результаты обучения можно просмотреть в окне, которое появляется после окончания операции (Рисунок 11.6).
Результаты обучения можно просмотреть в графическом виде для этого следует активировать кнопку Performance ( Рисунок 11.7).
Сплошной линией выделены изменения ошибки сети в процессе обучения.
Следует отметить, что в данном случае точность аппроксимации заданной функции получилась достаточно высокая – максимальная абсолютная погрешность составляет 0,0366, относительная 3,66% в чем можно убедиться, просмотрев значения ошибок в окне Data: network1_errors (Рисунок 11.8).
Теперь можно построить НС в среде Simulink и отобразить ее схему (Рисунок 11.9). В ведем в командное окно функцию gensim (network1).
Эта схема является в полной мере функциональной и может быть применена для моделирования нейронной сети.
Рассмотрим пример прогнозирования данной функции. Следует отметить что программа пишется в командном окне.
x=0:0.25:5; % Задание диапазона времени от 0 до 5 секунд y=sin(x); %предсказываемый сигнал >> Q=length(y); %Определение количества точек вектора х >> P=zeros(5,Q); %Создание нулевой матрицы Р >> %Создание входных векторов в виде строк матрицы Р >> P(1,2:Q)=y(1,1:(Q-1)); >> P(2,3:Q)=y(1,1:(Q-2); >> P(2,3:Q)=y(1,1:(Q-2)); >> P(3,4:Q)=y(1,1:(Q-3)); >> P(4,5:Q)=y(1,1:(Q-4)); >> P(5,6:Q)=y(1,1:(Q-5)); >> s=newlind(P,y); %Создание новой НС с именем s >> z=sim(s,P); %Расчет прогнозируемых значений >> %Создание графиков исходного сигнала и прогноза >> plot(x,z,x,y,'*') >> ylabel('Исходный и прогнозируемые сигналы') >> xlabel('Время')
В данном случае сеть создавалась с помощью функции newlind, при которой не требуется дополнительного обучения. Судя по графику результата, приведенному на рисунке 11.10, точность прогноза с использованием линейной нейронной сети можно считать хорошей. На рисунке исходный сигнал представлен сплошной линией, а прогнозируемые значения крестиком.