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

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

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

Модель должна предсказать 1, если (x, y) находится внутри квадрата после применения определенного порога. Итак, если (x, y) находится справа от x=0, мы получаем положительное значение, если оно ниже 4-y, мы получаем положительное значение, если оно находится слева от 4-x, мы получаем положительное значение и если оно выше y=0, мы получаем положительное значение. Пусть a1 = g(x), a2 = g(4-x), a3 = g(y) и a4 = g(4-y), где g(x) — функция активации. Теперь выходные данные поступает от нейрона, который связывает эти состояния (предсказывает 1, если все значения a выше 0,5 для активации сигмовидной кишки), что на данный момент не является нашей целью.

Что произойдет, если мы увеличим количество нейронов в скрытом слое?

Что произойдет, если мы увеличим еще больше?

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

Итак, у нас есть алгоритмы классификации ML, такие как SVM, которые могут точно формировать собственные нелинейные гиперплоскости решений с использованием ядер. Они также не так сложны в вычислительном отношении. Конечно, у них есть свои недостатки. Как и здесь, мы могли бы использовать круговую границу решения уравнения (x-2)² + (y-2)² = 4, которое представляет собой уравнение круга с центром в (2, 2) и радиусом 2.

Если входные данные для нейрона последнего слоя в нейронной сети равны (x-2)² + (y-2)² – 4, которые передаются в сигмовидную функцию, мы получаем желаемую круговую гиперплоскость, которая дает значения, близкие к 0, если a точка лежит внутри круга и близка к 1, если она лежит снаружи. Но идеально спроектировать вышеуказанное уравнение кругового уравнения между независимыми переменными автоматически с использованием нейронных сетей — сложная задача. Нам нужно использовать подходящие функции активации, чтобы решить проблему. Функции активации могут приводить к нелинейности, например, когда мы смотрим на разложение Тейлора сигмовидной функции, мы можем визуализировать, как развиваются отношения между независимыми переменными разных порядков.

Например, когда мы используем ряд Тейлора для расширения сигмоидальной функции с помощью input = w1*x+w2*y, мы получаем такие термины, как x²y, xy, xy³ и т. д. Если вы используете линейную функцию активации, сколько слоев или нейронов, которые вы используете, нейронная сеть сводится к a*x+b*y+c, что не имеет смысла. Это просто линейная регрессия, если финальная активация линейная, и логистическая регрессия, если финальная активация сигмовидная.

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

Рекомендую эту статью, достойную хорошего прочтения: https://www.baeldung.com/cs/ml-ann-vs-svm

На простом английском языке

Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти: