Линейные сети

NEWLIN Линейный слой LIN

Синтаксис:

net = newlin(PR,s,id,lr)

net = newlin(PR,s,0,P)

Описание:

Линейные слои находят применение при решении задач аппроксимации, фильтрации
и предсказания сигналов, построении моделей динамических систем в задачах управления.

Функция net = newlin(PR, s, id, lr) формирует нейронную сеть в виде линейного слоя.

Входные аргументы:

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

s – число нейронов;

id – описание линии задержки на входе сети, по умолчанию [0];

lr – параметр скорости настройки, по умолчанию 0.01.

Выходные аргументы:

net – объект класса network object с архитектурой линейного слоя.

Функция net = newlin(PR, s, 0, P), где P – матрица векторов входа, формирует линейный слой с параметром скорости настройки, гарантирующим максимальную степень
устойчивости слоя для данного входа P.

Пример:

Сформировать линейный слой, который для заданного входа воспроизводит заданный отклик системы.

Архитектура линейного слоя: линия задержки типа [0 1 2], 1 нейрон, вектор входа
с элементами из диапазона [–1 1], параметр скорости настройки 0.01.

net = newlin([–1 1], 1, [0 1 2], 0.01);

gensim(net) % Рис.11.7

Элементы линейного слоя показаны на рис. 11.7. Характерная особенность этого слоя – наличие линии задержки, что свидетельствует о том, что такая нейронная сеть является динамической.

 
 
Рис. 11.7

Сформируем следующие обучающие последовательности векторов входа и цели:

P1 = {0 –1 1 1 0 –1 1 0 0 1};

T1 = {0 –1 0 2 1 –1 0 1 0 1};

P2 = {1 0 –1 –1 1 1 1 0 –1};

T2 = {2 1 –1 –2 0 2 2 1 0};

Выполним обучение, используя только обучающие последовательности P1 и T1:

net = train(net,P1,T1);

Характеристика процедуры обучения показана на рис. 11.8. Из ее анализа следует, что требуемая точность обучения достигается на 73-м цикле. Соответствующие значения весов и смещения следующие:

net.IW{1}, net.b{1}

ans = 0.8751 0.8875 –0.1336

ans = 0.0619

Рис. 11.8

Выполним моделирование сети для всех значений входа, объединяющих векторы Р1 и Р2:

Y1 = sim(net,[P1 P2]);

Результаты моделирования показаны на рис. 11.10 в виде зависимости Y1; последовательность целей, объединяющая векторы T1 и T2, соответствует зависимости Т3.

Теперь выполним обучение сети на всем объеме обучающих данных, соответствующем объединению векторов входа {[P1 P2]} и векторов целей {[T1 T2]}:

net = init(net);

P3 = [P1 P2];

T3 = [T1 T2];

net.trainParam.epochs = 200;

net.trainParam.goal = 0.01;

net = train(net,P3,T3);

Рис. 11.9

В этом случае процедура обучения не достигает предельной точности в течение 200 циклов обучения и, судя по виду кривой, имеет статическую ошибку.

Значения весов и смещений несколько изменяются:

net.IW{1}, net.b{1}

ans = 0.9242 0.9869 0.0339

ans = 0.0602

Соответствующая дискретная модель динамического линейного слоя имеет вид:

y k = 0.9242rk + 0.9869r k – 1 + 0.0339r k –2 + 0.0602.

Результаты моделирования показаны на рис. 11.10 в виде зависимости Y3.

Y3 = sim(net,[P1 P2])

Рис. 11.10

Из сравнения кривых Y3 и Y1 следует, что точность воспроизведения целевой последовательности на интервале тактов времени с 11-й по 19-й стала выше и несколько уменьшилась на 5-м и 9-м тактах. В целом сформированный динамический линейный слой достаточно точно отслеживает кривую цели на последовательностях входов, не участвовавших в обучении.

Алгоритм:

Линейный слой использует функцию взвешивания dotprod, функцию накопления
потенциала netsum и функцию активации purelin. Слой характеризуется матрицей весов
и вектором смещений, которые инициализируются М-функцией initzero.

Адаптация и обучение выполняются М-функциями adaptwb и trainwb, которые модифицируют веса и смещения, используя М-функцию learnwh, до тех пор пока не будет достигнуто требуемое значение критерия качества обучения в виде средней квадратичной ошибки, вычисляемой М-функцией mse.

Сопутствующие функции: NEWLIND, SIM, INIT, ADAPT, TRAIN.

NEWLIND Линейный слой LIND

Синтаксис:

net = newlind(P, T)

Описание:

Линейный слой LIND использует для расчета весов и смещений процедуру решения систем линейных алгебраических уравнений на основе метода наименьших квадратов, и поэтому в наибольшей степени он приспособлен для решения задач аппроксимации, когда требуется подобрать коэффициенты аппроксимирующей функции. В задачах управления такой линейный слой можно применять для идентификации параметров динамических систем.

Функция net = newlind(P, T) формирует нейронную сеть, используя только обучающие последовательности входа P размера R´Q и цели T размера S´Q. Выходом является объект класса network object с архитектурой линейного слоя.

Пример:

Требуется сформировать линейный слой, который обеспечивает для заданного входа P выход, близкий к цели T, если заданы следующие обучающие последовательности:

P = 0:3;

T = [0.0 2.0 4.1 5.9];

Анализ данных подсказывает, что требуется найти аппроксимирующую кривую, которая близка к зависимости t = 2 p. Применение линейного слоя LIND в данном случае вполне оправдано.

net = newlind(P,T);

gensim(net) % Рис.11.11

Рис. 11.11

Значения весов и смещений равны:

net.IW{1}, net.b{1}

ans = 1.9800

ans = 0.3000

Соответствующая аппроксимирующая кривая описывается соотношением

y k = 1.9800rk + 0.3000.

Выполним моделирование сформированного линейного слоя:

Y = sim(net,P)

Y = 0.0300 2.0100 3.9900 5.9700

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

Алгоритм:

Функция newlind вычисляет значения веса W и смещения B для линейного уровня
с входом P и целью T, решая линейное уравнение в смысле метода наименьших квадратов:

[W b] * [P; ones] = T.

Сопутствующие функции: sim, newlin.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: