상세 컨텐츠

본문 제목

[Deep Learning-딥러닝]Backpropagation (역전파) 및 Delta Rule을 이용한 가중치 조정 방법

Artificial Intelligence

by [성운] 2019. 8. 6. 21:05

본문

이번 포스팅 주제는 역전파관련 내용입니다. 선행학습으로 경사하강법이 필요하므로 https://ynebula.tistory.com/14 포스팅 내용 학습이 필요합니다.

Feed forwad

다층 신경망은 입력층과 출력층 사이에 여러 은닉층이 있는 신경망 구조를 가진 신경망입니다. 지도학습은 정답과 모델의 예측값을 비교한 오차를 기준으로 가중치를 조정합니다. 다층 신경망에서는 은닉 노드의 오차값 확인이 필요한데 이때 사용되는 방법이 역전파 알고리즘입니다.

역전파 알고리즘은 다층 신경망을 학습 방법입니다. (Learning representation by back-propagating error) 역전파(backpropagation) 알고리즘은 1986년에 개발되었습니다. 역전파 알고리즘의 아이디어는 은닉층 노드들의 오차를 확인하고 델타 규칙에 따라 이 오차들로 가중치들을 조정 합니다. 즉,역전파 알고리즘은 출력층의 오차를 은닉층으로 역전파시켜 신경망을 학습시킵니다.

back propagation

신경망은 순방향(feed forward)으로 (입력층->은닉층->출력층) 계산하여 출력값이 나옵니다. 반면 역전파 알고리즘은 출력층의 오차를 바탕으로 (출력층->은닉층->입력층) 반대 방향으로 계산합니다. 하지만 연산 방법은 순방향, 역방향 모두 같습니다.

출력노드 델타 구하기

신경망의 출력을 계산해보겠습니다(순방향 계산)

[입력층 은닉층]

Formula-1

여기서 v는 가중치곱의 합이고 y는 활성함수를 적용한 은닉층의 출력입니다.

[은닉층 출력층]

Formula-2

먼저 출력 노드들의 델타를 계산해야 합니다.

Formula-3

d는 주어진 정답, y는 출력 노드의 출력값 입니다. φ'(*) 은 출력 노드 활성함수의 도함수이고, v는 가중합 입니다.

은닉층 델타 구하기

위 그림처럼 역전파 알고리즘에서는 바로 오른쪽에 있는 계층의 델타를 역전파시켜 얻은 가중 합으로 오차를 정의합니다.

Formula-4

[Formula - 4] 행렬은 [Formula - 4]의 가중치 행렬 W와 전치행렬(transpose matrix) 관계입니다. 즉 델타를 역전파 시킬 때는 해당 가중치 행렬의 전치행렬에 델타를 곱하면 오차를 구할 수 있습니다. 앞의 식(3.5)는 다음과 같이 쓸 수 있습니다.

Formula-5

만약 은닉층이 추가로 더 있다면 같은 역전파 과정을 거쳐 은닉층의 델타를 차례로 모두 계산합니다. 이 단계를 입력층까지 반복합니다델타를 모두 확보했다면 신경망을 학습시키기 위한 준비는 끝났습니다. 이제 다음의 수식으로 신경망의 가중치를 계층별로 조절하면 됩니다.

Formula-6

xj는 해당 가중치의 입력 신호를 의미합니다. 무언가 익숙하지 않나요? 이 식은 앞 절에서 소개한 델타 규칙과 수식이 똑같습니다. 차이라면 은닉층 노드들의 델타는 신경망의 출력 오차를 역전파시켜 계산한 값이라는 정도입니다.

Formula-7

y1은 첫 번째 은닉 노드의 출력을 의미합니다.

Formula-8

여기서 x1 은 첫 번째 입력 노드의 출력값, 즉 신경망의 첫 번째 입력값을 의미합니다출력 노드의 오차(e)와 입력 노드의 출력 값(x)에 비례해서 가중치를 변경한다는 델타 규칙의 기본 개념은 같습니다.

Summary

1.     신경망의 가중치를 임의값을 초기화합니다.

2.     학습 데이터 <data, label>에서 오차와 델타를 계산합니다.

3.     출력 노드의 델타를 역전파시켜 앞 은닉 노드들의 델타를 계산합니다.

4.     단계 3을 입력층 바로 앞 은닉층까지 반복합니다.

5.     신경망의 가중치를 다음의 학습 규칙으로 변경합니다.

6.     모든 학습 데이터를 2~5단계를 반복합니다.

7.     오차 정도가 수렴될 때까지 단계 2~6단계를 반복합니다.

 

글이 도움이 되셨다면 공감 부탁 드립니다.

감사합니다.

 

 [참고자료]

딥러닝 첫걸음

haykin.neural-networks.3ed.2009

관련글 더보기

댓글 영역