Как найти производную сигмовидной функции для нейронных сетей — Простое пошаговое руководство

Недавно я прочитал отличный пост здесь, на Medium, который показал мне, как я могу реализовать свою собственную нейронную сеть с нуля. Это было ценно для моего понимания машинного обучения и особенно внутренней работы нейронных сетей.

Сеть, которую я научился реализовывать, использовала сигмовидную функцию. Однако в этой статье не было подробно рассказано о том, как работает математика, связанная с сигмовидной функцией. Это заставило меня почесать голову, и как человек, который хочет понять все об инструменте, который я использую, я должен был погрузиться в математику и выяснить, что происходит.

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

Основная часть этого поста — это пошаговое руководство о том, как найти производную сигмовидной функции, и к концу вы тоже сможете это понять!

Как сигмовидная функция используется в нейронных сетях

Начнем с того, что функция Sigmoid принимает число в качестве входных данных и возвращает новое значение от 0 до 1.

Как вы можете видеть на графике выше, значение x, равное 0, вернет значение y, равное 0,5, большие положительные значения x сдвигают значение y к 1, и, наконец, более отрицательные значения x приводят к значениям y, близким к 0.

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

Почему сигмовидная функция хороша в нейронных сетях

Фаза обучения нейронной сети состоит из двух частей.

  1. прямая связь
  2. Обратное распространение

Прямая связь — это процесс, при котором данные проходят через нейронную сеть от входного узла к выходному узлу. Другими словами, именно здесь сеть пытается делать прогнозы.

Затем эти прогнозы оцениваются путем сравнения их с фактическими значениями. Ошибку можно найти как разницу между двумя значениями.

error = actual_value - predicted_value

Обратное распространение происходит затем, и именно здесь происходит «обучение» или «настройка» в нейронной сети. Теперь значение ошибки возвращается по сети в обратном направлении, как и раньше, а затем используется в сочетании с производной сигмовидной функции, чтобы скорректировать веса всех узлов по всей сети. слоев сети.

Используется производная сигмовидной функции, потому что она позволит нам выполнять корректировки с помощью градиентного спуска. Производная функции даст нам угол/наклон графика, который описывает функция. Это значение позволит сети узнать о погоде, чтобы увеличить или уменьшить значение отдельных весов в слоях сети. Во время обратного распространения производная функции активации вычисляется много раз, и именно здесь сигмовидная функция действительно сияет.

Сигмовидная функция выглядит так

И производная сигмовидной функции просто

Другими словами, производная сигмовидной функции — это сама сигмовидная функция, умноженная на 1 минус сигмовидная функция.

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

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

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

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

Математика производной сигмовидной функции

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

Мы пройдем расчеты шаг за шагом, и я укажу, когда применяются правила.

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

Факторное правило гласит, что мы можем получить производную функции следующим образом:

den — это сокращение от знаменателя, а num — это сокращение от числителя.

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

Производная числителя становится равной 0, так как числитель является константой.

Производная знаменателя становится:

Здесь используется цепное правило, и я думаю, что этот шаг может потребовать немного больше пояснений и подробного пошагового руководства.

Цепное правило говорит нам, что производная композиционной функции (функция с другой функцией внутри) вычисляется следующим образом:

На словах это можно прочитать так: производная композиционной функции есть производная внешней функции f, содержащей внутреннюю функцию g, умноженная на производную внутренней функция.

В этом случае

считается внешней функцией (y представляет внутреннюю функцию). И тогда внутренняя функция -x. Применяя цепное правило к знаменателю сигмовидной функции, мы получаем следующее уравнение:

Если мы начнем с нахождения производной внешней функции, то 1 станет 0, а производная от eв степени чего-то останется прежней, как показано в уравнении ниже.

На данный момент у нас есть производная внешней функции, и следующим шагом будет найти производную внутренней функции. Внутренняя функция была просто -x, а производная от нее становится -1.
Собрав все вместе, мы получаем:

Затем это выражение можно упростить до:

Это была первая трудная часть, и теперь мы можем вернуться к правилу частных с нашим пониманием того, как мы получили производную от знаменателя.

Помните, что здесь мы остановились:

Теперь мы можем уменьшить приведенное выше выражение, удалив часть, которая умножается на 0. Что дает нам следующее:

Затем мы можем умножить две скобки в числителе, что даст нам:

Сейчас мы довольно близки, однако функция еще не совсем в желаемой форме. Чтобы туда добраться, нам сначала нужно использовать небольшой трюк, когда мы добавляем и вычитаем 1 в числителе. Это не оказывает фактического влияния на результат уравнения, однако делает возможным следующий шаг. Вот так:

Сделав это, мы можем разделить функцию на две отдельные части следующим образом:

Имея функцию, представленную таким образом, мы можем отменить e^-x в первой дроби. Тем самым давая нам следующее:

Теперь это можно переписать как

Я думаю, что это один из самых сложных шагов для немедленного восприятия, однако, если вы попытаетесь вычислить в обратном направлении, умножив эти две дроби, вы должны получить результат предыдущего шага. Если вы сначала умножите самую левую дробь на значение 1 из скобок справа, вы просто получите саму левую дробь (которая соответствует первой дроби в предыдущем уравнении). Затем вы умножаете левую дробь на отрицательную дробь из скобок и таким образом получаете квадрат знаменателя (вторая дробь из предыдущего уравнения).

Теперь к последнему шагу. Если вы посмотрите на уравнение, к которому мы только что пришли, вы можете заметить, что оно на самом деле включает в себя саму сигмовидную функцию. Который, напомню, выглядит так:

Таким образом, мы можем заменить сигмовидную функцию в приведенном выше уравнении, что позволяет нам получить желаемую форму:

Вот и все! Это математика, объясняющая, почему производная сигмовидной функции — это просто сама сигмовидная функция, умноженная на 1 минус сигмовидная функция.

Поздравляю с завершением всех этих уравнений.

Краткое содержание

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

Я надеюсь, что вы нашли этот пост полезным, и теперь вам ясно, почему производная сигмовидной функции такая, какая она есть.

Если вам понравилось то, что вы прочитали, я был бы очень признателен, если бы вы поддержали меня, подписавшись на Medium, используя мою реферальную ссылку ниже:



Если вам интересен пост, который я упомянул во введении, в котором показано, как создать нейронную сеть с нуля, вы можете проверить его, используя следующую ссылку ниже: