Skip to content

기계학습 오차역전파 #
Find similar titles

Structured data

Category
Programming

오차 역전파1 #

개요 #

보통 x -> f -> f(x)처럼 x가 함수 f를 거쳐 왼쪽에서 오른쪽으로 순서대로 계산하는 것을 순전파 라고 한다. 여기서 함수 f가 단순한 계산이라면 오차가 없겠지만, 계산이 복잡하고 계속해서 계산 과정을 거듭할수록 출력된 결괏값은 생각하지 못한 이유로 정답과의 오차가 있을 확률이 높아진다. 여기서는 복잡한 계산과 오차가 있음을 가정하고, 오차를 줄이는 방법의 하나인 오차 역전파에 대해서 알아본다.

개념 #

역전파는 먼저 계산 결과와 정답의 오차를 구해 이 오차에 관여하는 값들의 가중치를 수정하여 오차가 작아지는 방향으로 일정 횟수를 반복해 수정하는 방법이다. 이 횟수가 커지면 그만큼 정확성이 높아지지만, 시간이 오래 걸린다는 단점이 있고, 횟수가 작아지면 정확성이 떨어지지만, 시간을 단축하는 장점이 있다. 이 횟수의 주기를 1 epoch 주기라고 하며, epoch를 늘릴수록 가중치가 업데이트(학습)되면서 점점 오차를 줄여나가는 방법이다. 아래의 그림을 보면 Output layer에서 나온 결괏값과 정답의 오차는 0.6이다. 여기서 Input1에서 3을 Input2에서 2를 입력하였기 때문에 Input1은 60%, Input2는 40%의 영향을 주었다고 볼 수 있다.

따라서 이에 맞게 가중치를 배분하여 영향을 미친 만큼 역전파를 계산하여 Inpu1의 노드에는 0.36만큼 Input2에는 0.24만큼을 전달한다. 오차 역전파는 말 그대로 이렇게 오차를 점점 거슬러 올라가면서 다시 전파하는 것을 의미한다.2

markdown

정리 #

  1. 순전파 - 왼쪽에서부터 차례대로 계산하면 오른쪽의 결과에 영향을 미친다. ex) 100(사과 1개 100원) - x2(사과 2개) - > 200 - x1.1(세금) - > 220(220원) 만약 사과의 가격이 90원으로 바뀌게 되면 최종 결과는 198원이 되며 뒤쪽의 결과에 영향을 미치게 된다.
  2. 신경망(복잡한 계산)을 통과해서 도달한 결괏값은 오차를 포함한다.
  3. 최종 오차는 여러 계산 과정들을 거치며 오차가 누적된 값이다.
  4. 각 계산 과정마다 어느 정도의 오차가 발생했는지를 관찰해서 가중치를 구하고, 계산과정을 다시 수정해 준다.
  5. 즉, 오차가 많이 발생하게 하는 요인들은 큰 폭으로 값을 변화시켜 값을 변화시키고 오차를 줄인다.
  6. 오차 역전파는 기존 오차를 줄이는 방법 중 하나인 수치미분의 한계를 보완하여 효율을 높인다.

계산 그래프3 #

계산 그래프(computational graph)는 계산과정을 그래프로 나타낸 것이다. 노드(node, 꼭지점)은 함수(연산), 엣지(edge, 간선)는 값을 뜻한다. 계산 그래프를 이용하면 오차 역전파를 쉽게 이해할 수 있다. y=f(x)를 나타내는 계산 그래프는 아래 그림과 같다.

markdown

왜 계산 그래프를 사용하는가? #

계산 그래프는 노드 하나에 대해서 국소적 계산으로 단순하므로 반복적인 계산을 하기 쉽다.

  1. 국소적 계산 기능 - 전체가 복잡해도 노드 하나가 단순 계산에 집중하기 때문에 문제를 단순화할 수 있다.
  2. 중간 계산 결과 보관 - 중간 계산 결과를 보관하여 추후 데이터 관리와 변화가 쉽다.
  3. 미분의 효율적 계산 - 편미분을 통해 복잡한 미분 계산이 아닌 미분 계산을 간소화할 수 있다.

사용방법 #

  1. 계산과정을 그래프로 나타낸다.
  2. 노트(node)와 에지(edge)로 표현

오차 역전파 #

역전파 #

사과를 사는 것을 예로 들면 사과 1개는 1,000원이고 2개를 구매할 경우 2,000원에 세금을 더해서 2,200원이라는 최종 가격이 결정됐다. 이것을 식으로 나타내면 다음과 같다.

사과(1000) - x2 - > 2000 - x1.1 - > 2200(가격)

역전파는 가격부터 시작하여 반대방향으로 계산하는 것이다. 이것을 식으로 나타내면 다음과 같다.

2.2(사과) <- x2- 1.1 <- x1.1 -1(가격)

사과의 1000이 바뀌는 변동률 x는 가격에 2.2배의 영향을 미치게 된다. 이것은 역전파의 결과이며, 이것은 미분 값과 관련이 있다. x가 커지는 변동에 따라 y가 커지는 비율(미분) 미분을 쓰지 않아도 변화량(기울기)을 알 수 있다. 이것이 위에서 말한 미분을 효율적으로 계산하는 방법이다. 이 과정은 단순한 계산이기에 바로 이해할 수 있지만 복잡한 계산이라면 연쇄 법칙을 꼭 알고 있어야 한다.

연쇄 법칙 - chain rule4 #

z = (x+y)^2 = az/ax = (az/at)(at/ax) = 2t1 = 2(x+y)

계산 그래프에서 ∂t/∂y의 의미에 주목할 필요가 있다. 지금은 예시이기 때문에 노드가 하나밖에 없지만, 실제 계산 과정은 꽤 많은 노드로 복잡한 계산을 하게 된다. 따라서 이 각 과정을 차례로 처리하는 방법으로 합성 미분 방식을 이용하는데 이것이 곧 연쇄 법칙이다.

개념 #

함수 f가 x0에서 미분 가능하며, 함수 g가 f(x0)에서 미분 가능하다고 하면 f*g의 x0에서도 미분할 수 있으며, 그 미분은 다음과 같다.

markdown

markdown,markdown를 사용하여 다시 쓰면 다음과 같다.

markdown

합성 함수를 미분하는 공식이다. 합성함수의 미분법이라고도 한다. 카라테오도리5 보조정리를 이용하면 간단하게 증명할 수 있다. 연쇄 법칙을 적분에 거꾸로 적용한 것을 치환 적분이라고 한다.

참고문헌 #

  • 오차 역전파1
  • 문과생도 이해하는 딥러닝 (3) - 오차 역전파, 경사하강법2
  • 그래프 기본 용어3
  • 연쇄 법칙4
  • 카라테오도리 보조정리5
0.0.1_20210630_7_v33