В основе работы систем искусственного интеллекта лежит понятие производной. При этом многие ситуации требуют самостоятельно осуществлять операцию дифференцирования, поэтому важно знать, как это делать, используя современные библиотеки.
В TensorFlow (псевдоним tf) используется лента вычислений, в которой запоминаются последовательные преобразования, переводящие одну функцию в другую. Затем для каждой трансформации записывается производная текущего представления от предыдущего.
В этих условиях дифференцирование произвольного узла рассматривается как извлечение производной сложной функции, для которой составляющие уже подсчитаны:
В качестве такой ленты в TensorFlow выступает объект tf.GradientTape. Рассмотрим следующий сценарий:
Обращение к методу gradient извлечет производную:
tf.GradientTape легко справляется с подсчетом производных функций не только от одной переменной, но и более сложных конструкций:
Операция @ в примере выше означает матричное произведение. Перехода от W к loss можно описать в виде графа:
Теперь, для подсчета производной loss по W можно вызвать метод gradient:
Этот результат можно перепроверить.
Теперь вычислим y:
Подставляя y и x в формулу, можно убедиться в правильности вычисления производной.