Вопрос или проблема
Я новичок в машинном обучении и 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: Вычисление выхода
Для каждого примера из вашего набора данных, мы будем:
- Вычислять предсказание ( y ).
- Сравнивать предсказание с реальным значением.
- Обновлять веса, если предсказание ошибочно.
Вывод ( 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
Заключение
Таким образом, мы можем обучить перцептрон на небольшом наборе данных, обновляя его веса на каждой итерации в соответствии с заданным правилом. Это позволяет перцептрону оптимизировать свои веса в соответствии с целеыми значениями.
Запомните, перцептрон будет работать только для линейно разделимых данных. Если данные не удовлетворяют этому критерию, вам, возможно, понадобится более сложная модель.