Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компютерні системи штучного інтелекту.pdf
Скачиваний:
102
Добавлен:
23.02.2016
Размер:
585.35 Кб
Скачать

Контрольні питання

1.Штучний нейрон.

2.Поняття вагового коефіцієнту та активаційної функції.

3.Персептрон.

4.Навчання персептрона. Проблеми.

Варіанти завдань

У файлах розмістити зображення цифр. Наприклад:

.......*.

....*.*.

.......*.

.......*.

Реалізувати персептрон для розпізнавання цифр та розділення їх на парні та непарні. Кількість шарів і нейронів у шарах підібрати експериментальним шляхом.

Дослідити:

скільки ітерацій знадобилося для навчання персептрона?

використання якої порогової функції дає найкращий результат?

яка імовірність одержання правильної відповіді для розробленої мережі?

Зміст звіту

Звіт про виконання лабораторної роботи повинен містити опис та роздруківку програмної реалізації персептрона, приклади образів цифр для розпізнавання та результати розпізнавання. Також необхідно привести результати досліджень.

Лабораторна робота № 6 Тема: Нейронні мережі. Процедура зворотнього поширення помилки.

Мета: Ознайомитися з алгоритмом зворотнього поширення помилки та створити його програмну реалізацію.

Теоретичні відомості Модель мережі зі зворотнім поширенням помилки

Серед різних структур нейронних мереж однією з найбільш відомих є багатошарова структура, у якій кожен нейрон довільного шару зв’язаний із всіма аксонами нейронів попереднього шару чи, у

33

випадку першого шару, із усіма входами НМ. Такі НМ називаються повнозв’язними. Коли в мережі тільки один шар, алгоритм її навчання з учителем досить очевидний, тому що правильні вихідні стани нейронів єдиного шару відомі, і підстроювання синаптичних зв'язків йде у напрямку, що мінімізує помилку на виході мережі. По цьому принципу будується алгоритм навчання одношарового персептрона. У багатошарових мереж оптимальні вихідні значення нейронів усіх шарів, крім останнього, невідомі, і двох чи більше шаровий персептрон уже неможливо навчити, керуючись тільки величинами помилок на виходах НМ. Один із варіантів рішення цієї проблеми – розробка наборів вихідних сигналів, що відповідають вхідним, для кожного шару НМ, що, є дуже трудомісткою операцією. Другий варіант – динамічне підстроювання вагових коефіцієнтів синапсів, у ході якого вибираються найбільш слабкі зв'язки і змінюються на малу величину в ту чи іншу сторону, а зберігаються тільки ті зміни, що спричинили зменшення помилки на виході всієї мережі. Даний метод, незважаючи на свою удавану простоту, вимагає громіздких рутинних обчислень. І, нарешті, третій, більш прийнятний варіант – поширення сигналів помилки від виходів НМ до її входів, у напрямку, зворотньому прямому поширенню сигналів у звичайному режимі роботи. Цей алгоритм навчання НС одержав назву процедури зворотного поширення помилки. Однак цьому алгоритму властиві і недоліки, головний з який - відсутність прийнятних оцінок часу навчання. Проте алгоритм зворотнього поширення має широке застосування.

Припустимо, що необхідно навчити мережу розпізнавати рукописні цифри. Можна скористатися матрицею, з 256 сенсорів, кожний з яких реєструє присутність чи відсутність чорнильної цятки в межах маленької площі - фрагмента однієї цифри. Для мережі, таким чином, буде потрібно 256 вхідних елементів (по одному на кожен сенсор), 10 вихідних елементів (по одному на кожну можливу цифру) і деяка кількість прихованих елементів. Для кожної цифри мережа повинна генерувати високу активність у відповідному вихідному елементі і низьку в інших вихідних елементах.

Щоб натренувати систему пред'явимо їй зображення цифри і порівняємо дійсну активність на 10 вихідних елементах з бажаною активністю. Потім підрахуємо помилку, представлену як квадрат різниці між дійсним і бажаним виходом. Після цього змінимо вагу кожного зв'язку для того, щоб зменшити помилку. Описаний процес тренування ми повторюємо з багатьма різними написаннями кожної цифри, поки мережа не навчиться правильно розпізнавати всі можливі зображення.

34

Щоб реалізувати цю процедуру, нам потрібно змінювати кожну вагу на величину, пропорційну швидкості, з якою змінюється помилка

