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