Топ питань
Часова шкала
Чат
Перспективи
Автоматичне диференціювання
З Вікіпедії, вільної енциклопедії
Remove ads
Автоматичне диференціювання (англ. automatic differentiation, AD) в математиці та символьних обчисленнях — спосіб обчислити похідну для функції, яка задана алгоритмом.
AD використовує той факт, що довільна функція в комп'ютерній програмі все одно буде обчислюватись за допомогою арифметичних дій (+, -, *, /) та елементарних функцій стандартних бібліотек (exp, log, sin, cos, і т.д.). Застосовуючи ланцюгове правило, похідна довільного порядку може бути обчислена з заданою точністю, за кількість операцій, що пропорційна кількості операцій для обчислення самої функції.
Автоматичне диференціювання не є:
Символьне диференціювання не завжди ефективне, оскільки деякі функції важко представити єдиним виразом, а чисельне диференціювання призводить до внесення похибок округлення та дискретизації. Обидва ці методи не є зручними для обчислення похідних високих порядків, оскільки похибка і складність значно зростає. Також обидва ці методи є повільними при обчисленні часткових похідних для функції багатьох аргументів. Автоматичне диференціювання вирішує всі ці проблеми, але вводить додаткову програмну залежність.
Remove ads
Ланцюгове правило вперед і назад
Узагальнити
Перспектива
Основою AD є розклад диференціалів використовуючи ланцюгове правило. Застосувавши його до складеної функції y = g(h(x)) = g(w) отримаємо:
- Рух вперед
Зафіксувавши незалежну змінну, і застосовуючи ланцюгове правило до проміжної функції, отримаємо:
- Рух назад
Застосовуючи ланцюгове правило до початкової функції по нововведеній змінній отримаємо:
Рух вперед і назад є крайніми випадками застосування ланцюгового правила. Задача ж обчислення повного Якобіана з мінімальною кількістю операцій є NP-повною.
Remove ads
Використання дуальних чисел
Узагальнити
Перспектива
Застосовуючи рух вперед, помістимо поряд із кожним числом, що використовується для обчислення функції, ще одне, яке міститиме значення похідної. Буквально, замінимо дійсне число на конструкцію , де є дійсним числом, а є уявною одиницею, такою, що . Така конструкція називається дуальним числом.
Тоді для арифметичних операцій отримаємо:
Тобто, уявна частина знову буде містити значення похідної від виразу в дійсній частині.
Запишемо дуальні числа без уявної одиниці у вигляді впорядкованої пари і використаємо ланцюгове правило для функції двох аргументів :
де та є похідними по першому та другому аргументу відповідно.
Підставивши замість арифметичні операції та елементарні функції, отримаємо повний набір операцій над дуальними числами:
Remove ads
Реалізація
Реалізація автоматичного диференціювання можлива через:
- автоматичне перетворення вихідного коду,
- перевантаження функцій та операторів.
Джерела
- www.autodiff.org An "entry site to everything you want to know about automatic differentiation" [Архівовано 14 квітня 2021 у Wayback Machine.]
![]() | В іншому мовному розділі є повніша стаття Automatic differentiation(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою перекладу з англійської.
|
Remove ads
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads