Искусственные нейронные сети
Искусственная нейронная сеть, или просто нейронная сеть для краткости, не нова. Он существует уже около 80 лет.
Так продолжалось до 2011 года, когда глубокие нейронные сети стали популярными благодаря использованию новых методов, доступности огромных наборов данных и мощных компьютеров.
Нейронная сеть имитирует нейрон, который имеет дендриты, ядро, аксон и терминальный аксон.
Для сети нам понадобится два нейрона. Эти нейроны передают информацию через синапс между дендритами одного и терминальным аксоном другого.
Вероятная модель искусственного нейрона выглядит так -
Нейронная сеть будет выглядеть так, как показано ниже -
Круги - это нейроны или узлы с их функциями в отношении данных, а линии / ребра, соединяющие их, являются весами / передаваемой информацией.
Каждый столбец - это слой. Первый уровень ваших данных - это входной слой. Тогда все слои между входным и выходным слоями являются скрытыми слоями.
Если у вас есть один или несколько скрытых слоев, значит, у вас неглубокая нейронная сеть. Если у вас много скрытых слоев, значит, у вас глубокая нейронная сеть.
В этой модели у вас есть входные данные, вы их взвешиваете и передаете через функцию в нейроне, которая называется пороговой функцией или функцией активации.
По сути, это сумма всех значений после сравнения с определенным значением. Если вы запускаете сигнал, то результатом будет (1) out, или ничего не сработает, затем (0). Затем это взвешивается и передается следующему нейрону, и выполняется такая же функция.
В качестве функции активации мы можем использовать сигмовидную (s-образную) функцию.
Что касается весов, они начинаются случайным образом и уникальны для каждого входа в узел / нейрон.
В типичной «прямой связи», самом основном типе нейронной сети, ваша информация проходит прямо через сеть, которую вы создали, и вы сравниваете результат с тем, что, как вы надеялись, на выходе использовались бы ваши образцы данных.
Отсюда вам необходимо настроить веса, чтобы результат соответствовал желаемому результату.
Акт отправки данных напрямую через нейронную сеть называется feed forward neural network.
Наши данные идут от входа к слоям по порядку, а затем к выходу.
Когда мы идем назад и начинаем корректировать веса, чтобы минимизировать потери / затраты, это называется back propagation.
Это optimization problem. На практике с нейронной сетью приходится иметь дело с сотнями тысяч переменных, миллионами или более.
Первое решение заключалось в использовании стохастического градиентного спуска в качестве метода оптимизации. Теперь есть такие варианты, как AdaGrad, Adam Optimizer и так далее. В любом случае это масштабная вычислительная операция. Вот почему нейронные сети в основном лежали на полке более полувека. Совсем недавно у нас даже были возможности и архитектура на наших машинах, чтобы даже подумать о выполнении этих операций, и соответствующие наборы данных с соответствующими размерами.
Для простых задач классификации нейронная сеть относительно близка по производительности к другим простым алгоритмам, таким как K Nearest Neighbours. Реальная полезность нейронных сетей реализуется, когда у нас есть гораздо большие данные и гораздо более сложные вопросы, которые превосходят другие модели машинного обучения.