Математика штучних нейронних мереж

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Штучна нейронна мережа (ШНМ, англ. artificial neural network, ANN) поєднує біологічні принципи з передовою статистикою для розв'язування задач у таких областях як розпізнавання образів та ігровий процес. ШНМ приймають базову модель нейронних аналогів, з'єднаних один з одним різними способами.

Структура[ред. | ред. код]

Нейрон[ред. | ред. код]

Нейрон з міткою , що отримує вхід від нейронів-попередників, містить наступні складові:[1]

  • збудження (англ. activation) , стан нейрона, що залежить від дискретного часового параметра,
  • необов'язковий поріг (англ. threshold) , що лишається незмінним, якщо не змінюється навчанням,
  • функцію збудження (англ. activation function) , яка обчислює нове збудження в заданий час виходячи з , та чистого входу , породжуючи відношення
  • та функцію виходу (англ. output function) , яка обчислює вихід зі збудження

Функція виходу часто просто тотожна функція.

Нейрон входу (англ. input neuron) не має попередників, і слугує інтерфейсом входу для всієї мережі. Так само, нейрон виходу (англ. output neuron) не має наступників, й отже, слугує інтерфейсом виходу всієї мережі.

Функція поширення[ред. | ред. код]

Функція поширення (англ. propagation function) обчислює вхід до нейрона з виходів , і зазвичай має вигляд[1]

Зміщення[ред. | ред. код]

Може бути додано член зміщення (англ. bias), що змінює її вигляд на такий:[2]

де  — це зміщення.

Нейронні мережі як функції[ред. | ред. код]

Див. також: Графові моделі

Нейромережні моделі можливо розглядати як такі, що визначають функцію, яка бере вхід (спостереження) та видає вихід (рішення) або розподіл над або над та . Іноді моделі тісно пов'язані з певним правилом навчання. Загальне використання фрази «модель ШНМ» насправді є визначенням класу таких функцій (де членів класу отримують варіюванням параметрів, ваг з'єднань або особливостей архітектури, таких як кількість нейронів, кількість шарів або їхня зв'язність).

З математичної точки зору мережну функцію нейрона визначають як композицію інших функцій , які можливо розкласти далі на інші функції. Це можливо зручно подавати у вигляді мережної структури зі стрілками, що зображують залежності між функціями. Широко вживаний тип композиції — нелінійна зважена сума, де , де (що зазвичай називають передавальною функцією, також англ. activation function[3]) — це деяка наперед визначена функція, наприклад, гіперболічний тангенс, сигмоїдна функція, нормована експоненційна функція (англ. softmax function) або випрямляльна функція (англ. rectifier function). Важливою характеристикою передавальної функції є те, що вона забезпечує плавний перехід за зміни значень входу, тобто невелика зміна входу призводить до невеликої зміни виходу. Далі йдеться про набір функцій як вектор .

Граф залежностей ШНМ

Цей рисунок зображує такий розклад , із залежностями між змінними, показаними стрілками. Їх можливо тлумачити двояко.

Перший погляд — функційний: вхід перетворюється на тривимірний вектор , який відтак перетворюється на 2-вимірний вектор , який остаточно перетворюється на . Цей погляд найчастіше зустрічається в контексті оптимізації.

Другий погляд — імовірнісний: випадкова змінна залежить від випадкової змінної , що залежить від , яка залежить від випадкової величини . Цей погляд найчастіше зустрічається в контексті графових моделей.

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

Два окремі зображення графу залежностей рекурентної ШНМ

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

Зворотне поширення[ред. | ред. код]

Алгоритми тренування зворотним поширенням поділяють на три категорії:

Алгоритм[ред. | ред. код]

Нехай  — мережа з з'єднань, входів та виходів.

Нижче позначують вектори в ,  — вектори в , а  — вектори в . Їх називають входами (англ. inputs), виходами (англ. outputs) та вагами (англ. weights) відповідно.

Мережа відповідає функції , яка, за заданих ваг , відображує вхід до виходу .

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

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

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

Це робить мінімізувальною вагою, знайденою градієнтним спуском.

Псевдокод навчання[ред. | ред. код]

Щоби втілити наведений вище алгоритм, необхідні явні формули для градієнта функції , де функція .

Поширення[ред. | ред. код]

Поширення охоплює наступні етапи:

  • Пряме поширення крізь мережу для породження значень виходу
  • Розрахунок витрат (англ. cost, члену похибки, англ. error term)
  • Поширення збуджень виходу крізь мережу у зворотному напрямку з використанням тренувального цільового образу для породження дельт (різниць між цільовими та фактичними значеннями виходу) всіх нейронів виходу та прихованих нейронів.

Уточнювання ваг[ред. | ред. код]

Для кожної ваги:

  • Помножити дельту виходу ваги на збудження входу, щоби знайти градієнт ваги.
  • Відняти відношення (відсоток) градієнта ваги від неї.

Темп навчання (англ. learning rate) — це відношення (відсоток), яке впливає на швидкість і якість навчання. Що більше це відношення, то швидше тренується нейрон, але що це відношення менше, то точніше навчання. Знак градієнта ваги вказує, чи змінюється похибка прямо, чи обернено до ваги. Тож вагу необхідно оновлювати в протилежному напрямку, «спускаючись» з градієнта.

Навчання повторюють (на нових пакетах), доки мережа не запрацює адекватно.

Псевдокод[ред. | ред. код]

Псевдокод для алгоритму стохастичного градієнтного спуску для навчання тришарової мережі (один прихований шар):

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

Рядки, позначені як «зворотний прохід», може бути втілено за допомогою алгоритму зворотного поширення, який обчислює градієнт похибки мережі щодо змінюваних ваг мережі.[5]

Примітки[ред. | ред. код]

  1. а б Zell, Andreas (2003). chapter 5.2. Simulation neuronaler Netze [Simulation of Neural Networks] (German) (вид. 1st). Addison-Wesley. ISBN 978-3-89319-554-1. OCLC 249017987. (нім.)
  2. DAWSON, CHRISTIAN W (1998). An artificial neural network approach to rainfall-runoff modelling. Hydrological Sciences Journal. 43 (1): 47—66. doi:10.1080/02626669809492102. (англ.)
  3. The Machine Learning Dictionary. www.cse.unsw.edu.au. Архів оригіналу за 26 серпня 2018. Процитовано 18 серпня 2019. (англ.)
  4. M. Forouzanfar; H. R. Dajani; V. Z. Groza; M. Bolic & S. Rajan (July 2010). Comparison of Feed-Forward Neural Network Training Algorithms for Oscillometric Blood Pressure Estimation. 4th Int. Workshop Soft Computing Applications. Arad, Romania: IEEE. (англ.)
  5. Werbos, Paul J. (1994). The Roots of Backpropagation. From Ordered Derivatives to Neural Networks and Political Forecasting. New York, NY: John Wiley & Sons, Inc. (англ.)