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

bookЗавдання: Навчання Перцептрона

Перш ніж перейти до навчання перцептрона, зверніть увагу, що використовується функція втрат бінарної крос-ентропії, яка була розглянута раніше. Останнє ключове поняття перед реалізацією зворотного поширення — це формула похідної цієї функції втрат відносно вихідних активацій, ana^n. Нижче наведено формули для функції втрат та її похідної:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

де an=y^a^n = \hat{y}

Для перевірки правильності навчання перцептрона метод fit() також виводить середнє значення втрат на кожній епосі. Воно обчислюється шляхом усереднення втрат по всіх навчальних прикладах у цій епосі:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Нарешті, формули для обчислення градієнтів мають такий вигляд:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Зразки навчальних даних (X_train) разом із відповідними мітками (y_train) зберігаються як масиви NumPy у файлі utils.py. Крім того, там також визначені екземпляри функцій активації:

relu = ReLU()
sigmoid = Sigmoid()
Завдання

Swipe to start coding

Ваша мета — завершити процес навчання багатошарового перцептрона, реалізувавши зворотне поширення помилки та оновлення параметрів моделі.

Дотримуйтесь наступних кроків:

  1. Реалізуйте метод backward() у класі Layer:
  • Обчисліть наступні градієнти:
  • dz: похідна функції втрат за препроактиваційними значеннями, використовуючи похідну функції активації;
  • d_weights: градієнт функції втрат за вагами, обчислений як добуток dz і транспонованого вхідного вектора;
  • d_biases: градієнт функції втрат за зсувами, дорівнює dz;
  • da_prev: градієнт функції втрат за активаціями попереднього шару, отриманий множенням транспонованої матриці ваг на dz.
  • Оновіть ваги та зсуви, використовуючи швидкість навчання.
  1. Завершіть метод fit() у класі Perceptron:
  • Обчисліть вихід моделі, викликавши метод forward();
    • Обчисліть втрати за формулою крос-ентропії;
  • Обчисліть danda^n — похідну функції втрат за вихідними активаціями;
  • Пройдіть у зворотному порядку по шарах, виконуючи зворотне поширення помилки через виклик методу backward() кожного шару.
  1. Перевірте процес навчання:
  • Якщо все реалізовано правильно, значення втрат має стабільно зменшуватися з кожною епохою при швидкості навчання 0.01.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how the derivative of the binary cross-entropy loss is used in backpropagation?

What is the purpose of printing the average loss at each epoch?

Can you clarify how the gradients are computed using the provided formulas?

close

Awesome!

Completion rate improved to 4

bookЗавдання: Навчання Перцептрона

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

Перш ніж перейти до навчання перцептрона, зверніть увагу, що використовується функція втрат бінарної крос-ентропії, яка була розглянута раніше. Останнє ключове поняття перед реалізацією зворотного поширення — це формула похідної цієї функції втрат відносно вихідних активацій, ana^n. Нижче наведено формули для функції втрат та її похідної:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

де an=y^a^n = \hat{y}

Для перевірки правильності навчання перцептрона метод fit() також виводить середнє значення втрат на кожній епосі. Воно обчислюється шляхом усереднення втрат по всіх навчальних прикладах у цій епосі:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Нарешті, формули для обчислення градієнтів мають такий вигляд:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Зразки навчальних даних (X_train) разом із відповідними мітками (y_train) зберігаються як масиви NumPy у файлі utils.py. Крім того, там також визначені екземпляри функцій активації:

relu = ReLU()
sigmoid = Sigmoid()
Завдання

Swipe to start coding

Ваша мета — завершити процес навчання багатошарового перцептрона, реалізувавши зворотне поширення помилки та оновлення параметрів моделі.

Дотримуйтесь наступних кроків:

  1. Реалізуйте метод backward() у класі Layer:
  • Обчисліть наступні градієнти:
  • dz: похідна функції втрат за препроактиваційними значеннями, використовуючи похідну функції активації;
  • d_weights: градієнт функції втрат за вагами, обчислений як добуток dz і транспонованого вхідного вектора;
  • d_biases: градієнт функції втрат за зсувами, дорівнює dz;
  • da_prev: градієнт функції втрат за активаціями попереднього шару, отриманий множенням транспонованої матриці ваг на dz.
  • Оновіть ваги та зсуви, використовуючи швидкість навчання.
  1. Завершіть метод fit() у класі Perceptron:
  • Обчисліть вихід моделі, викликавши метод forward();
    • Обчисліть втрати за формулою крос-ентропії;
  • Обчисліть danda^n — похідну функції втрат за вихідними активаціями;
  • Пройдіть у зворотному порядку по шарах, виконуючи зворотне поширення помилки через виклик методу backward() кожного шару.
  1. Перевірте процес навчання:
  • Якщо все реалізовано правильно, значення втрат має стабільно зменшуватися з кожною епохою при швидкості навчання 0.01.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

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

single

some-alt