오차역전파법

Opusdeisong·2024년 5월 8일
0

밑바닥시리즈

목록 보기
4/6

5.1 계산 그래프

계산 그래프는 계산 과정을 그래프로 나타낸 것으로 노드는 계산 결과를 표시하고 화살표는 계산의 순서를 나타낸다. 예를 들어 사과 2개의 가격을 계산하는 경우 덧셈 노드 곱셈 노드를 사용해 그래프로 표현할 수 있다.

5.1.1 계산 그래프로 풀다

계산 그래프로 문제를 푸는 절차는 다음과 같다.
1. 계산 그래프를 구성한다.
2. 그래프에서 계산을 왼쪽에서 오른쪽으로 진행한다.

5.1.2 국소적 계산

국소적 계산이란 전체에서 자신과 관련된 정보만으로 결과를 출력할 수 있는 것을 말한다. 최종 결과를 얻기 위해 복잡한 계산이 필요해도 중간 과정의 모든 계산 결과를 기억할 필요는 없다.

5.1.3 왜 계산 그래프로 푸는가?

계산 그래프로 푸는 가장 큰 이유로는 역전파를 통해 미분을 효율적으로 계산할 수 있기 때문이다. 머신러닝은 학습할 때 매개변수의 미분을 많이 사용하는데, 계산 그래프를 사용하면 이 미분을 효율적으로 계산할 수 있다.

5.2 연쇄법칙

연쇄법칙은 계산 그래프의 원리 이해에 아주 중요한 개념이다. 역전파는 연쇄법칙에 따라 국소적 미분을 순차적으로 전달하는 것이다.

5.2.1 계산 그래프의 역전파

계산 그래프의 역전파에서는 각 노드에서 다음 노드로 신호를 전달하는 순전파와 반대 방향의 전파가 일어난다. 이 전파되는 값이 앞 노드의 입력 값에 대한 미분이 된다.

5.2.2 연쇄법칙이란?

연쇄법칙은 합성함수의 미분에 대한 성질이다. 합성함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다.

5.2.3 연쇄법칙과 계산 그래프

계산 그래프의 역전파와 연쇄법칙은 밀접한 관련이 있다. 계산 그래프에서는 국소적 미분을 전달하는데, 여기서 전달되는 값이 연쇄법칙에 따라 계산되기 때문이다.

5.3 역전파

덧셈과 곱셈의 경우 역전파는 다음과 같다.

5.3.1 덧셈 노드의 역전파

덧셈 노드의 역전파는 입력값을 그대로 다음 노드로 보내면 된다.

5.3.2 곱셈 노드의 역전파

곱셈 노드의 역전파는 상류의 값에 순전파때의 입력 신호를 바꾼 값(교환법칙)을 곱한 후 다음으로 보낸다.

5.3.3 사과 쇼핑의 예

사과 2개를 구입한다고 할 때 계산 그래프와 역전파를 설명하면 이해하기 쉽다. 덧셈 노드와 곱셈 노드로 이루어지며 역전파를 따라가보면 사과 1개의 가격과 2의 값이 최종 결과에 미치는 영향을 알 수 있다.

5.4 단순한 계층 구현하기

계산 그래프의 노드를 하나의 '계층'으로 구현한다. 곱셈 노드의 forward와 backward를 메서드로 구현한 것이 곱셈 계층이라 할 수 있다.

5.4.1 곱셈 계층

MulLayer라는 클래스로 곱셈 노드의 forward와 backward를 구현한다.

5.4.2 덧셈 계층

AddLayer라는 클래스로 덧셈 노드의 forward와 backward를 구현한다.

5.5 활성화 함수 계층 구현하기

활성화 함수로 사용되는 ReLU와 Sigmoid도 계층으로 구현한다.

5.5.1 ReLU 계층

ReLU 계층을 forward와 backward 메서드로 구현한다. 순전파 때는 입력값이 0보다 크면 그대로 전달하고, 0이하면 0으로 전달한다. 역전파 때는 순전파의 입력 값이 0보다 크면 상류에서 들어온 값을 그대로 하류로 흘리고 순전파 때 0이하면 0을 하류로 흘린다.

5.5.2 Sigmoid 계층

Sigmoid 계층도 forward와 backward를 구현한다. 순전파에서는 sigmoid 함수 출력을 다음 노드로 전달하고, 역전파 때는 상류의 값에 sigmoid의 출력(1-출력)을 곱한 값을 다음 노드로 전달한다.

5.6 Affine/Softmax 계층 구현하기

이제 신경망 구성에 필요한 Affine 계층과 Softmax-with-Loss 계층을 구현한다.

5.6.1 Affine 계층

Affine 변환을 수행하는 계층을 구현한다. 순전파에서는 X・W+B를 계산하고 역전파에서는 상류에서 온 값에 가중치의 전치행렬을 곱하고 기울기를 출력한다.

5.6.2 배치용 Affine 계층

Affine 계층을 배치 처리 할 수 있도록 확장한 계층을 구현한다.

5.6.3 Softmax-with-Loss 계층

Softmax 함수와 손실 함수(교차 엔트로피 오차)를 포함한 계층을 구현하여 마지막 출력층으로 사용할 수 있도록 한다. 이 계층을 사용하면 역전파 때 Softmax 계층과 Cross Entropy Error 계층을 개별적으로 구현할 필요가 없어진다.

5.7 오차역전파법 구현하기

5.7.1 신경망 학습의 전체 그림

이제 신경망 학습의 전체 그림을 알아보자. 학습은 다음 4단계의 과정으로 수행된다. 1. 미니배치 2. 기울기 산출 3. 매개변수 갱신 4. 1-3 반복

5.7.2 오차역전파법을 적용한 신경망 구현하기

지금까지 구현한 계층을 조합하면 신경망을 쉽게 구현할 수 있다. Affine 계층과 ReLU 계층을 교대로 사용하고 마지막 출력 계층으로 Softmax-with-Loss 계층을 사용한다.

5.7.3 오차역전파법으로 구한 기울기 검증하기

수치 미분을 사용해 오차역전파법으로 구한 기울기를 검증한다. 기울기 검증은 오차역전파법의 구현에 버그가 있는지 없는지 확인할 때 유용하다.

5.7.4 오차역전파법을 사용한 학습 구현하기

지금까지 구현한 오차역전파법을 사용해 신경망을 학습시켜 본다. 각 매개변수의 기울기는 오차역전파법으로 효율적으로 구할 수 있다. 이 기울기를 사용하여 경사법(SGD)으로 매개변수를 갱신한다.

이상으로 오차역전파법의 구현 과정을 살펴보았다. 다음 장에서는 학습 관련 기술들을 알아볼 것이다.​​​​​​​​​​​​​​​​

profile
Dorsum curvatum facit informaticum.

0개의 댓글