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. Обчисліть наступні градієнти: dz, d_weights, d_biases та da_prev у методі backward() класу Layer.
  2. Обчисліть output моделі у методі fit() класу Perceptron.
  3. Обчисліть da (danda^n) перед циклом, що є градієнтом функції втрат щодо вихідних активацій.
  4. Обчисліть da та виконайте зворотне поширення помилки у циклі, викликаючи відповідний метод для кожного шару.

Якщо навчання реалізовано правильно, при швидкості навчання 0.01 значення втрат має стабільно зменшуватися з кожною епохою.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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. Обчисліть наступні градієнти: dz, d_weights, d_biases та da_prev у методі backward() класу Layer.
  2. Обчисліть output моделі у методі fit() класу Perceptron.
  3. Обчисліть da (danda^n) перед циклом, що є градієнтом функції втрат щодо вихідних активацій.
  4. Обчисліть da та виконайте зворотне поширення помилки у циклі, викликаючи відповідний метод для кожного шару.

Якщо навчання реалізовано правильно, при швидкості навчання 0.01 значення втрат має стабільно зменшуватися з кожною епохою.

Рішення

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

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

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

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

single

some-alt