НОУ ІНТУІТ, Лекція, Швидке диференціювання, двоїстість та зворотне поширення помилки

Обчислювальний центр СО РАН у м. Красноярську

У цій лекції викладається матеріал, значення якого для обчислювальної математики і всього того, що по-англійськи називають "computer sciences", виходить далеко за межі нейроінформатики. Згодом він, безумовно, буде включений до програм університетських курсів математичного аналізу.

Обговоримо одну "очевидну" догму, без руйнування якої було б неможливе ефективне навчання нейронних мереж. Нехай обчислювальні витрати (оцінюються часом, витраченим деяким універсальним обчислювальним пристроєм) на обчислення одного значення функції n змінних H(x1. xn) приблизно дорівнюють T . Скільки часу буде потрібно тому ж пристрою на обчислення gradH (при розумному складанні програми)? Більшість математиків з університетським дипломом відповість:

Це не вірно! Правильну відповідь :

де C - константа, яка залежить від розмірності n (у більшості випадків C

Для всіх функцій багатьох змінних, які на практиці, необхідні обчислювальні витрати на пошук їх градієнта лише в два-три рази перевищують витрати на обчислення одного значення функції. Це дивно - адже координатами вектора градієнта служать n приватних похідних, а витрати на обчислення однієї похідної в загальному випадку приблизно такі ж, як і на обчислення значення функції. Чому ж обчислення всіх їх разом дешевше, ніж окремо?

"Диво" пояснюється досить просто: потрібно раціонально організувати обчислення похідних складної функції багатьох змінних, уникаючи дублювання. Для цього необхідно докладно уявити саме обчислення функції, щоб потім мати справу не з "чорною скринькою", що перетворюєвектор аргументів у значення функції, і з детально описаним графом обчислень.

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

Навчання нейронних мереж як мінімізація функції помилки

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

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

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

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

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

Граф обчислення складної функції

Складна функція визначається за допомогою суперпозиції деякого набору "простих". Прості функції належать кінцевому множині F . Формально вони виділені лише приналежністю до множини F - ніяких обов'язкових інших відмінностей цих функцій від інших у загальному випадку не передбачається.

У цьому розділі ми вивчимо способи завданняскладних функцій, тобто формули та відповідні їм графи. Властивості самих функцій нас зараз не цікавлять (роздивлятимемо ноти, а не слухатимемо музику).

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

Терми - це правильно побудовані вирази деякою формальною мовою. Щоб задати таку мову, необхідно визначити їїалфавіт. Він складається з трьох множин символів:

  1. C - множина символів, що позначають константи;
  2. V - множина символів, що позначають змінні;
  3. F - безліч функціональних символів, де - безліч символів для позначення функцій k змінних.

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

Терми визначаються індуктивно:

  1. будь-який символ є терм;
  2. якщо - терми і , то - терм.

Безліч термів T являє собою об'єднання:

де ,

Зручно розбити T на множини - шари, що не перетинаються. Елементи називатимемо термами глибини i або i -шаровими термами. Безліч належать вирази, що позначають ті функції від термів попередніх верств, які самі їм не належать 1 Важко утриматися від вільності мови - звернення до формально ще не введеної, але цілком очевидної інтерпретації (". що позначають"). .

Для оперування з термами дуже корисні дві теореми[3.4].