[밑바닥부터 시작하는 딥러닝] 5. 오차역전파법 part1 - 계산 그래프와 역전파

Yejin Kim·2022년 3월 10일
1
post-thumbnail

🌿 오차역전파법

가중치 매개변수의 기울기를 효율적으로 계산하는 방법

이를 제대로 이해하는 방법에는 두 가지가 있다

  • 수식을 이용하는 방법
  • 계산 그래프를 이용하는 방법

계산 그래프란 ⁉️

계산 과정을 그래프로 나타낸 것
여기서 그래프는 그래프 자료구조로, 복수의 node와 edge로 표현된 것을 의미

활용 예시 )

문제 1 : 현빈 군은 슈퍼에서 1개에 100원인 사과를 2개 샀습니다. 이때 지불 금액을 구하세요. 단, 소비세가 10% 부과됩니다.

위 그림에서는 x2와 x1.1을 하나의 연산으로 취급해 원 안에 표기했지만, 곱셈인 'x'만을 연산으로 생각하면 다음과 같이 표현 가능하다.

문제 2 : 현빈 군은 슈퍼에서 사과를 2개, 귤을 3개 샀습니다. 사과는 1개에 100원, 귤은 1개에 150원입니다. 소비세가 10%일 때 지불 금액을 구하세요.

위의 예시들과 같이 계산 그래프를 이용한 문제는 다음의 흐름으로 진행된다.

  • 계산 그래프를 구성한다
  • 그래프에서 계산을 왼쪽에서 오른쪽으로 진행한다

여기서 계산을 왼쪽에서 오른쪽으로 진행하는 단계를 순전파(forward propagation)라고 한다.

순전파는 계산 그래프의 출발점부터 종착점으로의 전파 !

반대로 오른쪽에서 왼쪽으로의 전파역전파(backward propagation)이라고 한다.

역전파는 이후 미분을 계산할 때 중요한 역할을 한다.


💬 왜 계산 그래프를 이용할까 ?

💡 국소적 계산

계산 그래프의 특징은 국소적 계산을 전파함으로써 최종 결과를 얻는다는 점에 있다.

국소적 : 자신과 직접 관계된 작은 범위

국소적 계산은 결국 전체에서 어떤 일이 일어나는 지에 상관없이 자신과 관계된 정보만으로 결과를 출력할 수 있다.


위의 그림처럼 위에서 어떤 복잡한 계산이 있는지에 상관없이 각 노드는 자신과 관련한 계산만 처리를 하면 된다 !

이처럼 복잡한 문제를 각 노드에서의 단순한 계산에 집중하여 단순화할 수 있는 것이 계산 그래프의 장점

💡 중간 계산 결과의 보관

또 다른 이점으로는 중간 계산 결과를 모두 보관할 수 있다는 것에 있다.

ex)
사과 2개까지 계산했을 때의 금액 : 200원
소비세를 더하기 전의 금액 : 650원

💡 미분의 효율적 계산

실제 계산 그래프를 사용하는 가장 큰 이유는 역전파를 통해 '미분'을 효율적으로 계산할 수 있는 점에 있다.

문제 1을 다시 살펴보자.

문제 1 : 현빈 군은 슈퍼에서 1개에 100원인 사과를 2개 샀습니다. 이때 지불 금액을 구하세요. 단, 소비세가 10% 부과됩니다.

여기서 사과 가격이 오르면 최종 금액에 어떤 영향을 끼치는 지를 알고 싶다면 이는 사과 가격에 대한 지불 금액의 미분을 구하는 문제가 된다.

'사과 가격에 대한 지불 금액의 미분'같은 값은 계산 그래프에서 역전파를 통해 구할 수 있다.

역전파는 순전파와 반대 방향의 화살표(굵은 선)으로 표현되어 있다.
이 예시에서 역전파는 오른쪽에서 왼쪽으로

1 → 1.1 → 2.2

순으로 미분 값을 전달한다.

이 결과로부터 우리가 구하고자 했던 '사과 가격에 대한 지불 금액의 미분' 값이 2.2임을 알 수 있다.
즉, 사과가 1원 오르면 최종 금액은 2.2원 오른다는 뜻이다.

이 미분 값 외에도 역전파를 통해 추후
'소비세에 대한 지불 금액의 미분'등을 효율적으로 구할 수 있다.


⛓ 연쇄법칙

역전파는 '국소적인 미분'을 순방향과는 반대인 오른쪽에서 왼쪽으로 전달한다.
이 국소적 미분을 전달하는 원리는 연쇄법칙(chain rule)에 따른 것

계산 그래프에서의 역전파


역전파는 신호 E에 노드의 국소적 미분을 곱한 후 다음 노드로 전달하는 방식으로 계산이 이루어진다.
여기서 국소적 미분은 순전파의 y=f(x) 계산의 미분을 의미한다.

✨ 연쇄법칙이란?

연쇄법칙은 합성 함수의 미분에 대한 성질

합성 함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다.

z = t^2, t = x + y라 하면

위의 연쇄법칙 계산을 계산 그래프로 나타내면 다음과 같다.


맨 왼쪽 역전파를 보면 결국 역전파가 하는 일이 연쇄법칙의 원리와 동일하다는 것을 알 수 있다. 계산 그래프의 역전파 결과는 다음과 같다.


🔙 역전파

➕ 덧셈노드의 역전파

z = x + y라는 식을 생각해보자.
이 식의 x와 y에 대한 미분 식은 각각 1이다.
이를 계산 그래프로 나타내면 다음과 같다.

상류에서 전해진 미분에 1을 곱하여 하류로 흘리게 되는 것을 알 수 있다.
즉, 덧셈 노드의 역전파는 1을 곱하기만 할 뿐이므로 입력된 값을 그대로 다음 노드로 보내게 됨 !

ex) 10 + 5 = 15

✖️ 곱셈노드의 역전파

z = xy라는 식을 생각해보자.
이 식의 미분 식은 다음과 같고,

계산 그래프는 다음과 같이 나타낼 수 있다.

곱셈 노드의 역전파는 상류의 값에 순전파 때의 입력 신호들을 서로 바꾼 값을 곱해서 하류로 보내는 것을 알 수 있다.

ex) 10 x 5 = 50

곱셈의 역전파는 순방향 입력 신호의 값이 필요
따라서 구현 시 순전파의 입력 신호를 변수에 저장해둬야 한다 !

profile
The World Is My Oyster 🌏

0개의 댓글