Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 17
Лабораторна робота № 3
Навчання штучної нейронної мережі методом зворотного розповсюдження помилки
Мета: вивчити принципи побудови та навчання нейронних мереж, зокрема методом зворотного розповсюдження помилки; виконати розпізнавання зображень символів за допомогою нейромережі.
Обладнання: персональний компютер, середовище програмування Borland Delphi; програма „NeuroNet_Image_12”.
1. Теоретичні відомості
1.1. Штучні та біологічні нейронні мережі
Про роботу мозку в даний час відомо дуже мало, тому штучні нейронні мережі /ШНМ/ (neural networks) є надзвичайно спрощеною моделлю біологічних нейронних мереж. Особливість нейромереж (neuronet) те, що їх навчають, а не програмують.
1.2. Штучний нейрон
Основними компонентами нейромережі є нейрони /neurons/ (елементи, вузли), які зєднані звязками. Сигнали передаються по зважених звязках (connection), із кожним з яких повязаний ваговий коефіцієнт (weighting coefficient) або вага.
Штучний нейрон (ШН) імітує в першому наближенні властивості біологічного нейрона. Множина вхідних сигналів (вектор X={x1, x2,…, xn}) надходить на ШН (рис. 1.1). Кожен сигнал множиться на відповідну вагу w1, w2,…, wn і подається на суматор Σ (тіло біологічного нейрона). Вага wі відповідає «силі» одного біологічного синаптичного звязку (множина ваг вектор W). Суматор складає зважені входи алгебраїчно, створюючи вихід NET = XW.
Рис. 1.1. Штучний нейрон
1.3. Активаційні функції нейронів
Сигнал NET далі, як правило, перетворюється активаційною функцією F і дає вихідний нейронний сигнал OUT = F(NET). Активаційна функція F(NET) може бути:
1. Пороговою бінарною функцією (рис. 1.2 а)
, (1.1)
де Т деяка постійна порогова величина, що моделює нелінійну передавальну характеристику біологічного нейрона.
2. Лінійною обмеженою функцією (рис. 1.2 б)
. (1.2)
3. Функцією гіперболічного тангенса (рис. 1.2 в)
, (1.3)
де С > 0 коефіцієнт ширини сигмоїди по осі абсцис (звичайно С=1).
4. Сигмоїдною (S-подібною) або логістичною функцією (рис. 1.2 г)
. (1.4)
З виразу для сигмоїда очевидно, що вихідне значення нейрона лежить у діапазоні [0, 1]. Популярність сигмоїдної функції зумовлюють такі її властивості:
, (1.5)
що дає можливість використовувати широкий спектр оптимізаційних алгоритмів.
У штучному нейроні з активаційною функцією (рис. 1.3) блок, позначений F, приймає сигнал NET і видає сигнал OUT. Якщо блок F звужує діапазон зміни величини NET так, що при будь-яких значеннях NET значення OUT належать деякому кінцевому інтервалу, то F називається «стискаючою» функцією. Як «стискаюча» функція часто використовується сигмоїдна функція.
а б
в г
Рис. 1.2. Вид функцій активації: а порогова бінарна функція; б лінійна обмежена функція; в гіперболічний тангенс; г сигмоїд
Рис. 1.3. Штучний нейрон з активаційною функцією F
4. Одношарові нейронні мережі
Хоча один нейрон і здатний виконувати прості процедури розпізнавання, ефективність нейронних обчислень виникає від зєднань нейронів у мережі (рис. 1.4). Зазначимо, що вершини-круги зліва служать лише для розподілу вхідних сигналів і тому не вважатимуться шаром. Кожен елемент із множини входів Х окремою вагою сполучений із кожним штучним нейроном.
Зручно вважати вагу елементами матриці W. Матриця має n рядків і m стовпців, де n кількість входів, а m кількість нейронів. Наприклад, w3,2 це вага, що пов'язує третій вхід із другим нейроном. Таким чином, обчислення вихідного вектора Y, компонентами якого є виходи OUT нейронів, зводиться до матричного множення Y = XW, де Y і Х вектори-рядки.
Рис. 1.4. Одношарова ШНМ
Персептрони складаються з одного шару штучних нейронів (рис. 1.5), сполучених за допомогою вагових коефіцієнтів із множиною входів (рис. 1.6).
Рис. 1.5. Нейрон персептрона
Перші персептрони були створені Ф. Розенблатом у 60-х роках і викликали великий інтерес. Первинна ейфорія змінилася розчаруванням, коли виявилося, що персептрони не здатні навчитися розвязанню ряду простих задач. Проте відкриття методів навчання багатошарових ШНМ сприяло відродженню інтересу до ШНМ.
Рис. 1.6. Персептрон
1.6. Багатошарові нейронні мережі
Багатошарові мережі (рис. 1.7) володіють значно більшими можливостями, ніж одношарові. Проте багатошарові мережі можуть привести до збільшення обчислювальної потужності в порівнянні з одношаровими лише в тому випадку, якщо активаційна функція між шарами буде нелінійною (оскільки множення матриць асоціативне, то X(W1W2) еквівалентно (XW1)W2).
Рис. 1.7. Багатошарова ШНМ
1.7. Навчання нейронних мереж
Мережа навчається, щоб для деякої множини входів X давати бажану множину виходів Y. Навчання здійснюється шляхом послідовного предявлення вхідних векторів з одночасним налагодженням ваг відповідно до певної процедури. В процесі навчання ваги мережі поступово стають такими, щоб кожен вхідний вектор виробляв потрібний вихідний вектор. Розрізняють алгоритми навчання з вчителем і без вчителя.
Навчання з вчителем припускає, що для кожного вхідного вектора X існує цільовий вектор YT, що є необхідним виходом. Разом вони називаються навчальною парою. Звичайно мережа навчається для деякої кількості таких навчальних пар (навчальної множини). В ході навчання зчитується вхідний вектор X, обчислюється вихід мережі Y і порівнюється з відповідним цільовим вектором YT, різниця D ~ YT Y за допомогою зворотного звязку подається в мережу і змінюються ваги W відповідно до алгоритму, прагнучого мінімізувати помилку ε. Зчитування векторів навчальної множини і налагодження ваг виконується доти, поки сумарна помилка для всієї навчальної множини не досягне заданого низького рівня.
Навчання без вчителя. Незважаючи на численні прикладні досягнення, навчання з вчителем критикувалося за свою біологічну неправдоподібність. Важко уявити навчальний механізм у мозку, який би порівнював бажані і дійсні значення виходів, виконуючи корекцію за допомогою зворотного звязку. Якщо допустити подібний механізм в мозку, то звідки тоді виникають бажані виходи? Навчання без вчителя є набагато правдоподібнішою моделлю навчання в біологічній системі. Розвинена Кохоненом і багатьма іншими, вона не потребує цільового вектора для виходів і, отже, не вимагає порівняння з ідеальними відповідями. Навчальна множина складається лише з вхідних векторів. Навчальний алгоритм налагоджує вагу мережі так, щоб виходили узгоджені вихідні вектори, тобто щоб предявлення досить близьких вхідних векторів давало однакові виходи.
1.8. Алгоритм зворотного розповсюдження помилки (backpropagation)
Зворотне розповсюдження помилки означає, що сигнали помилки з виходу мережі використовуються для корекції ваг попередніх шарів. Розглянемо алгоритм навчання на прикладі 3-шарової ШНМ (рис. 1.7), структура якої наступна:
1. Вхідний шар X; стани його елементів записані у векторі Xi, де i = 1... QX. Розмір навчальної множини (кількість векторів) на вході Х дорівнює Qn, номер вектора n = 1... QN.
2. Приховані шари
Шар V1 (рівень L = 1): вектор V1k1, де k1 = 1...QV1; матриця ваг W1i,k1; різниця векторів D1k1;
Шар V2 (L = 2): вектор V2k2, де k2 = 1...QV2; матриця ваг W2k1,k2; різниця D2k2;
3. Вихідний шар (L = 3): стани його елементів записані у векторі Yj; j = 1...QY; матриця ваг W3k2,j; різниця D3j; істинний вихід (true) описується вектором YTj, j = 1...QY. Тобто Ytj істинне значення для елемента j, Yj його реальних вихід.
ШНМ навчається за таким алгоритмом (рис. 1.8).
1. Ініціалізація. Початкові вагові коефіцієнти W приймаються рівними малим випадковим значенням, наприклад з діапазону [-0.3,.. +0.3]:
, , , ΔW=0.3.
У вагових матрицях рядки відповідають елементам, від яких йдуть звязки, а стовпці до яких йдуть звязки.
Рис. 1.8. Алгоритм навчання нейромережі зі зворотним розповсюдженням помилки
2. Нормалізація (масштабування) значень усіх векторів X, YТ(для кожного типу окремо) в діапазон (MinN; MaxN), наприклад MinN=0.1; MaxN=0.9.
.
3. Пряме розповсюдження (Direct) полягає у знаходженні вихідного вектора Y на основі вхідного X за наступними формулами:
Шар 1: , , де .
Шар 2: , , де .
Шар 3: , , де .
В результаті прямого розповсюдження можна обчислити помилки навчання мережі (для всіх векторів навчальної множини):
Якщо значення сумарної квадратичної помилки εk менше від заданого, то процес навчання мережі завершується.
4. Зворотне розповсюдження помилки (backpropagation) полягає в корекції вагових коефіцієнтів через сигнал різниці D.
Шар 3: , ,
де , e номер епохи; оскільки в якості активаційної функції використовується сигмоїдна, тому різниця векторів (YT-Y) множиться на похідну від сигмоїдної функції: Y(1 Y) .
Шар 2:,, де .
Шар 1: , ,
де , ηY, ηL2, ηL1 норми навчання (наприклад, 0.5).
Із метою контролю значень матриці W визначаються: Min мінімальне значення; Max максимальне; Ms математичне сподівання; Sigma середньоквадратичне відхилення.
2. Порядок виконання лабораторної роботи
Завдання для варіантів V 1...V 100
1. Згідно з номером варіанта (V) створити 4 початкові чорно-білі /бітові/ зображення (еталони) друкованих символів (табл. 2.1) розміром 16*16 пікселів (зображення зберегти у файлах формату *.bmp). Якщо номер варіанта , то шрифт символів звичайний; якщо , то шрифт курсивний; якщо , то шрифт напівжирний; якщо , то шрифт напівжирний курсивний. Назви файлів початкових зображень вибрати відповідно до назви символів (наприклад, файл А1.bmp для символу „А”).
Для кожного початкового зображення створити наступні зображення розміром 16*16 пікселів (рис. 2.1):
а б в г
Рис. 2.1. Зображення символу „А”: а початкове; б зміщене;
в повернуте; г пошкоджене
Зміни зображень символів можна виконати за допомогою, наприклад, програм Paint та Adobe Photoshop.
2. Створити навчальну вибірку нейромережі отримані 20 зображень записати у папку „Neuro_Data\Neuro_Train”, яка розміщена у папці головної програми (рис. 2.2).
Рис. 2.2. Фрагмент навчальної (train) вибірки ШНМ
Перелік зображень навчальної вибірки записати у файл „File_Name_tx1.txt” (рис. 2.3 а). У файл назв класів “Class_Name_ty1.txt” (рис. 2.3 б) записати назви символів згідно варіанту, при цьому назви класів пронумерувати (починаючи з 1 із кроком 1). У файлі навчальної вибірки (рис. 2.3 а) перед назвою кожного зображення записати номер відповідного класу (рис. 2.3 б). У вищеописаних файлах в кожному рядку номер і назва повинні розділятися одним пробілом.
а) б)
Рис. 2.3. Структура файлу навчальної вибірки (а) та файлу назв класів (б)
3. Створити тестову вибірку нейромережі з 16-ти зображень. Для цього на основі кожного початкового зображення потрібно створити 4 змінених зображення (аналогічно як для навчальної вибірки, але величина трансформації не повинна бути не більшою, ніж для відповідного зображення навчальної вибірки). Отримані 16 змінених зображень записати у папку „Neuro_Data\Neuro_Recogn”, яка розміщена у папці головної програми (рис. 2.4).
Рис. 2.4. Фрагмент тестової вибірки ШНМ
4. Виконати навчання ШНМ за допомогою програми „NeuroNet_Image_12” (рис. 2.5). Для цього потрібно спочатку встановити параметри навчання нейронної мережі (рис. 2.6). Навчання провести для таких значень допустимої похибки навчання mse_Min: 10-2, 10-3, 10-4 (всі інші параметри за замовчуванням); для кожного випадку записати час навчання мережі та зберегти матриці ваг W у відповідних файлах.
5. Виконати розпізнавання 16-ти зображень створених символів з папки „Neuro_Data\Neuro_Recogn” за допомогою ШНМ, використовуючи матриці ваг W, отримані для різних значень допустимої похибки. Для кожного зображення записати отриманий вихідний вектор Y (рис. 2.7) та результат розпізнавання (оформити у вигляді таблиці звіту). На основі отриманих даних зробити висновки про ефективність розпізнавання. Які зображення розпізнаються краще?
6. Провести навчання ШНМ при зміні кількості нейронів у прихованих шарах (рис. 2.6) на величину -50 % та +50 %. Для парних варіантів змінювати кількість нейронів у шарі 1 (QV1), а для непарних у шарі 2 (QV2). Всі значення часу навчання оформити у вигляді таблиці звіту. На основі отриманих даних зробити висновки про ефективність навчання.
7. Виконати навчання ШНМ при ввімкнених прапорцях візуалізації (рис. 2.6) та в покроковому режимі. Зробити 3 екранні форми для різних кроків та пояснити їх (додати до звіту).
Таблиця 2.1
Символи для варіантів V
(V1= V; якщо V > 30, то V1 = V - 30)
V1 |
Символ |
V1 |
Символ |
|||||||
1 |
2 |
3 |
4 |
1 |
2 |
3 |
4 |
|||
1 |
g |
е |
g |
е |
16 |
v |
с |
v |
с |
|
2 |
h |
є |
h |
є |
17 |
w |
т |
w |
т |
|
3 |
i |
ж |
i |
ж |
18 |
x |
у |
x |
у |
|
4 |
j |
з |
j |
з |
19 |
y |
ф |
y |
ф |
|
5 |
k |
и |
k |
и |
20 |
z |
х |
z |
х |
|
6 |
l |
і |
l |
і |
21 |
ы |
ц |
э |
ц |
|
7 |
m |
ї |
m |
ї |
22 |
э |
ч |
Ы |
ч |
|
8 |
n |
й |
n |
й |
23 |
1 |
ш |
6 |
ш |
|
9 |
o |
к |
o |
к |
24 |
2 |
щ |
7 |
щ |
|
10 |
p |
л |
p |
л |
25 |
3 |
ю |
8 |
ю |
|
11 |
q |
м |
q |
м |
26 |
4 |
я |
9 |
я |
|
12 |
r |
н |
r |
н |
27 |
5 |
ь |
0 |
ь |
|
13 |
s |
о |
s |
о |
28 |
d |
б |
d |
б |
|
14 |
t |
п |
t |
п |
29 |
e |
г |
e |
г |
|
15 |
u |
р |
u |
р |
30 |
f |
д |
f |
д |
8. Для одного з випадків навчання записати параметри різниці векторів D (рис. 2.9) для шару 2 на початку навчання та після його завершення, провести аналіз їх зміни та зробити відповідні екранні форми.
9. Додаткове завдання. Розглянути будову і функціонування програми „NeuroNet_Image_12” на рівні програмного коду. Створити спрощену схему алгоритму програми (оператори візуалізації та роботи з файлами не враховувати).
Довідка для роботи з програмою „NeuroNet_Image_12”
Програма „NeuroNet_Image_12”, створена в середовищі Borland Delphi, призначена для навчання 3-шарової ШНМ методом зворотного розповсюдження помилки. На вхідний шар Х подаються зображення символів у вигляді одновимірних векторів (записується яскравість кожного пікселя зображення по рядках). На основі значень вектора Х розраховуються вектори прихованих шарів V1, V2 та вихідного шару Y. При навчанні мережі отримані виходи Y порівнюються з істинними YT, у випадку їх відмінності відбувається корекція матриць вагових коефіцієнтів W1, W2, W3. Процес навчання завершується, якщо отримана похибка mse (сумарна квадратична похибка εk) менша від заданої mse_Min.
Рис. 2.5. Головна форма програми „NeuroNet_Image_12”
Навчання ШНМ відбувається протягом часу Time_Delta. Для початку навчання потрібно натиснути кнопку „Навчити НМ”, завершити процес навчання можна кнопкою „Стоп”. Після успішного навчання матриці вагових коефіцієнтів W можна зберегти опцією „Зберегти_W”. Якщо ШНМ була навчена, то за допомогою опції „Розпізнати” можна виконати розпізнавання зображень символів. Значення вагових коефіцієнтів навчених ШНМ можна зчитати з файлу кнопкою „Відкрити_W”.
Опція „Сист_параметри” використовується для встановлення параметрів навчання (рис. 2.6). Опція „Результат_Y” показує результати навчання або розпізнавання (рис. 2.7). Опція „Показати_W_п” забезпечує перегляд параметрів вагових матриць (рис. 2.8).
Рис. 2.6. Параметри навчання ШНМ: QE максимальна кількість епох навчання; MinN, MaxN мінімальне й максимальне значення векторів ШНМ;
QV1, QV2 кількість нейронів у прихованих шарах 1 та 2;
Eta_L1, Eta_L2, Eta_Y норми навчання для відповідних шарів;
Mse_Min допустима похибка навчання, Delta_W початковий діапазон значень матриці W; прапорець „Інверсія_зображення” встановити для чорних зображень на білому фоні; прапорці “Графік_W”, “Графік_V”, “Графік_D” показати візуально матриці ваг W, вектори шарів V і вектори різниці D відповідно; прапорець „Крок” виконувати навчання НМ по кроках
Рис. 2.7. Результати розпізнавання
Рис. 2.8. Параметри матриць вагових коефіцієнтів W
Рис. 2.9. Параметри векторів D
Опція „Показати_D” відображає вектори різниці D для всіх шарів (рис. 2.9).
Контрольні запитання та завдання
Список використаної літератури