помощью нейронных сетей

advertisement
Интеллектуальные информационные системы, Утёмов В.В.,2009
ЛАБОРАТОРНАЯ РАБОТА №9
Решение задачи распознавания образов с
помощью нейронных сетей
1. Цель работы
Целью работы является закрепление навыков применения математического аппарата нейронных сетей для решения задачи распознавания образов, ознакомление с пакетом нейросетевого моделирования Trajan 3.0.
2. Краткие теоретические сведения
Под искусственной нейронной сетью (НС) понимается математическая модель, представляющая собой систему из соединенных и
взаимодействующих между собой простых процессоров (искусственных нейронов).
Искусственный нейрон – узел нейронной сети, представляющий собой упрощенную модель естественного нейрона. С математической точки зрения, это сумматор всех входящих сигналов, применяющий к полученной сумме некоторую простую функцию.
Структурная схема искусственного нейрона приведена на
рис. 1.
+1
x1
wi0
wi1
wi2
x2
+
ui
yi
●
●
xn
●
wiN
Рис. 1. Модель искусственного нейрона
Входные сигналы xj (j = 1, 2, …, n) суммируются с учетом соответствующих весов wij в сумматоре, после чего полученная взве-
1
шенная сумма сравнивается с пороговым значением wi0. Выходной
сигнал нейрона yi определяется следующей зависимостью (1):
N
yi  f (  wij x j (t )  wi 0 ) .
(1)
j 1
Аргументом
функции
выступает
суммарный
сигнал
n
ui   wij x j (t )  wi 0 . Функция f(ui) называется функцией активации.
j 1
Основные виды функций активации, используемых при построении
НС:
1) линейная: f(ui) =k * ui ;
1
;
2) логистическая (сигмоидальная): f (ui ) 
 aui
1 e
aui
3) экспоненциальная: f (ui )  e
;
0, если ui  0;
4) пороговая f (ui )  
1, если ui  0.
Объединение нейронов в общую сеть можно осуществить разными способами. В зависимости от выбранной топологии выделяют
следующие виды нейронных сетей:
1) полносвязные нейронные сети – каждый нейрон сети соединен с каждым.
2) многослойные нейронные сети (персептроны) – нейроны
объединяются в слои, содержащие совокупность нейронов с едиными
входными сигналами. Могут содержать входной, выходной и N промежуточных слоев.
Перед началом работы с нейронной сетью необходимо произвести ее обучение. Существует ряд алгоритмов, позволяющих обучать сеть. Выбор конкретного алгоритма определяется архитектурой
обучаемой сети, а также постановкой решаемой задачи. Одним из
наиболее часто используемых алгоритмов обучения нейронной сети
является алгоритм обратного распространения ошибки (Back Propagation Algorithm).
Данный алгоритм обеспечивает способ настройки весов с
учетом многослойной структуры нейронной сети. Ошибка обучения
на выходе сети распространяется в обратном направлении к скрытым
слоям. Для нейронов выходного слоя величина ошибки вычисляется
просто как разность между ожидаемым и реальным выходным
значением. Метод обратного распространения является обобщением
дельта-правила, согласно которому изменение веса Δwj i-го нейрона
для минимизации ошибки персептрона должно происходить в
соответствии с формулой:
(2)
w j  c(d i  Oi ) f ' (neti ) x j ,
где с – постоянный коэффициент скорости обучения; di и Oi –
ожидаемые и реальные значения выхода i-го нейрона; f′ –
производная активационной функции i-го нейрона; а xj – j-е входное
значение i-го нейрона.
Формулы для приращений весового коэффициента связи wki
между k-м и i-м нейронами согласно методу обратного
распространения ошибки, для сигмоидальной активационной
функции имеют вид:
 для нейронов выходного слоя:
wki  c(d i  Oi )Oi (1  Oi ) xk ;
(3)
 для нейронов скрытых слоев:
