1/ Преимущества и недостатки различных автоматических дифференцирований1
Важной задачей машинного обучения является вывод параметров для получения частной производной функции потерь для каждого параметра, а затем выполнение градиентного спуска.
Для частичного дифференцирования вы можете выбрать один из следующих вариантов: ручное дифференцирование, символьное дифференцирование, числовое дифференцирование, автодифференцирование в прямом и обратном режимах).
В пакете Flux от Джулии, как и в Tensorflow, используется обратное автоматическое дифференцирование.
ручная дифференциация: Ручная дифференциация станет очень утомительной и подверженной ошибкам для сложных функций.
символическая дифференциация: Используйте вычислительные графики для обработки. Однако для сложных функций граф вычислений будет очень огромным, что снижает производительность, а один из самых больших недостатков заключается в том, что символьное дифференцирование не может обрабатывать функции с произвольными кодировками.
Численное дифференцирование: Численное дифференцирование по формуле:
Чтобы вычислить функциюв какой-то момент оЧастную производную нужно вычислять только тогда, когдакогда я был очень молоднаказанбизнес.
Однако недостатком численного дифференцирования является то, что результат не является точным, это приближение, и функция вызывается многократно.Много раз, при многих параметрах машинного обучения, оно становится неэффективным. Но поскольку численное дифференцирование выполнить легко, оно может быть полезным инструментом для проверки правильности других алгоритмов.
прямое автоматическое дифференцирование: Хотя ни символическое, ни числовое дифференцирование, но в некотором смысле прямое автоматическое дифференцирование представляет собой комбинацию символического и числового дифференцирования.
Прямая автоматическая дифференциация зависит отdual number, в виде,вдва - два действительных числа,является бесконечно малым числом. Когда хранится двойное число, оно представляется парой чисел с плавающей запятой, напримериспользоватьВыражать.
Основные операции для двойного номера следующие: (Примечание)
Важнее , поэтому, когда мы вычисляем, можно дать один рази.
если функция, мы хотим вычислить околоЧастная производная от , все, что нужно сделать, это вычислить, получается двойное число, то можно получитьи частная производная
Недостаток прямого автоматического дифференцирования заключается в том, что после однократного прохода по графику можно вычислить только частную производную одного параметра.Хотя результат является точным, при наличии нескольких параметров его необходимо пройти по графику много раз.
Обратное автоматическое дифференцирование: пройти по графику вперед, чтобы вычислить значение каждого узла, затем пройти по графику в обратном направлении второй раз, вычислив все частные производные.
Автодифф в обратном режиме основан на цепном правиле:.
Автоматическое дифференцирование полагает, что суть любого численного вычисления на самом деле представляет собой сериюКомбинации дифференцируемых операторов. Тогда мы можем предположить, что мы не можем найти производную этой функции, но после разборки функции на другие части части могут быть получены обычными методами вывода, и, наконец, каждая часть объединяется для получения окончательного результат.2