본문 바로가기

파이썬 프로그래밍/Numpy 딥러닝46

22. 다중회귀-소프트맥스 함수 역전파(고급, 쉬운 방법) 이번 시간엔 소프트맥스 함수 역전파를 고급지게(?) 다뤄볼 것이다. 왜냐하면 기존에 다룬 방법(8.다중분류 구현하기(기초실습), 9.다중분류 구현하기(심화실습) ) 은 너무 비효율적이기 때문이다. (그래도 고급을 이해하기 위해서 읽고 오시라, 기본 수학적 배경 없으면 읽기 힘들 수 있다.) 일일이 소프트맥스 미분 행렬을 만드는 것은 너무나도 귀찮은(...) 일이다. 아래는 IRIS 꽃 분류에 사용하였던 소프트맥스 미분 행렬이다. 3개 출력이므로 (3, 3) Size의 행렬이 된다. dsmax_dg_matrix = np.array([[(smax_WXB1*(1-smax_WXB1))[0], -(smax_WXB1*smax_WXB2)[0], -(smax_WXB1*smax_WXB3)[0]], [-(smax_WXB1.. 2022. 2. 10.
21. 경사하강법의 개선 - Adam 저번 시간에 단순경사하강법을 개선한 Momentum과 RMSprop를 알아보았다. Momentum은 기울기를 변화시키는 방법으로 지역 최소점에 빠지지 않게 도와주었고 RMSprop는 학습률을 변화시키는 방법으로 진동을 줄여 빠른 시간내에 수렴할 수 있도록 도와주었다. 이 둘을 합치면 더 좋은 성능을 낼 수 있지 않을까? Adam은 Momentum과 RMSprop를 합친 최적화 방법이다. 즉 Momentum의 직진성과 RMSprop의 감쇠가 합쳐진 것으로 생각해 볼 수 있다. 수식을 보자 Adam 방법은 위의 수식에서 볼 수 있듯이 Momentum과 RMSprop를 합친 경사하강법이다. 그런데 이 식을 그대로 사용하다간 작은 문제가 생긴다. 바로 초기값 v = 0, s = 0이 문제다. 초기값에 따라 지수.. 2022. 2. 5.
20. 경사하강법의 개선 - Momentum, RMSprop 지난 시간에 단순 경사하강법은 수렴 가능성이 생각보다 낮다는 것을 보여주었다. 이번 시간은 경사하강법을 개선하여 빠르게 수렴하면서 지역 최소점에 수렴하지 않도록 할 수 있는지 보여줄 것이다. 저번 포스트에서 처럼 아래와 같은 오차 함수에 대해 단순 경사하강법을 진행하였다. 단순 경사하강법(GD)로는 시작 위치 -8일 때 움직임은 다음과 같다. (1) learning rate = 1 이상부터 지역최소점 통과 (2) learning rate = 1.4 이상부터 전체 최소점 또는 지역 최소점 근처에서 진동하고 제대로 수렴하지 않는다. (3) learning rate = 2.2 이상부터 overflow, 튕겨버린다. 1. Momentum 일반적으로 물리에서 Momentum(모멘텀) 이라 함은 '운동량'을 뜻한다.. 2022. 2. 4.
19. 경사하강법과 단순 경사하강법의 문제점 경사하강법(Gradient descent)은 오차함수의 기울기를 구하고 기울기의 절대값이 낮은 쪽으로 계속 이동시켜 오차를 최소화하는 방법이다. 지금까지 사용한 경사하강법 방법은 아래와 같이 오차함수의 기울기를 구하고 Weight값과 Bias 값을 수정하였다. for i in range(Epochs): dL_dW1, dL_dB1, dL_dW2, dL_dB2, dL_dW3, dL_dB3 = loss_gradient(inputs, targets, W1, B1, W2, B2, W3, B3) W1 = W1 + -1*learning_rate * dL_dW1 B1 = B1 + -1*learning_rate * dL_dB1 W2 = W2 + -1*learning_rate * dL_dW2 B2 = B2 + -1*lea.. 2022. 1. 28.