Математика для ИИ: Дифференциал, производная и правила дифференцирования
Всем привет. Меня зовут Алмаз Хуснутдинов. В этой статье я показал, что такое дифференциал, как выводится понятие производной и рассказал про правила дифференцирования, которые используются в системах автоматического дифференцирования для глубокого обучения.
Содержание: Предел функции, дифференциал, дифференциал аргумента и функции, понятие производной, вывод производной функции, правила дифференцирования, пример использования цепного правила.
P. S. Я не особо разбираюсь в математике, поэтому я не рассказал про всякие математические оговорки, которые нужно по-хорошему упомянуть. Основная цель статьи - рассказать что такое дифференциал и про правила дифференцирования, так как я буду в другой статье рассказывать про алгоритм автоматического дифференцирования, для понимания которого нужно понимать правила дифференцирования. Я вынес их в отдельную статью, чтобы не было каши.
Предел
Предел функции одной переменной - значение, к которому приближается значение функции, когда её аргумент (независимая переменная) приближается к определённой точке. Формально, для функции
Предел функции многих переменных. Предел функции многих переменных определяется аналогичным образом, как и для функции одной переменной, но здесь учитывается не одна переменная, а все переменные:
В отличие от функций одной переменной, где приближение к предельной точке происходит только слева или справа, для функций многих переменных приближение может происходить по бесконечному числу направлений. Это означает, что для существования предела функции многих переменных необходимо, чтобы значение функции стремилось к одному и тому же числу вдоль любого пути, ведущего к предельной точке.
Для функции двух переменных, сначала вычисляется предел изменяя первую переменную, затем вторую, а потом наоборот, сначала изменяем вторую переменную, затем первую. Если в обоих случаях значение предела совпадает, значит предел этой функции в данной точке существует. Для большего числа переменных процесс аналогичный, для каждой переменной нужно начинать вычислять предел с этой переменной.
При нахождении пределов часто встречаются неопределённости — когда по правилам математики не получается вычислить значение, такие как 0/0 или ∞/∞. Для устранения этих неопределённостей могут использоваться методы упрощения выражения и правило Лопиталя.
Свойства предела:
Скрытый текст
Предел константы:
Предел суммы:
Предел произведения константы на функцию:
Предел произведения двух функций:
Предел частного:
Для вычисления пределов необходимо понимать их свойства, чтобы понимать, как именно получается то или иное преобразование.
Дифференциал
Приращение значения - прибавление к значению какой-либо переменной
Рассмотрим график функции
Наша задача состоит в том, чтобы вычислить значение угла, который образует линия графика к горизонтальной оси. Рассмотрим прямоугольный треугольник ABC. Мы можем посчитать значение угла BAC, оно будет равно тангенсу частного
Для чего нам нужно знать значение этого угла? - Значение угла показывает значение скорости изменения функции в данной точке. Мы можем использовать это значение для того, чтобы двигаться в сторону локального минимума или максимума — это основа градиентного обучения в машинном обучении.
Рассмотрим касательную прямую
Мы видим, что фактическое значение функции
Так как это невозможно, то рассмотрим предыдущий способ, но с небольшим изменением. Так как погрешность измерения угла через тангенс BC/BA или же
Нужно будет делать это постоянно, поэтому нужно ввести понятие, которым можно оперировать. Таким образом мы приходим к понятию о бесконечно малом приращении — дифференциале. Также, потом нужно вывести свойства дифференциала (правила дифференцирования), чтобы можно было их использовать и не задумываться о том, как работает дифференцирование на низком уровне.
Дифференциал (от лат. differentia «разность, различие») — бесконечно малое приращение значения:
Дифференциал аргумента — бесконечно малое приращение аргумента функции:
Дифференциал функции — бесконечно малое приращение значения функции:
Если у функции много переменных, то дифференциал функции для каждой переменной будет разным, и будет называться частным дифференциалом функции. Для нахождения частного дифференциала, нужно зафиксировать (не изменять) значения всех переменных кроме рассматриваемой.
Мы можем вычислить значение тангенса угла BAC, которое при использовании понятия дифференциала, будет равно значению тангенса угла BAD.
Производная
Из понятия дифференциала вытекает понятие производной. Фактически, производную функции в точке можно представить как отношение дифференциала значения функции к дифференциалу аргумента:
Производная — частное от дифференциала значения функции в точке х и дифференциала значения переменной x. Это отношение можно интерпретировать как значение угла линии графика в точке x для функции
Частная производная — отношение частного дифференциала функции по рассматриваемой переменной к дифференциалу рассматриваемой переменной функции.
Формально, если функция
Обозначения производной:
Если не ошибаюсь, то закругленные значки дифференциала принято использовать для частных производных, прямые значки — если функция состоит из одной переменной. Но это не принципиально.
Градиент — совокупность всех или определенной группы частных производных функции. Например, вектор или матрица частных производных:
это вектор-градиент или просто градиент функции
Дифференцирование — процесс определения производной (или скорости изменения) какой-либо функции.
Дифференцирование связано с темпами изменений каких-то функций или процессов. В случае с линией графика, поверхностью и так далее, это означает указание наклона касательной вдоль заданного направления. Она дает возможность математическим путем вычислять скорость переменного движения, позволяя определить, где возникают максимальные и минимальные значения.
Вывод аналитической формулы производной функции
Здесь приведен пример того, как находить аналитическое значение производной.
Найдем производную функции
Скрытый текст
Уберем неопределенность домножив числитель и знаменатель на сопряженное выражение и используем свойство предела «предел частного».
Найдем производную функции
Скрытый текст
Используем свойство логарифма «разница логарифмов равна логарифму частного»,
Подобным образом выводится аналитическое значение производной для любой элементарной функции — такая функция, которая не разлагается на более простые, например, степенная, логарифмическая или косинус. Для вывода производных более сложных функций используются выражения производных элементарных функций (таблица производных), так как выводить их через предел не имеет смысла — получится вывод тех же самых выражений для элементарных функций.
Источник двух приведенных примеров.
Правила дифференцирования
Дифференциал функции обладает несколькими свойствами, которые можно использовать при дифференцировании функций.
Форма записи дифференциала
Дифференцирование сложной функции. Сложная функция — функция, которая состоит из нескольких функций. Производная такой функции вычисляется через «раскрытие» внутреннего выражения:
Если
Рассмотрим 2 примера.
Скрытый текст
Пусть
Здесь представлено значение y элементарной функции
Скрытый текст
Пусть
Здесь аналогично. Сначала раскрываем значение у, потом раскрываем степенную функцию (ln(x))^3 и затем вычисляем производную конечной, логарифмической функции ln(x). Мы просто обозначили степенную функцию (ln(x))^3 через f(x), чтобы запись была более удобной.
По сути, раскрытие выражения является цепным правилом дифференцирования (о котором рассказано ниже). Я просто хотел акцентировать внимание на том, что мы его используем постоянно, но при этом даже об этом не подозреваем.
Дифференцирование для арифметических операций. Для функций
Скрытый текст
где C — константа,
Цепное правило дифференцирования. Это метод нахождения производной составной функции. Если
Допустим, что у нас есть функция
Результатом функции на рисунке будет число
Цепное правило заключается в том, что вычислять значение производной для каждой переменной
Скрытый текст
Как видите, для вычисление производной каждого последующего значения можно просто использовать значение производной предыдущего значения. Таким образом получается цепочка умножения производных.
Если расписывать выражения для каждого
Правило суммы. Если какая-то переменная участвует в нескольких преобразованиях, то есть в получении нескольких переменных, то для вычисления ее частной производной нужно сложить все частные производные этих переменных (в которых участвует данная переменная) по данной переменной. Правило суммы. Если какая-то переменная участвует в нескольких преобразованиях, то есть в получении нескольких переменных, то для вычисления ее частной производной нужно сложить все частные производные этих переменных (в которых участвует данная переменная) по данной переменной.
Правило суммы. Если какая-то переменная участвует в нескольких преобразованиях, то есть в получении нескольких переменных, то для вычисления ее частной производной нужно сложить все частные производные этих переменных (в которых участвует данная переменная) по данной переменной.
Скрытый текст
Для того, чтобы вычислить производную
Пример использования цепного правила
На вход подаются две переменные
Скрытый текст
Вычисляем все значения.
Вычисляем производные для каждого
Для
Проверим значения производных, не используя цепное правило:
Выглядит точно так же, но это не одни и те же формулы. В первом случае используется цепное правило, во втором — правило умножения (арифметическая операция).
Заключение
В этой статье я рассказал о том, как выводится понятие производной. О том, как выводятся аналитические значения производных функций, как используются свойства пределов для их вычисления. И, самое главное, о правилах дифференцирования, которые необходимо понимать для того, чтобы работать с алгоритмами обучения в машинном обучении, которые основаны на градиентах.
Для анализа данных и для применения моделей машинного обучения это, скорее всего, изучать не особо имеет смысл, так как суть анализа данных в том, чтобы анализировать данные, а не работу моделей машинного обучения изнутри. Но для инженерии в машинном обучении и, в целом, для создания ИИ, это необходимо — так как это развивает понимание того, что такое обучение интеллектуальной программы в принципе.
Есть вопросы — спрашивайте. Также подписывайтесь на мой канал в телеграме, чтобы не пропустить мои статьи по различным темам машинного обучения и идеям о создании цифрового интеллекта.