основы нейронных сетей

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

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

Вес

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

Суммирование входных данных

На следующем этапе взвешенные входные данные суммируются для получения единого значения, которое поможет определить окончательный результат. (PS: Возможно, иногда нам нужно добавить смещение, чтобы изменить входные данные)

Вычисление выхода с функцией активации

Наконец, результат суммирования персептрона превращается в выходной сигнал!

"Учиться"

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

Самое интересное в этой архитектуре и то, что делает возможными нейронные сети, заключается в том, что функция активации f (h). Часто используется сигмовидная функция (β = 1).

Как научиться весам

Мы хотим, чтобы сеть делала прогнозы максимально приближенными к реальным значениям. Чтобы измерить это, нам нужна метрика того, насколько ошибочны прогнозы, ошибка. Распространенным показателем является среднее квадратов ошибок (MSE). Вы берете сумму по всем выходным единицам j и еще одну сумму по всем точкам данных µ.

Мы хотим, чтобы ошибка предсказания сети была как можно меньше, а веса — это ручки, которые мы можем использовать для этого. Наша цель — найти веса wij​​, которые минимизируют MSE. Чтобы сделать это с помощью нейронной сети, обычно используется градиентный спуск.

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

Для простоты рассмотрим ситуацию, когда есть единица вывода. Теперь MSE:

Как мы обновляем вес. Мы используем следующую формулу.

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