Как нейронная сеть обучается с помощью весов, смещений и функций активации

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

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

Краткая историческая справка

Концепция нейронной сети довольно древняя — первые мысли о программном обеспечении для моделирования, вдохновленном человеческим мозгом, восходят к началу 1940-х годов Дональда Хебба, МакКаллока и Питтса. Более 20 лет концепция оставалась на уровне теории. Обучение нейронных сетей стало возможным только благодаря большей вычислительной мощности и созданию алгоритма обратного распространения Пола Вербоса, эффективного механизма, который позволяет сети обучаться, распространяя обратную связь нейрона на тот, который ему предшествует.

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

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

Естественный и искусственный нейрон — в чем отличия?

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

Нейронные сети как «черные ящики»

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

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

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

Выход нейрона выражается формулой
выход = входы * веса + смещение

Настройка весов и смещений выполняется в скрытых слоях, которые находятся между входным и выходным слоями. Они называются «скрытыми», потому что мы не видим поведение корректировки весов и смещений. Вот почему нейронные сети — это черные ящики.

Как нейронная сеть учится

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

Веса и смещения

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

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

Напомним, что формула такова: выход = входные данные * веса + смещение

Как видите, веса и смещения влияют на поведение каждого искусственного нейрона, но соответственно по-разному. Веса обычно инициализируются случайным образом, а смещение равно 0.

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

Функция активации

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

Следуя формуле

1 if x > 0; 0 if x ≤ 0

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

выход = сумма(входы*веса) + смещение

Ступенчатая функция — очень простая функция, и в области ИИ существует тенденция использовать более сложные функции активации, такие как выпрямленная линейная единица (ReLU) и SoftMax. .

Как закодировать небольшую нейронную сеть на Python

Давайте создадим небольшую нейронную сеть с 4 входами и 3 нейронами, чтобы понять, как работает вычисление весов и смещения.

Давайте начнем с определения этих параметров вручную для примера.

Теперь давайте создадим цикл, который создаст нашу маленькую нейронную сеть.

Это окончательный вывод

Код