(4)
wki  c  Oi (1  Oi ) (delta j  wij ) xk ;
j
где j – индекс нейрона следующего слоя, до которого
распространяется сигнал от i-го нейрона предыдущего слоя;
(5)
delta j  (d i  Oi )  Oi  (1  Oi ) .
3. Работа с пакетом TRAJAN Neural Network Simulator v3.0
Запуск программы осуществляется с помощью ярлыка
«TRAJAN» на рабочем столе, или через кнопку «Пуск → Программы
→ Trajan Neural Network Demonstrator». Для реализации нейронной
сети в среде TRAJAN необходимо выполнить следующие шаги.
3.1. Создание набора данных для обучения
Используется меню: «File → New → Data Set». В окне «Create
Data Set» определяется число переменных для входа и выхода НС
(см. рис. 2).
Рис. 2. Диалоговое окно «Create Data Set»
Вводить данные или редактировать уже введенные, можно в
окне редактора «Data Sets Editor» (см. рис. 3), который имеет следующие возможности:
Data Set Datasheet – позволяет изменять любые существующие
данные и имена переменных. Существует возможность добавлять новые и удалять существующие переменные, назначить «Вход» (Input),
«Выход» (Output), «Вход-выход» (Input/Output) и «Игнорируемые»
(Ignored) переменные; назначить «Обучение» (Training), «Проверку»
(Verification), «Испытательные» (Test) и «Игнорируемые» (Ignored)
выборки;
Shuffle – средство для случайного перемешивания обучающих
выборок.
Рис. 3. Диалоговое окно «Data Set Editor»
3.2. Создание сети
Для создания сети используется меню: «File → New →
Network» и окно: «Create Network» (см. рис. 4). Обычная последовательность действий для определения новой сети выглядит следующим образом:
1) выберите желательный тип сети (если это уже выбрано,
нажмите кнопку Advise). Network Advisor (Сетевой советчик) запуска-
ется и автоматически обрабатывает сетевую информацию, взятую из
Data Set, и предлагает свой вариант сети;
2) при выполнении анализа временного ряда (Time Series), выберите число шагов (Steps), используемых в предсказании
(Lookahead);
3) если тип сети – многослойный персептрон, выберите желательное число уровней (если их количество неверно выбрал Network
Advisor);
Рис. 4. Диалоговое окно «Create Network»
4) если требуется, сбросьте или добавьте число нейронов в
скрытых слоях сети.
3.3. Редактирование сети
«Trajan Network Editor» (см. рис. 5) позволяет редактировать
различные параметры сети. Окно: «Network Editor». Меню: «Edit →
Network»:
Error Function – устанавливает тип функции ошибки;
Layer – отображает подробности одного уровня сети. Это поле
управляет слоем чьи функции (PSP, Activation) и веса отображены (и,
следовательно, могут быть отредактированы);
Рис. 5. Диалоговое окно «Network Editor»
PSP function – устанавливает PSP function текущего слоя.
Linear PSP function подсчитывает взвешенную сумму входов нейрона
сдвинутую порогом (смещением);
Activation function – устанавливает активационную функцию
текущего слоя;
Units – число нейронов в текущем слое. Изменяя это поле,
можно добавлять или удалять нейроны, но вы не можете изменять
число нейронов во входном или выходном слое (за исключением сетей Кохонена);
Delete – удаляет текущий уровень из сети;
Connections Shown – управляет появлением связей в пределах
таблицы данных весов;
Weights Datasheet – таблица значений весов синаптических
связей.
Каждый столбец таблицы значений весов показывает значения
порогов и весов синаптических связей.
Существует возможность изменять веса и пороги,
непосредственно используя таблицу значений весов, либо обучающие
алгоритмы. Таблица значений весов обычно используется для
контроля весов синаптических связей.
3.4. Обучение сети
Поведение нейронной сети управляется значениями ее весов и
порогов, которые можно установить вручную, используя диалоговое
окно «Network Editor». Алгоритмы обучения делятся на три типа:
 алгоритмы инициализации. Они не являются обучающими
алгоритмами, а относятся к методам, инициализирующим веса до
обучения. Не требуют данных для обучения;
 контролируемое обучение (обучение с учителем). Эти алгоритмы изменяют веса и/или пороги, используя наборы обучающих
