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

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

Итак, этот персептрон принимает три переменные, каждая со своим весом, значение которого в итоге поступает на выходной нуэрон. На вход этого выходного нейрона подается сумма произведений весов и параметров или даже его скалярное произведение:

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

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

Некоторая визуальная интуиция по правилу обновления простого персептрона двоичной классификации:

Синяя прямая — это вектор, используемый для предсказания меток классов, каждый класс находится в соответствующем разделе плоскости. Черная линия — это вектор, соответствующий введенному экземпляру данных, то есть чему-то, что нужно классифицировать, с его меткой (в данном случае +1). Пунктирные линии: красная, такая же, как черная линия, добавленная к тому, что должно быть предыдущей взвешенной функцией; и синий, возможный результат при новой взвешенной функции. Как вы можете видеть, линия решения наклоняется, этот процесс повторяется для всех точек данных на каждой итерации до тех пор, пока не будет обнаружено никаких изменений (с некоторым допуском).

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

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

Вы можете увидеть пример метода подгонки для двоичных данных здесь:

Это обновляет веса на основе вычисления всей партии выборок для каждой эпохи.

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

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