Завдання: Навчання Перцептрона
Перш ніж перейти до навчання перцептрона, зверніть увагу, що використовується функція втрат бінарної крос-ентропії, яка була розглянута раніше. Останнє ключове поняття перед реалізацією зворотного поширення — це формула похідної цієї функції втрат відносно вихідних активацій, an. Нижче наведено формули для функції втрат та її похідної:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yде an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Нарешті, формули для обчислення градієнтів мають такий вигляд:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlЗразки навчальних даних (X_train) разом із відповідними мітками (y_train) зберігаються як масиви NumPy у файлі utils.py. Крім того, там також визначені екземпляри функцій активації:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Ваша мета — завершити процес навчання багатошарового перцептрона, реалізувавши зворотне поширення помилки та оновлення параметрів моделі.
Дотримуйтесь наступних кроків:
- Реалізуйте метод
backward()у класіLayer:
- Обчисліть наступні градієнти:
dz: похідна функції втрат за препроактиваційними значеннями, використовуючи похідну функції активації;d_weights: градієнт функції втрат за вагами, обчислений як добутокdzі транспонованого вхідного вектора;d_biases: градієнт функції втрат за зсувами, дорівнюєdz;da_prev: градієнт функції втрат за активаціями попереднього шару, отриманий множенням транспонованої матриці ваг наdz.- Оновіть ваги та зсуви, використовуючи швидкість навчання.
- Завершіть метод
fit()у класіPerceptron:
- Обчисліть вихід моделі, викликавши метод
forward();- Обчисліть втрати за формулою крос-ентропії;
- Обчисліть dan — похідну функції втрат за вихідними активаціями;
- Пройдіть у зворотному порядку по шарах, виконуючи зворотне поширення помилки через виклик методу
backward()кожного шару.
- Перевірте процес навчання:
- Якщо все реалізовано правильно, значення втрат має стабільно зменшуватися з кожною епохою при швидкості навчання
0.01.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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?
Awesome!
Completion rate improved to 4
Завдання: Навчання Перцептрона
Свайпніть щоб показати меню
Перш ніж перейти до навчання перцептрона, зверніть увагу, що використовується функція втрат бінарної крос-ентропії, яка була розглянута раніше. Останнє ключове поняття перед реалізацією зворотного поширення — це формула похідної цієї функції втрат відносно вихідних активацій, an. Нижче наведено формули для функції втрат та її похідної:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yде an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Нарешті, формули для обчислення градієнтів мають такий вигляд:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlЗразки навчальних даних (X_train) разом із відповідними мітками (y_train) зберігаються як масиви NumPy у файлі utils.py. Крім того, там також визначені екземпляри функцій активації:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Ваша мета — завершити процес навчання багатошарового перцептрона, реалізувавши зворотне поширення помилки та оновлення параметрів моделі.
Дотримуйтесь наступних кроків:
- Реалізуйте метод
backward()у класіLayer:
- Обчисліть наступні градієнти:
dz: похідна функції втрат за препроактиваційними значеннями, використовуючи похідну функції активації;d_weights: градієнт функції втрат за вагами, обчислений як добутокdzі транспонованого вхідного вектора;d_biases: градієнт функції втрат за зсувами, дорівнюєdz;da_prev: градієнт функції втрат за активаціями попереднього шару, отриманий множенням транспонованої матриці ваг наdz.- Оновіть ваги та зсуви, використовуючи швидкість навчання.
- Завершіть метод
fit()у класіPerceptron:
- Обчисліть вихід моделі, викликавши метод
forward();- Обчисліть втрати за формулою крос-ентропії;
- Обчисліть dan — похідну функції втрат за вихідними активаціями;
- Пройдіть у зворотному порядку по шарах, виконуючи зворотне поширення помилки через виклик методу
backward()кожного шару.
- Перевірте процес навчання:
- Якщо все реалізовано правильно, значення втрат має стабільно зменшуватися з кожною епохою при швидкості навчання
0.01.
Рішення
Дякуємо за ваш відгук!
single