Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Потемкин В.Г. MATLAB 6.doc
Скачиваний:
5
Добавлен:
07.09.2025
Размер:
15.55 Mб
Скачать

Инициализация сети

Сеть создается с помощью функции newlin, которая генерирует веса и смещение для линейного нейрона с двумя входами. На входе сети используется линия задержки на 1 такт; параметр скорости настройки принят равным 0.5.

lr = 0.5;

delays = [0 1];

net = newlin(minmax(cat(2,P{:})),1,delays,lr);

[net,a,e] = adapt(net,P,T);

Сформированная нейронная сеть имеет следующие весовые коэффициенты и смещение:

net.IW{1}, net.b

ans = 0.9 –0.6

ans = –3.14e–013

Нетрудно убедиться, что они соответствуют коэффициентам второго фильтра.

Проверка сети

Построим график погрешности сети (рис. 9.18):

plot(time, cat(2,e{:}))

Рис. 9.18

Из анализа этого графика следует, что сети требуется 2.5 с для настройки на реакцию первого фильтра и немногим более 0.2 с для настройки на реакцию второго фильтра. Это объясняется тем, что фактические настройки параметров сети стационарны и соответствуют значениям параметров второго фильтра.

Читатель может обратиться к демонстрационному примеру applin4, где исследуется подобная задача.

9.2. Распознавание образов

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

Постановка задачи

Требуется создать нейронную сеть для распознавания 26 символов латинского алфавита. В качестве датчика предполагается использовать систему распознавания, которая выполняет оцифровку каждого символа, находящегося в поле зрения. В результате каждый символ будет представлен шаблоном размера 57. Например, символ A может быть представлен, как это показано на рис. 9.19, а и б.

а

0

0

1

0

0

0

1

0

1

0

0

1

0

1

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

1

1

0

0

0

1

б

Рис. 9.19

Однако система считывания символов обычно работает неидеально и отдельные элементы символов могут оказаться искаженными (рис. 9.20).

Рис. 9.20

Проектируемая нейронная сеть должна точно распознавать идеальные векторы входа и с максимальной точностью воспроизводить зашумленные векторы. М-функция prprob определяет 26 векторов входа, каждый из которых содержит 35 элементов, этот массив называется алфавитом. М-функция формирует выходные переменные alphabet и targets, которые определяют массивы алфавита и целевых векторов. Массив targets определяется как eye(26). Для того чтобы восстановить шаблон для i-й буквы алфавита, надо выполнить следующие операторы:

[alphabet, targets] = prprob;

ti = alphabet(:, i);

letter{i} = reshape(ti, 5, 7)';

letter{i}

Пример:

Определим шаблон для символа A, который является первым элементом алфавита:

[alphabet, targets] = prprob;

i = 2;

ti = alphabet(:, i);

letter{i} = reshape(ti, 5, 7)';

letter{i}

ans =

0 0 1 0 0

0 1 0 1 0

0 1 0 1 0

1 0 0 0 1

1 1 1 1 1

1 0 0 0 1

1 0 0 0 1