데이터 과학

오류역전파의 간단한 원리 본문

인공지능/기초 인공신경망

오류역전파의 간단한 원리

티에스윤 2021. 5. 24. 16:29

인공 신경망에서의 오류역전파는 입력과 은닉층(Hidden layer)의 연산의 결과와 활성화 함수(activate function)의 발산으로 구성되어 있다. 

 

  1. 입력값 → 은닉층 연산 (가중치 곱 + 편향 더하기)
  2. 은닉층 연산 결과 → 활성화 함수 적용 (예: sigmoid, ReLU 등)
  3. 은닉층의 출력 → 다음 은닉층 입력 → 연산 (가중치 곱 + 편향 더하기)
  4. 두 번째 은닉층 출력 → 활성화 함수 적용
  5. 출력층에서 최종 결과 산출
  6. 출력 결과와 정답(타깃) 간 오차 계산 (예: MSE, Cross-Entropy)

 

 

이후에 오차값을 바탕으로 변화율을 만들어 내야 하는데 이때 사용하는 것이 미분인데 미분의 연속이 모여서 만든 개념이 경사 하강법이다. 

 

 

https://ko.wikipedia.org/wiki/%EA%B2%BD%EC%82%AC_%ED%95%98%EA%B0%95%EB%B2%95

 

경사 하강법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 경사 하강법(傾斜下降法, Gradient descent)은 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하고 경사의 절댓값이 낮은 쪽으로 계

ko.wikipedia.org

 

 

 

경사하강법은 점차적으로 변화율이 낮아진다는데 목표를 두고 학습률 (learning rate)를 연산하여서 변화율의 폭을 조절한다. 

 

그렇다면 결과값의 오차를 어떤 방식으로 반영해서 변화율을 조절하느냐인데 이것은 변화율에 대한 비율을 간단하게 계산하여 전사행렬(transpos mtrix)로 은닉층에 변화율을 반영하면 된다. 

 

변화율을 역으로 반영한다고 하여서 error- Backpropagtion Algorithm이라고 하는데 기본은 전방향 알고리즘이다. 

 

 

파이썬의 numpy에서 구현을 하면 다음과 같은 프로그램이 되겠다. 

 

delta1,2는 변화율을 표기한 것이며 

w2는 두번째 웨이트값

w1은 첫번째 웨이트값이다. 

 

delta2 = (Y-y) * (Y * (1-Y))
delta1 = np.dot(delta2, w2.T) * (a1 * (1-a1))
w2 -= alpha * np.dot(a1.T, delta2)
w1 -= alpha * np.dot(x.T, delta1)

 

위 프로그램에서 보면 delta1에 w2.T 에서 두번째 웨이트 값을 전치행렬로 만들어 놓았으며 

w2에서는 a1.T 이라고 표기하였다. a1은 아래 순방향 연산 소스를 보면 첫번째 활성화 함수의 발산값이다. 

w1에서는 x.T 라고 x를 전치행렬로 표기하였다. 

 

 

- 순방향 연산 

z1 = np.dot(x, w1)
a1 = act(z1)
z2 = np.dot(a1, w2)
Y = act(z2)

 

 

그렇다면 전치행렬을 쓰는 이유는 무엇일까. 

 

 

입력값과 은닉층까지 간단하게 표시한 전방향 신경망

 

전방향의 경우는 순방향 행태로 일반적인 행렬 연산을 쓰면 된다. 

h1은 w11과 w21이 영향을 준다. 

 

 

역방향일 경우는 노드에서 영향 받는 은닉값들이 다르다.

 

역방향일 경우는 영향 받는 은닉층 값들이 다르다. 

x1의 경우는 w11과 w12가 영향을 준다. 

 

 

그렇기 때문에 전치행렬을 사용하여 가로 세로를 바꿔서 연산을 하게 된다. 

 

이 방법을 그래도 순방향과 역방향 형태로 계속 반복적으로 학습을 하게 된다면 오차는 점점 작아지게 되면서 은닉층의 값들은 변화 하게 될것이다. 

 

어느 순간 오차범위가 원하는 범위 안에 들어 온다면 학습을 멈추게 된다. 

 

if math.sqrt(sum((Y-y)**2)/4) < 0.05:
break

학습이 멈추면 정교화된 은닉층 값을 통해 새로운 데이터를 입력하면 학습 된 결과를 확인 할 수 있다. 

 

원리는 간단하다. 정방향 -> 역방향 -> 정방향 -> 역방향 -> 정방향 -> 역방향.....    언제까지?

오차가 원하는 숫자 이하로 나올때 까지 학습하면 된다. 

 

 

'인공지능 > 기초 인공신경망' 카테고리의 다른 글

멀티레이어 퍼셉트론  (0) 2022.03.13
반가산기와 전가산기  (6) 2022.03.13
퍼셉트론  (4) 2022.03.09
인공지능 분류와 역사  (0) 2021.09.26
인공지능의 기본 이론  (0) 2021.09.26