Вычислительный граф против (компьютерной алгебры) символическое выражение - PullRequest
3 голосов
/ 26 апреля 2019

Я читал Байдин и др., Автоматическое дифференцирование в машинном обучении: обзор, 2018 ( Arxiv ), который различает символьную дифференциацию и автоматическое дифференцирование (AD) . Затем он говорит:

н.э. не является символической дифференциацией. Символьная дифференциация - это автоматическое манипулирование [символическими] выражениями .

AD можно рассматривать как выполнение нестандартной интерпретации компьютерной программы где эта интерпретация включает в себя увеличение стандартных вычислений с вычислением различных производных.

Оценочные трассы составляют основу методики AD. [A вычислительный график (Бауэр, 1974) визуализирует отношения зависимостей (входных, рабочих, выходных) переменных в оценочных трассах .]

Затем описывается, как вычислить производную с AD (в прямом или обратном режиме). Описание в основном преобразует трассировку оценки / вычислительный график.

Autograd, Chainer и PyTorch предоставляют реверсивный режим общего назначения AD.

В нем также рассматриваются Theano, TensorFlow и другие, но в основном сравниваются define-and-run / статический вычислительный граф (Theano, TF) и define-by -run / динамический вычислительный граф (PyTorch, TF Eager). (В моем понимании это было бы ортогонально к вопросу о том, как выполняется AD, или, по большей части, это просто изменило бы, как реализован AD, но не так сильно, как концепция AD.)

Theano - это оптимизатор и компилятор вычислительных графов [...], который в настоящее время обрабатывает производные в высокооптимизированной форме символической дифференциации. Результат можно интерпретировать как гибрид символического дифференцирования и обратного режима AD, но Theano не использует универсальный обратное накопление, как мы описываем в этой статье. (Личное общение с авторами.)

Я не уверен, что авторы предполагают, что Theano / TF не предоставляют AD общего назначения в обратном режиме (что было бы неправильно в моем понимании).

Я не совсем понимаю, как Теано не использует обратное накопление общего назначения.

Кроме того, я не понимаю, как символическая дифференциация отличается от нашей эры, учитывая это определение.

Или: Чем символические выражения отличаются от вычислительных графов?

Связано также дифференцируемое программирование

дифференцируемые ориентированные графы, собранные из функциональных блоков

, где я снова не вижу разницы с вычислительным графом.

А обратное распространение (BP) :

Полученный алгоритм по существу эквивалентен преобразованию функции оценки сети, составленной с помощью целевой функции в обратном режиме AD, которая, как мы увидим, фактически обобщает идею обратного распространения.

Я не вижу, как обратный режим AD является более общим, чем обратное распространение. Это? Как?

Шмидхубер, Глубокое обучение в нейронных сетях: обзор, 2014 (раздел 5.5) ( также ) гласит:

BP также известен как обратный режим автоматического дифференцирования (Griewank, 2012) .

...