Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Шари Перцептрона | Нейронна Мережа з Нуля
Вступ до нейронних мереж з Python

bookШари Перцептрона

Перцептрон — це найпростіша нейронна мережа, що складається лише з одного нейрона. Для розв’язання складніших задач використовують багатошаровий перцептрон (MLP), який містить одну або більше прихованих шарів, що дозволяють мережі вивчати складніші закономірності.

MLP складається з:

  1. Вхідного шару — отримує дані;
  2. Прихованих шарів — виділяють закономірності;
  3. Вихідного шару — формує передбачення.

Кожен шар містить декілька нейронів; вихід одного шару стає входом для наступного.

Ваги та зсуви шару

Раніше нейрон зберігав свої ваги у вигляді вектора, а зсув — як скаляр. Шар, однак, містить багато нейронів, тому його ваги утворюють матрицю, де кожен рядок містить ваги одного нейрона. Зсуви для всіх нейронів формують вектор.

Для шару з 3 входами та 2 нейронами:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Тут WijW_{ij} — вага від jj-го входу до ii-го нейрона; bib_i — зсув нейрона ii.

Пряме поширення

Пряме поширення активує кожен нейрон шляхом обчислення зваженої суми, додавання зсуву та застосування активаційної функції.

Раніше один нейрон використовував:

[ z = W \cdot x + b ]

Тепер, оскільки кожен рядок (W) — це вектор ваг одного нейрона, виконання матричного множення між матрицею ваг і вектором входу автоматично обчислює зважені суми для всіх нейронів одночасно.

Щоб додати зсуви до виходів відповідних нейронів, також слід додати вектор зсувів:

Нарешті, до результату застосовується функція активації — у нашому випадку sigmoid або ReLU. Підсумкова формула для прямого поширення у шарі виглядає так:

a=activation(Wx+b)a = activation(Wx + b)

де aa — вектор активацій нейронів (виходів).

Клас Layer

Оскільки MLP складаються з шарів, визначаємо окремий клас Layer. Його атрибути:

  • inputs: вектор вхідних даних (елементів n_inputs);
  • outputs: необроблені виходи нейронів (елементів n_neurons);
  • weights: матриця ваг;
  • biases: вектор зсувів;
  • activation_function: функція активації, що використовується у шарі.

Ваги та зсуви ініціалізуються випадковими значеннями з рівномірного розподілу в ([-1, 1]). inputs та outputs ініціалізуються як заповнені нулями масиви NumPy для забезпечення коректних розмірностей під час подальшого зворотного поширення.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Примітка

Ініціалізація inputs та outputs нулями запобігає помилкам форми та забезпечує узгодженість шарів під час прямого й зворотного проходів.

Метод Forward

Пряме поширення для шару обчислює сирі вихідні значення та застосовує активацію:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Перетворення вхідних даних у стовпчиковий вектор гарантує правильне множення з матрицею ваг і відповідність очікуваним розмірам у мережі.

Note
Примітка

За бажанням, можу ще більше скоротити цей матеріал, створити діаграму структури шару або згенерувати повний робочий код для класу Layer.

1. Що робить багатошаровий перцептрон (MLP) потужнішим за простий перцептрон?

2. Чому необхідно виконати цей код перед множенням inputs на матрицю ваг?

question mark

Що робить багатошаровий перцептрон (MLP) потужнішим за простий перцептрон?

Select the correct answer

question mark

Чому необхідно виконати цей код перед множенням inputs на матрицю ваг?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain how the weights and biases are initialized in the Layer class?

What activation functions can I use in the Layer class?

Can you walk me through how forward propagation works step by step?

Awesome!

Completion rate improved to 4

bookШари Перцептрона

Свайпніть щоб показати меню

Перцептрон — це найпростіша нейронна мережа, що складається лише з одного нейрона. Для розв’язання складніших задач використовують багатошаровий перцептрон (MLP), який містить одну або більше прихованих шарів, що дозволяють мережі вивчати складніші закономірності.

MLP складається з:

  1. Вхідного шару — отримує дані;
  2. Прихованих шарів — виділяють закономірності;
  3. Вихідного шару — формує передбачення.

Кожен шар містить декілька нейронів; вихід одного шару стає входом для наступного.

Ваги та зсуви шару

Раніше нейрон зберігав свої ваги у вигляді вектора, а зсув — як скаляр. Шар, однак, містить багато нейронів, тому його ваги утворюють матрицю, де кожен рядок містить ваги одного нейрона. Зсуви для всіх нейронів формують вектор.

Для шару з 3 входами та 2 нейронами:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Тут WijW_{ij} — вага від jj-го входу до ii-го нейрона; bib_i — зсув нейрона ii.

Пряме поширення

Пряме поширення активує кожен нейрон шляхом обчислення зваженої суми, додавання зсуву та застосування активаційної функції.

Раніше один нейрон використовував:

[ z = W \cdot x + b ]

Тепер, оскільки кожен рядок (W) — це вектор ваг одного нейрона, виконання матричного множення між матрицею ваг і вектором входу автоматично обчислює зважені суми для всіх нейронів одночасно.

Щоб додати зсуви до виходів відповідних нейронів, також слід додати вектор зсувів:

Нарешті, до результату застосовується функція активації — у нашому випадку sigmoid або ReLU. Підсумкова формула для прямого поширення у шарі виглядає так:

a=activation(Wx+b)a = activation(Wx + b)

де aa — вектор активацій нейронів (виходів).

Клас Layer

Оскільки MLP складаються з шарів, визначаємо окремий клас Layer. Його атрибути:

  • inputs: вектор вхідних даних (елементів n_inputs);
  • outputs: необроблені виходи нейронів (елементів n_neurons);
  • weights: матриця ваг;
  • biases: вектор зсувів;
  • activation_function: функція активації, що використовується у шарі.

Ваги та зсуви ініціалізуються випадковими значеннями з рівномірного розподілу в ([-1, 1]). inputs та outputs ініціалізуються як заповнені нулями масиви NumPy для забезпечення коректних розмірностей під час подальшого зворотного поширення.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Примітка

Ініціалізація inputs та outputs нулями запобігає помилкам форми та забезпечує узгодженість шарів під час прямого й зворотного проходів.

Метод Forward

Пряме поширення для шару обчислює сирі вихідні значення та застосовує активацію:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Перетворення вхідних даних у стовпчиковий вектор гарантує правильне множення з матрицею ваг і відповідність очікуваним розмірам у мережі.

Note
Примітка

За бажанням, можу ще більше скоротити цей матеріал, створити діаграму структури шару або згенерувати повний робочий код для класу Layer.

1. Що робить багатошаровий перцептрон (MLP) потужнішим за простий перцептрон?

2. Чому необхідно виконати цей код перед множенням inputs на матрицю ваг?

question mark

Що робить багатошаровий перцептрон (MLP) потужнішим за простий перцептрон?

Select the correct answer

question mark

Чому необхідно виконати цей код перед множенням inputs на матрицю ваг?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3
some-alt