вміру зміни ваги. Ця величина (похідна помилки по вазі, позначається EW) обчислюється не просто. Один із способів обчислення EW полягає

втому, щоб змінити вагу на дуже малу величину і подивитися, як

зміниться помилка. Однак цей метод неефективний, оскільки вимагає окремих варіацій для кожної з багатьох ваг.

Приблизно в 1974 році Поль Дж. Вербос винайшов значно більш ефективну процедуру для обчислення EW, коли працював над своєю докторською дисертацією в Гарвардському університеті. Процедура, відома тепер як алгоритм зворотного поширенням (back propagation algorithm), стала одним з найбільш важливих інструментів у навчанні нейронних мереж.

Алгоритм зворотного поширення найпростіше зрозуміти, коли всі елементи мережі линійні. Алгоритм обчислює кожну EW, спочатку обчислюючи EA - швидкість, з якою змінюється помилка при зміні рівня активності елемента. Для вихідних елементів EA є просто різницею між дійсним і бажаним виходом. Щоб обчислити EA для схованого елемента в шарі, що безпосередньо передує вихідному шару, потрібно спочатку ідентифікувати усі ваги між цим схованим елементом і вихідними елементами, з якими з'єднаний даний схований елемент. Потім помножити ці ваги на величини EA для цих вихідних елементів і скласти отримані добутки. Ця сума і дорівнює EA для даного схованого елемента. Обчисливши EA для всіх елементів схованого шару, що сполучений з вихідним, ми можемо аналогічним чином розрахувати EA і для інших шарів, рухаючись в напрямку, зворотньому тому напрямку, у якому активність нейронів поширюється по мережі. Після того, як значення EA для елемента обчислено, підрахувати EW для кожного вхідного зв'язку елемента вже нескладно. Величина EW є добутком EA і активності у вхідному ланцюзі.

Для нелінійних елементів алгоритм зворотнього поширенням включає додатковий крок - перед переміщенням у зворотньому напрямку EA необхідно перетворити в EI - швидкість, з якою змінюється помилка по мірі зміни сумарного входу елемента.

Щоб реалізувати алгоритм зворотного поширення, спочатку дамо математичний опис нейронної мережі. Припустимо, що елемент j - типовий елемент вихідного шару, а елемент i - типовий елемент шару, що передує вихідному. Активність елемента вихідного шару визначається двокроковою процедурою. Спочатку обчислюється

сумарний зважений вхід Xj за допомогою формули

X j = å(Yi × Wij )

(1)

i

 

35

де Yi - рівень активності i-го елемента в попередньому шарі і Wij - вага зв’язку між i-м і j-м елементами.

Далі, елемент обчислює активність Yi за допомогою деякої

функції від сумарного зваженого входу. Звичайно застосовується сігмафункція:

æ

(Xj ) ö

(2)

Yj =1 / ç1 +e

÷ .

è

ø

 

Після того, як активності усіх вихідних елементів визначені,

мережа обчислює помилку, що визначається виразом

 

E = 12 × å(Yj -Dj )2 ,

(3)

j

 

 

де Yj - рівень активності j-го елемента у верхньому шарі, а Dj -

бажаний вихід j-го елемента.

Алгоритм зворотного поширення помилки складається з чотирьох кроків:

1)Обчислити, наскільки швидко змінюється помилка при зміні

вихідного елемента. Ця похідна помилки (EA) є різницею між дійсною й очікуваною активністю

EA j =

dE

= Yj Dj .

(4)

 

 

dYj

 

2)Обчислити, наскільки швидко змінюється помилка по мірі зміни сумарного входу, одержуваного вихідним елементом. Ця величина

( E1 ) є результатом кроку 1, помноженого на швидкість зміни вихідного елемента зі зміною його сумарного входу

E1j

=

dE

=

dE

×

dYj

= E1jYj(1 - Yj ) .

(5)

dX j

dYj

dX j

 

 

 

 

 

 

3)Обчислити, як швидко змінюється помилка по мірі зміни ваги на вхідному зв’язку вихідного елемента. Ця величина ( EW ) є

результатом кроку 2, помноженого на рівень активності елемента, з якого виходить зв'язок.

EW =

dE

=

dE

×

dX j

= E

1j

Y

 

 

 

ij

dWij

 

dX j dXij

i . (6)

 

 

 

 

36