Математическое представление модели одиночного нейрона с R входами показано на рис. 11.
Рисунок 11 - Математический нейрон
Вектор-столбец P=[p(1); p(2); … p(R)] представляет собой входы нейрона, b – смещение (базу), вектор-строка W=[w(1,1); w(1,2); … w(1,R)] – весовые коэффициенты, так что на входе нейрона формируется величина a=F(W·p+b). В качестве функции преобразования F в модели нейрона можно использовать любую дифференцируемую функцию. Наиболее часто используемые функции преобразования приведены в таблице 5. Нейронная сеть может содержать S нейронов, непосредственно связанных с входами (первый слой нейронов), один или несколько скрытых слоев и слой нейронов, непосредственно связанных с выходами нейросети. На рисунке 12 показана структура нейросети, в которой имеется два слоя нейронов. В технической литературе такую сеть именуют трехслойным персептроном (чувствительные элементы, формирующие входы Р, образуют еще один слой).
Представленная на рис. 12 нейросеть содержит S1 нейронов в первом слое и S2 нейронов во втором слое. Как правило, функции преобразования у нейронов первого слоя нелинейные, и выходы таких нейронов ограничены по величине, а в выходном слое ставят линейные нейроны, позволяющие формировать любые значения величин на выходе нейросети.
Рисунок 12 – Структура трехслойного персептрона
Для практического использования нейросети необходимо выполнение следующих шагов:
a) инициализация нейросети;
b) тренировка нейросети;
c) моделирование нейросети.
В первой части лабораторной работы необходимо изучить средства Matlab, чтобы реализовать эту последовательность.
Таблица 5. Часто используемые функции преобразований.
Обозначение
График
Функции и ее производная
Matlab-
функция
Log-sigmoid
logsig
Tangens-sigmoid
tansig
Lineare
purelin
а). Инициализация нейросети в Matlab осуществляется функцией initff, общий формат которой следующий:
[w1, b1, w2, b2, …] = initff(P,S1,‘F1’,…Sn,‘Fn’)
где Р – вектор входной последовательности сигналов;
Si – количество нейронов в i-м слое;
Fi – функция преобразования у нейронов i-го слоя (logsig, tansig, purelin);
wi – матрица весовых коэффициентов нейронов i-го слоя;
bi – вектор-столбец смещения (базы) нейронов i-го слоя.
Вместо Sn – количество нейронов в выходном слое может быть использован вектор выходной последовательности нейросети Т; в этом случае формат команды будет следующим:
[w1, b1, w2, b2, …] = initff(P,S1,‘F1’,…Т,‘Fn’)
б). Тренировка нейросети осуществляется функциями trainbp, trainbpx, trainlm,наиболее быстро работающей из которых является trainlm, формат которой приведен ниже:
где Р – вектор входной последовательности сигналов;
Fi – функция преобразования у нейронов i-го слоя (logsig, tansig, purelin);
wi – матрица весовых коэффициентов нейронов i-го слоя;
bi – вектор-столбец смещения (базы) нейронов i-го слоя.
T – вектор выходной последовательности нейросети;
TР – вектор строка параметров тренировки:
ТР(1) – число итераций между выводимыми на экран; по умолчанию 25.
ТР(2) – максимальное количество итераций; по умолчанию 1000.
ТР(3) – желаемая сумма квадратов ошибки между выводом сети и
вектором цели; по умолчанию 0,02.
ТР(4) – минимальное значение градиента; по умолчанию 0,0001.
ТР(5) – начальное значение параметра тренировки MU;
по умолчанию 0,001.
ТР(6) – коэффициент увеличения MU; по умолчанию 10.
ТР(7) – коэффициент уменьшения MU; по умолчанию 0,1.
ТР(8) – максимальное значение MU; по умолчанию 1е 10.
При тренировке сети, как правило, приходится задавать только первые три значения вектора ТР, а остальные значения устанавливаются по умолчанию.
в). Моделирование нейросети проводится на проверочной последовательности входных сигналов, для которых известна выходная последовательность сети Т, с целью проверки соответствия выхода сети вектору цели. Этот шаг выполняется функцией simuff, общий формат которой приведен ниже:
[A1, A2, …] = simuff(P,w1,b1,‘F1’,…wn,bn,‘Fn’)
где A1, A2 – вектора выходных последовательностей нейронных слоев.
Примерполучения модели объекта в виде нейрональной сети.
Пусть объект описывается нелинейными дифференциальными уравнениями следующего вида:
В данном случае вообще-то неважно, как представлен объект. Важно, что у него есть вход u и выход y, и они могут быть как-то измерены и записаны. Входной сигнал u сформируем следующим образом:
>> T=0:.1:80; U=prs(length(T),.1,.98);
Simulink модель объекта представлена на рис. 13.
В результате моделирования получаем запись выхода объекта у. Поскольку объект описывается дифференциальными уравнениями третьего порядка, его нейрональную модель будем отыскивать в виде y(k)=f(y(k-1), y(k-2), u(k), u(k-1)). Другими словами, входами нейросети должны быть y(k-1), y(k-2), u(k), u(k-1), а ее входом – y(k).
На рисунке 14 представлены графики отклика объекта и нейросети на одну и ту же выходную последовательность u(t).
Рисунок 14 - Отклик нейросети и объекта управления на заданное управление u(t)
Инверсивная модель объекта. С помощью нейросети удается получить инверсную модель объекта, т.е. нейросеть, выходом которой является управляющее воздействие u(k),необходимое для получения наперед заданного значения регулируемой величины y(k+1):
При тренировке нейросети и использовании инверсной модели объекта как регулятора в качестве y(k+1) принимают задающее воздействие r(k+1) как показано на рис. 15.
Задание на лабораторную работу. Для одного из объектов управления, заданных нижеприведенными уравнениями, построить прямую и инверсную модели на основе нейросетей. Проверить качество регулирования объекта для случая использования инверсной модели как регулятора.
Для моделирования объекта используйте Simulink-модель, причем решение уравнений необходимо проводить с фиксированным шагом, равным периоду дискретности Т0 = 0.1…0.4с.
Рисунок 15 - Инверсная модель в качестве регулятора