национальный исследовательский томский политехнический университет
Скачать 1.38 Mb.
|
27 Таблица 3.1 – Последовательность действий для прямого режима Операции для вычисления значения функции Операции для вычисления производной ?????? ?????? = ?????? ?????? ?????? ?????? = ?????? ?????? ?????? ?????? = ?????? ?????? ?????? ?????? ?????? ?????? = ?????????????????? (?????? ?????? ) ?????? ?????? = ?????? ?????? + ?????? ?????? ??????̇ ?????? = ?????? (начальное значение) ??????̇ ?????? = ?????? (начальное значение) ?????? ?????? ̇ = ?????? ?????? ??????̇ ?????? + ?????? ?????? ??????̇ ?????? ??????̇ ?????? = ??????̇ ?????? ??????????????????(?????? ?????? ) ??????̇ ?????? = ??????̇ ?????? + ??????̇ ?????? На рисунке 3.1 показано графическое изображение этого процесса в виде вычислительного графа. Рисунок 3.1 – Прямое вычисление значения производной Чтобы вычислить градиент данной функции, для которого требуется производная от ?????? не только по ?????? ?????? , но и по ?????? ?????? , необходимо провести аналогичные вычисления (таблица 3.1) со следующими начальными значениями: ??????̇ ?????? = ???????????? ?????? ???????????? ?????? = ??????, (3.24) 28 ??????̇ ?????? = ???????????? ?????? ???????????? ?????? = ??????. (3.25) 3.2.3 Обратный режим Обртный режим АД был впервые опубликован в 1970 году Seppo Linnainmaa в его магистерской диссертации [9], [10], [11]. При обратном накоплении сначала фиксируется зависимая переменная, подлежащая дифференцированию, и рекурсивно вычисляется производная каждого подвыражения: ???????????? ???????????? = ???????????? ???????????? ?????? ???????????? ?????? ???????????? = ( ???????????? ???????????? ?????? ???????????? ?????? ???????????? ?????? ) ???????????? ?????? ???????????? = ⋯ (3.26) Обозначим числовое значение производной следующим образом: ?????? ̅ = ???????????? ???????????? (3.27) Операции по вычислению производной для функции из предыдущего пункта с использованием обратного накопления показаны в таблице 3.2. Таблица 3.2 – Последовательность действий для обратного режима Операции для вычисления значения функции Операции для вычисления производной ?????? ?????? = ?????? ?????? ?????? ?????? = ?????? ?????? ?????? ?????? = ?????? ?????? ?????? ?????? ?????? ?????? = ?????????????????? (?????? ?????? ) ?????? ?????? = ?????? ?????? + ?????? ?????? ?????? ̅ ?????? = ?????? (начальное значение) ?????? ̅ ?????? = ?????? ̅ ?????? ?????? ̅ ?????? = ?????? ̅ ?????? ?????? ̅ ?????? = ?????? ̅ ?????? ?????? ?????? ?????? ̅ ?????? = ?????? ̅ ?????? ?????? ?????? + ?????? ̅ ?????? ?????????????????? (?????? ?????? ) На рисунке 3.2 показано графическое изображение этого процесса в виде вычислительного графа. 29 Рисунок 3.2 – Обратное вычисление значений производных Для вычисления всех частных производных необходимо только одно начальное значение, однако обратный режим требует хранения промежуточных переменных ?????? ?????? 3.2.4 Дуальные числа Автоматическое дифференцирование в прямом режиме осуществляется путём расширения алгебры действительных чисел и получения новой арифметики. Заменим каждое число ?????? числом ?????? + ?????? ′ ??????, где ?????? ′ – действительное, а ?????? – абстрактное число, обладающее свойством ?????? ?????? = ?????? (бесконечно малая величина). Новая арифметика теперь состоит из упорядоченных пар, элементов 〈??????, ?????? ′ 〉: 〈??????, ?????? ′ 〉 + 〈??????, ?????? ′ 〉 = 〈?????? + ??????, ?????? ′ + ?????? ′ 〉, (3.28) 〈??????, ?????? ′ 〉 − 〈??????, ?????? ′ 〉 = 〈?????? − ??????, ?????? ′ − ?????? ′ 〉, (3.29) 〈??????, ?????? ′ 〉 ∗ 〈??????, ?????? ′ 〉 = 〈????????????, ?????? ′ ?????? + ???????????? ′ 〉, (3.30) |