반응형

출처 : 밑바닥부터 시작하는 딥러닝

 

신경망의 가중치 매개변수의 기울기(정확히는 가중치 매개변수에 대한 손실 함수의 기울기)는 수치 미분을 사용해 구했습니다.

수치 미분은 단순하고 구현하기도 쉽지만 계산 시간이 오래 걸린다는 게 단점입니다.

 

가중치 매개변수의 기울기를 효율적으로 계산하는 오차역전파법 backpagation을 배워보겠습니다. 

 

오차연전파법을 제대로 이해하는 방법은 두 가지가 있을 것입니다.

하나는 수식을 통한 것이고 

다른 하나는 계산 그래프를 통한 것입니다.

 

계산 그래프를 사용해서 '시작적'으로 이해시켜드리겠습니다.

 

 

5.1 계산 그래프

계산 그래프 computational graph 는 계산 과정을 그래프로 나타낸 것입니다.

여기에선느 그래프는 우리가 잘 아는 그래프 자료구조로 , 복수의 노드와 에지로 표현됩니다.

 

5.1.1 계산 그래프로 풀다

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

계산 그래프는 계산 과정을 노드와 화살표로 표현합니다.

'x'만을 연산으로 생각할 수 도 있다.

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

계산 그래프를 구성 후 문제 풀이는 다음 흐름으로 진행

1. 계산 그래프를 구성한다.

2. 그래프에서 계산을 왼쪽에서 오른쪽으로 진행한다.

 

순전파 Forward propagation

왼쪽으로 오른쪽으로 계산 진행

계산 그래프의 출발점에서 종착점으로 전파

역전파 Backward propagation

오른쪽에서 왼쪽으로 계산 진행

미분 계산에 중요한 역할

 

5.1.2 국소적 계산

계산 그래프 특징: 국소적 계산을 전파하여 최종 결과를 얻음

전체와 상관 없이 부분적인 결과 출력 가능

 

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

국소적 계산

 

5.2 연쇄 법칙 Chain Rule

한편 역전파는 '국소적인 미분'을 순방향과 반대인 오른쪽에서 왼쪽으로 전달합니다. 

또한 , 이 '국소적 미분'을  전달하는 원리는 연쇄 법칙에 따른 것입니다.

 

5.2.1 계산 그래프의 역전파

목적은 신경망의 오차를 줄이는 것

각 가중치별 Loss에 대한 그래디언트를 구한 뒤 그래디언트가 향한 쪽으로 가중치들을 업데이트

 

5.2.2 연쇄법칙이란 ?

합성 함수란 여러 함수로 구성된 함수입니다.

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

 

5.2.3 연쇄법칙과 계산 그래프

 

5.3 역전파 

5.3.1 덧셈 노드의 역전파

덧셈 노드의 역전파는 상류의 값을 그대로 흘려보낸다.

 

5.3.2 곱셈 노드의 역전파

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

곱셈의 역전파 때는 순방향 입력 신호를 저장해 두어야 한다.

 

5.3.3 사과 쇼핑의 예

 

5.4 단순한 계층 구현하기 

5.4.1 곱셈 계층

forward()순전파

backward() 역전파 

 

5.4.2 덧셈 계층

backward() 에서는 상류에서 내려온 미분(dout)을 그대로 하류로 흘러내림

 

5.5 활성화 함수 계층

5.5.1 ReLU 계층

순전파 입력인 x가 0 보다 크면 역전파는 상류의 값을 그대로 하류로 흘립니다.

순전파 입력 x가 0 이하이면 역전파 때 하류로 신호를 보내지 않습니다.

 

5.5.2 Sigmoid 계층

 

Sigmoid Sigmoid 계층 - 1단계

Sigmoid Sigmoid 계층 - 2단계

Sigmoid Sigmoid 계층 - 3단계

Sigmoid Sigmoid 계층 - 4단계

결론: 계산 그래프의 중간 과정을 모두 묶어 sigmoid 노드 하나로 대체가능

 

5.6 Affine / Softmax Affine / Softmax 계층 구현

5.6.1 Affine 계층

신경망의 순전파에서 가중치 신호의 총합을 계산하기 위해 행렬의 곱 사용 np.dot()

affine transformation: 신경망의 순전파 때 수행하는 행렬의 곱은 기하학에선는 어파인 변환 이라고 합니다. 

 

5.6.2 배치용 Affine 계층

지금까지는 하나의 입력 데이터이나, 데이터 N개 배치를 순전파하는 경우

 

기존과 다른 부분은 입력 X의 형상이 (1, 2)에서 (N, 2)가 된 것

 

Softmax-with-Loss 계층

소프트맥스 함수 - 입력 값을 정규화하여 출력

Softmax-with-Loss 계층은 다소 복잡. 

 

5.7 오차역전파법 구현

학습: 신경망의 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정

전체 : 신경망에는 적응 가능한 가중치와 편향이 있고 , 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 '학습'이라 합니다. 

 

5.7.1 신경망 학습의 전체 그림

1단계 - 미니배치 훈련 데이터 중 일부를 무작위로 가져옴

2단계 - 기울기 산출 각 가중치 매개변수의 기울기(손실 함수의 값을 작게 하는 방향)를 구함

3단계 - 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금 갱신

4단계 - 반복 1~3단계를 반복

 

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

 

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

기울기 확인 Gradient check : 수치 미분의 결과와 오차역전파법의 결과를 비교하여 오차역전파법을 제대로 구현했는지 검증하곤 한답니다. 이처럼 두 방식으로 구한 기울기가 일치함(엄밀히 말하면 거의 같음)을 확인하는 작업을 기울기 확인이라고 합니다. 

 

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

 

반응형

' > 밀바닥부터 시작하는 딥러닝' 카테고리의 다른 글

07-1. 합성곱 신경망(cnn)  (0) 2020.11.19
06. 학습 관련 기술들  (0) 2020.10.20
04. 신경망 학습  (0) 2020.09.25
03. 신경망  (0) 2020.09.23
02. 퍼셉트론  (0) 2020.09.21

+ Recent posts