Покажем, как линейные сети могут быть применены для решения задач классификации. Если используется процедура обучения train, то параметры сети настраиваются
с учетом суммарного значения функции ошибки. Это отличается от процедуры адаптации adapt, для работы которой характерна настройка параметров с учетом ошибки при представлении каждого вектора входа. Затем обучение применяется к скорректированной
сети, вычисляются выходы, сравниваются с соответствующими целями и вновь вычисляется ошибка обучения. Если достигнута допустимая погрешность или превышено максимальное число циклов (эпох) обучения, то процедура настройки прекращается. Алгоритм обучения и настройки сходится, если задача классификации разрешима.
Проиллюстрируем решение задачи классификации, ранее решенной с помощью персептрона. Используем для этого простейшую линейную сеть, представленную на рис. 5.1. Обучающее множество представлено следующими четырьмя парами векторов входов
и целей:
(5.9)
Определим линейную сеть с начальными значениями веса и смещения, используемыми по умолчанию, т. е. нулевыми; зададим допустимую погрешность обучения, равную 0.1:
p = [2 1 –2 –1;2 –2 2 1];
t = [0 1 0 1];
net = newlin([–2 2; –2 2],1);
% Инициализация линейной сети с двумя входами и одним выходом
net.trainParam.goal= 0.1;
[net, tr] = train(net,p,t);
TRAINWB, Epoch 0/100, MSE 0.5/0.1.
TRAINWB, Epoch 25/100, MSE 0.181122/0.1.
TRAINWB, Epoch 50/100, MSE 0.111233/0.1.
TRAINWB, Epoch 64/100, MSE 0.0999066/0.1.
TRAINWB, Performance goal met.
Пороговое значение функции качества достигается за 64 цикла обучения, а соответствующие параметры сети принимают значения
weights = net.iw{1,1}
bias = net.b(1)
weights = –0.061482 –0.21938
bias = [0.5899]
Выполним моделирование созданной сети с векторами входа из обучающего множества и вычислим ошибки сети:
A = sim(net, p)
err = t – sim(net,P)
A = 0.028173 0.96718 0.2741 0.432
err = –0.028173 0.03282 –0.2741 0.568
Заметим, что погрешности сети весьма значительны. Попытка задать большую точность в данном случае не приводит к цели, поскольку возможности линейной сети ограничены. Демонстрационный пример demolin4 иллюстрирует проблему линейной зависимости векторов, которая свойственна и этому случаю.
Обучение линейной нейронной сети иллюстрируется демонстрационной программой demolin2, которая возвращает значения весов и погрешность в процессе обучения. В связи с рассматриваемой проблемой классификации можно также обратиться к демонстрационной программе nnd10lc, в которой рассмотрена классическая задача классификации объектов при действии шумов.