1. Автоматическое дифференцирование в прямом или обратном режиме: в чем разница?(arXiv)

Автор: Бирте ван ден Берг, Том Шрайверс, Джеймс МакКинна, Александр Ванденбрук

Аннотация:Автоматическое дифференцирование (AD) вызывает интерес у исследователей во многих дисциплинах, и его популярность возросла с момента его применения в машинном обучении и нейронных сетях. Хотя многие исследователи понимают и знают, как применять AD, по-настоящему понять лежащие в его основе процессы по-прежнему сложно. Однако с алгебраической точки зрения АД выглядит удивительно естественно: она берет свое начало из законов дифференцирования. В этой работе мы используем методы алгебры программирования, чтобы рассуждать о различных вариантах AD, используя Haskell для иллюстрации наших наблюдений. Наши результаты основаны на трех фундаментальных алгебраических абстракциях: (1) понятии модуля над полукольцом, (2) конструкции Нагаты «идеализации модуля» и (3) дельта-функции Кронекера, которые вместе позволяют нам написать единую абстрактное определение AD. Из этого однострочного определения и путем реализации наших алгебраических структур различными способами мы получаем разные варианты AD, которые имеют одинаковое экстенсиональное поведение, но разные интенсиональные свойства, в основном с точки зрения (асимптотической) вычислительной сложности. Мы показываем различные варианты, эквивалентные с помощью изоморфизмов Кронекера, дальнейшей разработки нашей инфраструктуры Haskell, которая гарантирует правильность построения. Используя эту структуру, эта статья стремится сделать варианты AD более понятными, рассматривая вопрос с алгебраической точки зрения.

2.Денотационно правильное, чисто функциональное, эффективное автоматическое дифференцирование в обратном режиме(arXiv)

Автор:Матье Юот, Амир Шайха

Вывод:Дифференциация обратного режима используется для оптимизации, но она вводит ссылки, которые нарушают чистоту базовых программ, делая их, как известно, трудными для оптимизации. Мы представляем дифференцирование в обратном режиме на чисто функциональном языке с операциями над массивами. Это первый метод, обеспечивающий доказуемо эффективную, чисто функциональную и денотативно правильную дифференциацию обратного режима. Мы показываем, что наше преобразование семантически корректно и подтверждает принцип дешевого градиента. Вдохновленные PROP и компиляцией в категории, мы вводим новое промежуточное представление, которое называем «унарной формой». Наше обратное преобразование рассматривается как схема компиляции через это промежуточное представление. Мы получаем доказуемо эффективные градиенты, выполняя общие частичные оптимизации вычислений после преобразования обратного режима, в отличие от полученных вручную. Для простых программ первого порядка полученные выходные программы напоминают код статического одиночного присваивания (SSA). Мы подчеркиваем модульность нашего подхода и показываем, как наш язык можно легко обогатить более оптимизированными примитивами, как это требуется для некоторого ускорения на практике.