Прочитав эту статью, вы сможете:

1. Понять, как обновляются веса нейронной сети.

2. Реализовать и обучить вашу модель для любых заданных линейно разделимых данных.

Что такое линейно разделяемые данные?

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

Чтобы объяснить это, давайте рассмотрим пример нейронной сети с двумя входами, которая классифицирует каждый вход как 1 или 0.

Рассмотрим данные данные как таблицу истинности логического элемента И-НЕ.

Пусть d (ожидаемые результаты) = y и входные данные равны x1 и x2.

Потом,

X=[x1 x2], W=[w1 w2] , Y=[y]

Здесь,

X = [[0,0,1,1], [0,1,0,1]], d = [[1], [1], [1], [0]], изначально W = [0, 0]

Смещение b = 1

Из моей предыдущей статьи о Персептроне,

v= Xᵗ.W+b

Y=Φ(v)

Здесь используется функция активации с жестким ограничением (Φ (v) = 1; v≥0 и Φ (v) = 0; v ‹0)

Уравнение гиперплоскости в нашем случае аналогично уравнению прямой и имеет вид

Y=w1*x1+w2*x2+b

Гиперплоскости классифицируют каждую точку, лежащую над ней, как 0, а каждую точку ниже нее как 1.

  1. Предположим, что он классифицирует данную точку, принадлежащую 0, как 1, это означает, что прямая линия должна быть сдвинута вниз, а веса обновлены как W = W-n * X
  2. Предположим, что промах классифицирует заданную точку, которая принадлежит к 1, как 0, это означает, что прямая линия должна быть продвинута вверх, а веса обновляются как W = W + n * X
  3. Предположим, что прямая линия правильно классифицирует все линии. В этом случае обновление не происходит W = W

Теперь давайте запрограммируем нейронную сеть для выполнения этих операций с помощью Python:

  1. Импорт необходимых библиотек

2. Определение функции pre_out, которая выдает выходные данные функции активации (жесткого ограничения).

3. Определение функции update, которая вычисляет v и обновляет веса.

4. Инициализация необходимых матриц и параметров X (test_x), W, n (скорость обучения) и bias (b)

5. Обучите нейронную сеть.

6. Протестируйте обученную нейронную сеть.

Ниже будет вывод

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