Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
871
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

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

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– объект классаnetworkobjectс архитектурой линейного слоя.

Функция 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

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

yk= 0.9242rk+ 0.9869rk –1+ 0.0339rk –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= 2p.Применение линейного слояLINDв данном случае вполне оправдано.

net = newlind(P,T);

gensim(net) % Рис.11.11

Рис. 11.11

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

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

ans = 1.9800

ans = 0.3000

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

yk = 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.