Найти в Дзене
Властелин машин

Автоматическое дифференцирование в TensorFlow

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

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

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

-2

В качестве такой ленты в TensorFlow выступает объект tf.GradientTape. Рассмотрим следующий сценарий:

-3

Обращение к методу gradient извлечет производную:

-4

tf.GradientTape легко справляется с подсчетом производных функций не только от одной переменной, но и более сложных конструкций:

-5

Операция @ в примере выше означает матричное произведение. Перехода от W к loss можно описать в виде графа:

-6

Теперь, для подсчета производной loss по W можно вызвать метод gradient:

-7

Этот результат можно перепроверить.

-8
-9

Теперь вычислим y:

-10

Подставляя y и x в формулу, можно убедиться в правильности вычисления производной.