Математика нейронных сетей: от новичка до профессионала

Введение
Вы очарованы великолепием нейронных сетей глубокого обучения, но напуганы сложной математикой, которая лежит под поверхностью? Ты не в себе! Мир нейронных сетей может показаться запутанным лабиринтом математики, линейной алгебры и методов оптимизации. Но не волнуйтесь: в этом блоге я упрощу математику искусственных нейронных сетей и сделаю ее понятной для всех, независимо от математического образования.
Этот блог для вас, если вы новичок, надеющийся начать работу с нейронными сетями, или опытный практик, желающий расширить свои знания. Так что расслабьтесь, расслабьтесь и приготовьтесь к приключениям в увлекательном мире математики нейронных сетей!
Однако, прежде чем я углублюсь в детали обратного распространения в нейронных сетях, мы должны сначала понять некоторые математические предпосылки.
Частичная дифференциация — цепное правило
Учтите f(x,y)
, что зависимости от переменных x,y
, в свою очередь, зависят от независимой переменной t
(независимая переменная означает переменную, которая не зависит ни от какой другой переменной). Затем, если я хочу вычислить частную производную f(x,y)
относительно t
, я могу использовать цепное правило.

Древовидная диаграмма на приведенном выше рисунке показывает, что f зависит от x и y, а x и y зависят от t. Следовательно, уравнение слева можно рассчитать, используя этот рисунок. Учитывая следующие правила
- Верхний узел дерева — это функция, которую мы хотим частично дифференцировать
f(x,y)
, а нижние узлы дерева представляют собой независимую переменную (t
). - Чтобы взять производную от f(x, y) по определенной независимой переменной (скажем, t), начните сверху и следуйте по пути, ведущему к этой переменной. Попутно умножайте все производные, которые вам попадутся.
- Добавьте все возможные продукты пути (в данном случае два, как показано на рисунке).

Для того, чтобы найти производную относительно f(x,y,z)
и s
мы t
разобьем данное дерево на две части и применим правила, определенные выше.

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

Как теперь найти оптимальные параметры?
Самое известное уравнение формулируется как

Примечание: ∇ представляет собой градиент функции потерь.
Почему мы вычисляем градиент вместо простого дифференцирования?
- Во всех случаях машинного обучения у нас есть функция потерь, зависящая от нескольких переменных, т. е. многомерная функция потерь f(ϴ).
- Дифференциация используется при работе с функцией, которая зависит от одной переменной. Однако при работе с многомерными функциями мы должны оптимизировать все переменные одновременно. Именно здесь градиент вступает в игру, чтобы минимизировать многомерную функцию потерь f(ϴ), также известную как целевая функция.
Мы предполагаем, что наша функция потерь является выпуклой функцией; следовательно, функция потерь будет минимальной, когда наклон функции потерь (градиент) равен нулю. (правило дифференциального исчисления)
Следовательно, отрицательный знак в уравнении гарантирует, что мы оптимизируем параметр в направлении, которое приводит к уменьшению функции потерь до ее минимального значения, как показано в левой части рисунка выше.
Обратное распространение
Теперь возьмем нейронную сеть. Это имеет четыре слоя; в каждом слое есть один нейрон, и мы не используем никаких смещений только для простоты. Нейронная сеть показана ниже.

f представляет выходные данные нейрона после прохождения через функцию активации ( здесь tanh() ). Мы минимизируем среднеквадратичную функцию потерь ошибки, которая формулируется как

Теперь перед SGD стоит задача минимизировать вышеуказанные потери. Поэтому, чтобы минимизировать его, мы выбираем случайную точку j из 1, 2, 3,..., n точек данных и используем известное уравнение SGD для изменения параметров нашей нейронной сети. т.е.,

Давайте оценим градиент в приведенном выше уравнении, я могу найти решение, как показано ниже.

Итак, все сводится к оценке частных производных от f4
wrt w1,w2,w3,w4
(независимых переменных), которые я могу оценить, используя метод цепного правила, как описано выше. Древовидная структура для этого случая будет

Я буду использовать уравнения прямого распространения, которые я вывел ранее.

Процесс вычисления частных производных показан ниже.

В трех упомянутых выше примерах мы видим, что для вычисления частных производных от f4 нам нужно вернуться к предыдущим слоям. Этот процесс известен как «обратное распространение». Чтобы проиллюстрировать эту концепцию далее, давайте рассмотрим последний пример, где нам нужно вычислить частную производную f4
относительно w1
.

Обратите внимание, как мы возвращаемся к слоям для вычисления частных производных. Из приведенных выше рисунков понятно, как работает обратное распространение.
Заключение
Подводя итог, этот блог объяснил, как обратное распространение ошибки и стохастический градиентный спуск помогают улучшить нейронные сети. Я добавил больше картинок, чтобы их было легче понять, поскольку люди лучше запоминают визуальные эффекты. Усвоив эти идеи, вы сможете лучше понять, как функционируют нейронные сети и как их эффективно обучать.
Если вы найдете этот блог информативным, не забудьте поставить лайк, так как это поддерживает мою мотивацию. Кроме того, подписывайтесь на меня на Medium .