выборок, которые включают входные значения и желаемые значения
выходов;
 неконтролируемое обучение (обучение без учителя). Изменяются веса, и/или пороги, используя наборы входов (значения выходов не требуются).
Пакет TRAJAN также имеет некоторые вспомогательные функции, связанные с обучением: случайная инициализация весов, определение условий остановки работы обучающих алгоритмов (в частности, обучение может быть остановлено, как только ошибка функционирования сети начинает ухудшаться); запоминание лучшей сети, обнаруженной в течение выполненного обучения. Имеются специальные, средства, чтобы идентифицировать наиболее значительные
входные переменные для нейронной сети (генетический входной алгоритм выбора) и автоматически идентифицировать лучший тип и
архитектуру сети.
Back Propagation – наиболее известный алгоритм обучения
нейронных сетей. Он имеет более низкие требования памяти, чем
большинство алгоритмов, и обычно достигает приемлемого уровня
ошибок весьма быстро, хотя может низкую скорость сходимости.
Используется меню «Train → Multilayer Perceptrons → Back
Propagation» и окно «Back Propagation Training» (см. рис. 6).
Epochs – число циклов обучения (эпох), в течение которых алгоритм будет работать. На каждой эпохе, полный набор обучения
(Training Set) подается через сеть и используется для корректировки
синаптических весов и порогов нейронной сети.
Learning rate – скорость обучения. Управляет размером изменения веса. Большая скорость обучения может вести к более быстрой
сходимости. Имеются два поля скорости обучения.
Рис. 6. Диалоговое окно «Back Propagation»
Первое – стартовая скорость обучения, второе – скорость на которой
обучение заканчивается, если эти поля отличаются. TRAJAN корректирует скорость обучения на каждом цикле обучения, интерполируя
ее величину между двумя соседними значениями.
Momentum – импульс. Добавление импульса заставляет алгоритм обратного распространения "подбирать скорость", если множество последовательных шагов меняет веса в одном и том же направлении. Импульс должен находиться в диапазоне [0,0; 1,0]. Вы можете
определить его различные значения для старта и для окончания обучения.
Shuffle cases – порядок представления обучающей выборки.
Если выбрано это свойство, порядок представления обучающих выборок меняется в пределах каждого цикла обучения. Без этого свойства иногда страдает качество алгоритма обучения, поскольку алгоритм начинает обучать сеть на первых обучающих примерах, затем
"отказывается" от них, обучая сеть на более поздних примерах. Перемешивание также добавляет некоторый шум в процесс обучения,
который иногда помогает нейронной сети выйти из локальных минимумов. Хотя перемешивание достаточно выгодно, имеются случаи, в
которых сеть учится лучше без него и это свойство может быть выключено.
Noise – шум. Если это поле установлено в ненулевое значение,
то случайный шум добавляется к каждой входной переменной в течение обучения. Шум – однородно распределенная случайная переменная в диапазоне (-n, +n). Добавление шума может позволить выйти из
локальных минимумов в процессе обучения.
Cross Verification – перекрестная проверка. Если выбрана эта
особенность, то сеть будет тестироваться на каждом цикле обучения,
используя любой определенный набор проверок.
Reinitialize. Если вы хотите запустить заново обучение с алгоритмом обратного распространения, нажмите кнопку «Reinitialize»
перед нажатием кнопки «Train». Кнопка «Reinitialize» сбрасывает веса нейронной сети в исходное случайное состояние.
Jog Weights – «подталкивание» веса. Иногда алгоритм обратного распространения застревает в локальных минимумах, и не может делать продвижения, поскольку градиент ошибки положителен
во всех направлениях. Jog Weights добавляет малое случайное число к
каждому весу. Иногда этого бывает достаточно чтобы выйти из локальных минимумов.
Train – обучение. При нажатии данной кнопки начинается
процесс обучения.
В табл. 1 приведены формулы изменения веса функции в зависимости от алгоритма обучения.
Таблица 1
Алгоритмы обучения
Название
Back Propagation
Формула
ij (t )  i i  ij (t  1)
Levenberg-Marquardt
  ( Z T Z  I ) 1 Z T 
Quick Propagation
ij (t ) 
Delta-Bar-Delta
Z

i
s (t )
ij (t  1)  aij (t  1)
s (t  1)  s (t )
 (t )  (1  )(t )  (t  1)
3.5. Условия останова обучения
Окно Stopping Conditions (см. рис. 7) позволяет задать различные условия остановки обучения. Используется меню: «Train → Auxiliary → Stopping Conditions» и окно: «Stopping Conditions». Простейшее условие - остановка обучения после заданного количества эпох.
Число эпох может быть установлено в окнах каждого алгоритма обучения.
Рис 7. Диалоговое окно «Stopping Conditions»
Окно «Stopping Conditions» позволяет задать следующие альтернативные условия: прекратить обучение, если ошибка понижается
ниже данного уровня; прекратить обучение, когда ошибка будет не в
состоянии улучшаться на заданным числе циклов обучения.
Если определены несколько условий остановки, то обучение
прекращается, когда любое из них удовлетворяется. Максимальное
число всегда должно указываться.
3.6 Статистика
Training Error Graph – График ошибки обучения вычерчивает
RMS (Root Mean Squared) ошибку сети во время всего цикла обучения
по алгоритмам: обратного распространения, сопряженных градиентов, «Levenberg-Marquardt», быстрого распространения, «Delta-BarDelta» и «Kohonen» (см. рис. 8). Ошибки автоматически вычерчиваются, пока выполняется обучение.
Рис. 8. Диалоговое окно «Training Error Graph»
Case Error Bar Chart. Программа TRAJAN отображает индивидуальные ошибки каждого обучающего примера на гистограмме (см.
рис. 9).
Рис. 9. Диалоговое окно «Case Errors»
Ошибки, отображаемые на гистограмме, генерируются автоматически в конце обучения. Они могут также отображаться в реальном
масштабе времени во время всего цикла обучения. Используется меню: «Statistics → Case Errors», окно «Case Errors».
3.7 Запуск сети
Как только сеть была определена и обучена можно проверить
ее работу на обучающей выборке или на полностью новых данных.
Вы можете проверять нейронную сеть примерами из обучающей вы-
борки (Data Sets) по одному в окне «Run Single Case». Для этого используйте меню: «Run → Single Case». Можно проверить сразу всю
обучающую выборку (см. рис. 10) в окне «Run Data Set». Для этого
используйте меню: «Run → Data Set». В окне высвечивается ошибка
обучения («RMS Error Train»), выход нейронной сети по каждому
примеру, целевой выход, ошибка каждого выхода сети.
Рис. 10. Диалоговое окно «Run Data Set»
Окно «Run One-Off Case» позволяет в интерактивном режиме
вводить произвольные примеры и наблюдать реакцию сети
(см. рис. 11). Используется меню: «Run → One Off».
Рис. 11. Диалоговое окно «Run One-Off Case»
4. Порядок выполнения работы
4.1. Проблема «Исключающего ИЛИ»
4.1.1 Создать НС для функции “Исключающее ИЛИ” (табл. 2)
при помощи Network Advisor. Обучать данную НС алгоритмом Back
Propagation на протяжении 1000 циклов (скорость обучения – 0,6,
импульс – 0,3). В процессе выполнения задания веса сети не сбрасывать. Результаты обучения занести в табл. 3.
Таблица 2
Таблица 3
№ Epochs Learning
Rate
1 1000
0,6
2 1000
0,6
3 1000
0,6
4 1000
0,6
X1 X2 Y
0
0
1
1
0
1
0
1
0
1
1
0
Momentum Error
0,3
0,3
0,3
0,3
4.1.2 Построить НС со структурой представленной на рис.12,
реализующую функцию “Исключающее ИЛИ”.
X1
Y
X2
входной
слой
скрытый выходной
слой
слой
Рис. 12. Структура нейронной сети
Обучать НС алгоритмом Back Propagation на протяжении 1000
циклов с различной скоростью обучения (Learning Rate). Результаты
обучения занести в табл. 4.
Таблица 4
№
1
2
3
4
Epochs
1000
1000
1000
1000
Learning Rate
0,9
0,6
0,3
0,1
Error
Зарисовать графики зависимости изменения ошибки от количества циклов (Training Error Graph) для разных скоростей обучения.
4.1.3 Обучать НС алгоритмом «Back Propagation» на протяжении 1000 циклов с разным импульсом («Momentum»). Результаты
обучения занести в табл. 5.
Таблица 5
№
1
2
3
4
Epochs
1000
1000
1000
1000
Momentum
0,9
0,6
0,3
0,1
Error
Зарисовать Training Error Graph для разных импульсов.
4.1.4 Обучать НС алгоритмом «Back Propagation» до достижения ошибкой значения 0,05 с разным значением скорости обучения.
Результаты обучения занести в табл. 6.
Таблица 6
№
1
2
3
4
Error
0,05
0,05
0,05
0,05
Learning Rate
0,9
0,6
0,3
0,1
Epochs
Для случая, соответствующего меньшему количеству циклов,
записать коэффициенты синаптических весов. Зарисовать НС и над
каждой синаптической связью надписать ее вес.
4.1.5 Обучать НС разными алгоритмами обучения. Результаты
занести в табл. 7
Таблица 7
№
1
2
3
4
Алгоритм
Back Propagation
Levenberg-Marquardt
Quick Propagation
Delta-Bar-Delta
Epochs
100
100
100
100
Error
Зарисовать Training Error Graph для разных алгоритмов обучения.
4.2. Распознавание букв
4.2.1 Создать НС, предназначенную для распознавания букв.
Количество входов НС равно количеству точек в растре. Наличие
черного квадрата (пикселя) соответствует 1, отсутствие 0. Выход НС
– один. Каждой букве соответствует определенный уровень выходного сигнала (Т – 0,1; П – 0,2 ; И – 0,3; А – 0,4 и т.д.).
1
6
2
7
3
8
4
9
5
28 29 30
4.2.2. Обучить НС распознаванию букв Т и П (ошибка – не более 0,01). Убедиться в распознавании предъявляемых букв
(см. рис. 13).
4.2.3.
Дообучить НС распознаванию буквы И (обучающая
выборка должна содержать только букву И). Убедиться в распознавании буквы И. Проверить, не «забыла» ли НС буквы Т и П.
4.2.4.
Обучить НС распознаванию букв Т, А, П, И. Убедиться в их распознавании (ошибка должна быть не более 0,01).
Рис. 13. Растры букв
4.2.5 Зарисовать структуру НС распознающей данные буквы.
4.2.6 Предъявить НС любые другие 2 – 3 буквы.
4.2.7 Результаты представить на координатной плоскости. По
оси OY - значение выхода НС, по оси ОХ буквы Т, П, И, А, а также –
те которые не входили в обучающую выборку (см. рис. 14).
Выход
НС
0,1
T
Буквы
Рис. 14. Отображение результатов
4.3. Распознавание образов
4.3.1 Создать НС для распознавания образов (см. рис. 15, 16).
Количество входов НС равно 110, количество выходов 1.
4.3.2. Обучить НС распознаванию образа оптимиста (на выходе
НС – 1) и пессимиста (на выходе НС – 0). Убедиться в распознавании
данных образов. Результаты занести в табл. 8.
Рис. 15. «Оптимист»
Рис. 16. «Пессимист»
4.3.3. Обученной НС предъявить образ с измененными чертами
лица (сдвинуть глаза ближе к переносице, сделать нос длиннее). Убедиться, что НС их распознает. Результаты занести в табл. 8.
Таблица 8
Оптимист
Пессимист
Значение на выходе Ошибка
НС
Оптимист с длинным носом
Пессимист с длинным носом
Оптимист со сдвинутыми глазами
Пессимист со сдвинутыми глазами
5. Содержание отчета
Отчет должен содержать:
 заполненные таблицы 2 – 8;
 схему НС с коэффициентами синаптических весов
(для п. 4.1.4);
 схему НС распознающей буквы (для п. 4.2.5);
 график с буквами на координатной плоскости (для п. 4.2.7);
 схему НС распознающей образы;
 выводы по работе.
Download