본문 바로가기
필기 노트/처음 배우는 딥러닝 수학

[딥러닝 기초] 오차역전법 (back-propagation)

by misconstructed 2020. 7. 10.
728x90

안녕하세요 :)

오늘은 경사하강법의 문제를 해결하기 위한 오차역전법 (back-propagation)에 대해서 다뤄보겠습니다.

오차역전법 (back-propagation)

경사하강법

오차역전법에 대해 이야기해보기 전에 경사하강법을 복습해보겠습니다.

경사하강법

경사하강법을 오차함수에 적용시켜보겠습니다.

경사하강법의 적용

간단한 다변수 함수의 최소값을 찾는 경우, 경사하강법은 효율적으로 사용될 수 있습니다.

하지만, 많은 파라미터가 포함되는 경우, 경사하강법으로 최소값을 계산하기 어려워집니다.

경사하강법을 위와 같이 적용하는 경우, 다수의 기울기 성분을 계산하는 비용이 커지게 됩니다.

여러 항을 한꺼번에 미분해서 계산하려면 너무 많은 비용이 들기 때문에 효율적이지 못합니다.

이러한 문제를 해경하기 위해서 오차역번법(back-propagation)이라는 방법을 사용하게 되었습니다.

유닛의 오차

오차역전법을 이해하기 전에 유닛의 오차에 대해서 먼저 이야기해보겠습니다.

오차역전법은 경사하강법에서 사용되는 미분 계산을

수열의 점화식으로 대체한 방식입니다. (점화식에 대한 간단한 설명은 여기를 참고하세요)

유닛의 오차는 오차역전법에서 사용되는 점화식에서 사용됩니다.

유닛의 오차는 다음과 같이 정의합니다.

유닛의 오차

유닛의 오차는 유닛의 가중입력 z가 전체 오차 C에 미치는 변화율을 의미합니다.

오차가 최소값이 되는 곳에서 변와율을 0이 되므로, 유닛의 오차도 0이 됩니다.

신경망 예시

위와 같은 신경망을 예로 들어보겠습니다.

위와 같은 신경망에서는 다음과 같은 식이 성립합니다.

위의 식을 일반화해보면 다음과 같습니다.

앞에서 잠깐 언급했지만, 오차역전법에서는 유닛의 오차를 이용해서 점화식을 구성합니다.

그러므로 l층에서의 유닛의 오차와 (l+1)층에서 유닛의 오차의 관계를 알아야 합니다.

예를들어서 설명해보겠습니다.

오차함수 C가 제곱오차를 사용하고,

활성화함수 a()가 시그모이드(sigmoid)를 사용한다고 가정하겠습니다.

이제 l층과 (l+1)층 사이의 관계를 일반화해보겠습니다.

일반화하기 위해서 l = 2 인 상황을 예시로 보겠습니다.

신경망 예시

2층의 첫번째 유닛의 오차를 구하면 다음과 같습니다.

위의 식을 일반화시키면 다음과 같습니다.

유닛의 오차의 점화식

위와 같은 방식으로 유닛의 오차에 대한 점화식을 구할 수 있습니다.

점화식을 이용하면, 출력층의 유닛의 오차만 구하면 나머지 유닛의 오차는 편미분을 하지 않고도 구할 수 있습니다.

이러한 방식으로 경사하강법의 단점을 보완할 수 있습니다.


처음 배우는 딥러닝 수학
국내도서
저자 : 와쿠이 요시유키,와쿠이 사다미 / 박광수역
출판 : 한빛미디어 2018.02.01
상세보기

<처음 배우는 딥러닝 수학>을 읽으면서 개인적으로 정리한 내용입니다.

제가 잘못 이해했거나, 수정이 필요한 부분에 대한 피드백은 언제든지 환영입니다.

감사합니다 :)

 

728x90

댓글