Автоматичне диференціювання (, AD) в математиці та символьних обчисленнях — спосіб обчислити похідну для функції, яка задана алгоритмом.
AD використовує той факт, що довільна функція в комп'ютерній програмі все одно буде обчислюватись за допомогою арифметичних дій (+, -, *, /) та елементарних функцій стандартних бібліотек (exp, log, sin, cos, і т.д.). Застосовуючи ланцюгове правило, похідна довільного порядку може бути обчислена з заданою точністю, за кількість операцій, що пропорційна кількості операцій для обчислення самої функції.
Автоматичне диференціювання не є: ні символьним диференціюванням, ні чисельним диференціюванням. Символьне диференціювання не завжди ефективне, оскільки деякі функції важко представити єдиним виразом, а чисельне диференціювання призводить до внесення похибок округлення та дискретизації. Обидва ці методи не є зручними для обчислення похідних високих порядків, оскільки похибка і складність значно зростає. Також обидва ці методи є повільними при обчисленні часткових похідних для функції багатьох аргументів. Автоматичне диференціювання вирішує всі ці проблеми, але вводить додаткову програмну залежність.
Ланцюгове правило вперед і назад Основою AD є розклад диференціалів використовуючи ланцюгове правило. Застосувавши його до складеної функції отримаємо:
Рух вперед Зафіксувавши незалежну змінну, і застосовуючи ланцюгове правило до проміжної функції, отримаємо:
Рух назад Застосовуючи ланцюгове правило до початкової функції по нововведеній змінній отримаємо:
Рух вперед і назад є крайніми випадками застосування ланцюгового правила. Задача ж обчислення повного Якобіана з мінімальною кількістю операцій є NP-повною.
Використання дуальних чисел Застосовуючи рух вперед, помістимо поряд із кожним числом, що використовується для обчислення функції, ще одне, яке міститиме значення похідної. Буквально, замінимо дійсне число на конструкцію , де є дійсним числом, а є уявною одиницею, такою, що . Така конструкція називається дуальним числом.
Тоді для арифметичних операцій отримаємо:
Тобто, уявна частина знову буде містити значення похідної від виразу в дійсній частині.
Запишемо дуальні числа без уявної одиниці у вигляді впорядкованої пари і використаємо ланцюгове правило для функції двох аргументів :
де та є похідними по першому та другому аргументу відповідно.
Підставивши замість арифметичні операції та елементарні функції, отримаємо повний набір операцій над дуальними числами:
Реалізація Реалізація автоматичного диференціювання можлива через: автоматичне перетворення вихідного коду, перевантаження функцій та операторів.
Джерела www.autodiff.org An "entry site to everything you want to know about automatic differentiation"