Как провести нелинейную границу принятия решения

вступление

Нейронные сети часто рассматриваются как черные ящики, которые «учатся» на данных. Но чему на самом деле учатся их веса? Короче говоря, они учатся управлять векторным пространством определенным образом. Хотя это не новая идея, это основная концепция, часто упускаемая из уроков, которую я намерен разъяснить. В этой статье я сосредоточусь на многослойном персептроне и пойму, как сложная граница решения формируется из композиции преобразований.

Базовые векторы

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

Что такое базисный вектор?

Базисные векторы - это независимые единичные векторы в координатном пространстве. На диаграмме выше есть два базовых вектора, которые определяют нашу 2D-плоскость: i и j. Вектор i имеет значения [1 0], а вектор j имеет значения [0 1]. Как видно выше, все другие векторы на плоскости могут быть выражены как линейная комбинация базисных векторов. Таким образом они определяют координатное пространство.

Давайте реорганизуем наши два базовых вектора в матрицу, чтобы усилить эту идею, где верхняя строка содержит вектор i, а нижняя строка содержит вектор j. Если мы возьмем произведение вектора [3 2] и матрицы базисных векторов, то мы получим вложение этого вектора в координатное пространство, определяемое базисными векторами в матрице. Хотя это может показаться абстрактным, идея становится очень ясной, если представить ее следующим образом.

Изменение основы

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

Вектор i теперь находится в [1 2], а вектор j теперь находится в [2 1]. На видео мы можем увидеть, как изменение базисных векторов влияет на манипулирование координатным пространством с помощью линейного преобразования, и это именно то, что делают нейронные сети. Смотрите видео 3blue1brown о линейных преобразованиях для более подробного описания.

Линейные слои

Теперь, когда мы вооружены некоторыми основами линейной алгебры, давайте посмотрим на базовый линейный слой. В этом случае все входные нейроны связаны со всеми выходными нейронами через четко изученные веса. Таким образом, каждый выходной нейрон - это просто скалярное произведение входного вектора с вектором веса. Вместо того, чтобы записывать все это по отдельности, мы можем организовать весовые векторы в матрицу W, которая будет умножена на входной вектор x. Здесь мы можем думать о W как о матрице базисных векторов, и мы уже видели, что изменение этих значений делает с координатным пространством.

Но что делает предвзятость?

Подобно уравнению для линии, здесь смещение перемещает начало координат. В приведенном выше примере к вышеупомянутому преобразованию применяется смещение [1,1].

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

Функции активации обычно следуют сразу после нашего вышеупомянутого линейного преобразования. Здесь мы рассмотрим функцию гиперболического тангенса, которая работает независимо на каждом выходном нейроне. Эта функция ограничивает выходы линейной операции от -1 до 1.

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

Интуиция за MLP

Теперь, когда мы рассмотрели каждый компонент линейного слоя, как несколько слоев ведут себя вместе? Интуитивно понятно, что в MLP из N слоев первые слои N-1 служат для преобразования координатного пространства, чтобы упростить для N-го слоя линейное разделение данных. Я выбрал MLP в качестве базового случая, чтобы выразить эту идею, поскольку он наиболее ясен, но можно легко показать, как другие операторы по-разному манипулируют пространством координат.

Граница решения линейной регрессии

Мы видели, как линейные слои могут преобразовывать координатное пространство, но теперь давайте сосредоточимся на том, как они рисуют границу принятия решения. Томас Каунц дает здесь отличную разбивку по однослойному персептрону:

Https://medium.com/@thomascountz/calculate-the-decision-boundary-of-a-single-perceptron-visualizing-linear-separability-c4d77099ef38

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

  • b + w1*x + w2*y = 0
  • x-перехват = (0, -b / w2)
  • y-перехват = (-b / w1, 0)
  • m = -(b / w2) / (b / w1)
  • y = (-(b / w2) / (b / w1))x + (-b / w2)

Собираем вместе

Наконец, мы можем полностью понять работу MLP. В приведенном выше примере мы визуализируем четырехуровневый MLP с (2,2,2,1) нейронами в каждом слое соответственно. Сеть обучается на 2-х классном нелинейно разделяемом спиральном наборе данных, чтобы подчеркнуть, как сеть манипулирует исходным координатным пространством, чтобы сделать два класса линейно разделяемыми.

После того, как линия нарисована, сеть откатывается назад посредством инвертированных операций к исходному координатному пространству. Благодаря этому процессу мы можем увидеть, как линия в скрытом пространстве становится нелинейной границей решения в исходном пространстве.

Резюме

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

Замечания

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

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