Правило обучения перцептрона

Вопрос или проблема

Я новичок в машинном обучении и Data Science. Проведя некоторое время в сети, я смог довольно хорошо понять правило обучения восприятия. Но я все еще не понимаю, как применять его к набору данных. Например, у нас могут быть следующие значения $x_1$, $x_2$ и $d$ соответственно:

\begin{align}&(0.6 , 0.9 , 0)\\
&(-0.9 , 1.7 , 1)\\
&(0.1 , 1.4 , 1)\\
&(1.2 , 0.9 , 0)\end{align}

Я не могу придумать, с чего начать.

Я думаю, что нам нужно следовать этим правилам.

$$W_i = W_i + \Delta W_i$$
$$\Delta W_i = \eta(d_i – y_i)$$
$$\text{ Если } y_i = \sum w_ix_i \ge 0, y = 1 \text{ иначе } y=0$$
$$x_0 (\text{Смещение}) = 0 $$

Где $d_i$ — это целевое значение, $y_i$ — это выходное значение,
$\eta$ — это скорость обучения, а $x_i$ — это входное значение.

Буду признателен за любую помощь. Спасибо!

Вам не нужно следовать этим правилам.
У вас есть ваша матрица наблюдений, и вы умножаете ее на матрицу весов, в которой изначально все веса назначены случайным образом.
Матрица весов составляется таким образом: каждый столбец представляет нейрон, а строки — вес, которым вы умножаете свои признаки.
Если у вас есть k слоев, у вас будет k матриц весов.
На каждой итерации то, что позволяет сделать DL фреймворк (вы не хотите делать это вручную), сравнивает реальную цель с вашей предсказанной и вычисляет функцию затрат (насколько предсказанное отличается от реального?). Затем вычисляется производная относительно весов, доказано, что направление наискорейшего спуска достигается путем обновления весов на значение $W_i = W_i + \Delta W_i$, где: $\Delta W_i = n(d_i – y_i)$. Это происходит таким образом на протяжении определенного вами количества итераций.
Надеюсь, я дал вам подсказку, чтобы понять, как это работает.

Ответ или решение

Правила Обучения Перцептрона: Подробное Руководство

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

Основные Параметры

Ключевые переменные:

  • ( x_1 ), ( x_2 ) — входные значения.
  • ( d ) — целевое значение (желаемый вывод).
  • ( W_i ) — веса, которые будут обновляться во время обучения.
  • ( y ) — предсказанное значение, вычисляемое как линейная комбинация входных сигналов и весов.
  • ( \eta ) — скорость обучения (или шаг).

Набор Данных

Вы предоставили следующий набор данных:

( x_1 ) ( x_2 ) ( d )
0.6 0.9 0
-0.9 1.7 1
0.1 1.4 1
1.2 0.9 0

Алгоритм

Шаг 1: Инициализация весов

Начнем с инициализации весов ( W_1 ) и ( W_2 ) случайными значениями. Также добавим вес для смещения ( W_0 ).

import numpy as np

# Инициализация весов
weights = np.random.rand(3)  # w0, w1, w2
learning_rate = 0.1  # Скорость обучения
Шаг 2: Вычисление выхода

Для каждого примера из вашего набора данных, мы будем:

  1. Вычислять предсказание ( y ).
  2. Сравнивать предсказание с реальным значением.
  3. Обновлять веса, если предсказание ошибочно.

Вывод ( y ) определяется следующим образом:

[
y = \begin{cases}
1, & \text{если } W_0 + W_1 \cdot x_1 + W_2 \cdot x_2 \geq 0 \
0, & \text{иначе}
\end{cases}
]

Шаг 3: Обновление весов

Если предсказание ( y ) не совпадает с целевым значением ( d ), обновляем веса:

[
\Delta W_i = \eta \cdot (d_i – y_i)
]
[
W_i = W_i + \Delta W_i
]

Шаг 4: Цикл обучения

Теперь объединим все шаги в цикл обучения:

data = np.array([[0.6, 0.9, 0],
                 [-0.9, 1.7, 1],
                 [0.1, 1.4, 1],
                 [1.2, 0.9, 0]])

for epoch in range(100):  # Количество эпох
    for x1, x2, d in data:
        # Добавляем смещение
        x0 = 1
        inputs = np.array([x0, x1, x2])

        # Вычисление предсказания
        y = 1 if np.dot(weights, inputs) >= 0 else 0

        # Обновление весов
        weights += learning_rate * (d - y) * inputs

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...