Vanishing Gradient: 기울기 소실

Yun yoseob·2022년 2월 2일
3
post-thumbnail

오늘 포스팅할 2번째 키워드로 공부하는 데이터 분석의 키워드는 Vanishing Gradient입니다.

퍼셉트론이란 입력층과 출력층으로만 구성된 최초의 인공신경망을 의미합니다.

심층 신경망은 은닉층이 2개 이상인 신경망을 의미합니다.

Feed Forward Neural Network(순방향신경망)은 입력데이터가 입력층, 은닉층, 출력층 순서로 전파되어 판별 함수 값으로 변환되는 신경망이며, Back Propagation(역전파)는 역방향으로 가중치 갱신을 통해 오차를 최소화시키도록 학습시키는 알고리즘입니다.

Feed Forward Neural Network & Back Propagation

오늘 다룰 Gradient Vanishing(기울기 소실) 문제는 Back Propagation에서 계산 결과와 정답과의 오차를 통해 가중치를 수정하는데, 입력층으로 갈수록 기울기가 작아져 가중치들이 업데이트 되지 않아 최적의 모델을 찾을 수 없는 문제입니다.

Vanishing Gradient Problem : Sigmoid

Vanishing Gradient 문제는 신경망의 활성함수의 도함수 값이 계속 곱해지다 보면 가중치에 따른 결과값의 기울기가 0이 되어 버려서, Gradient Descent(경사하강법)을 이용할 수 없게 되는 문제입니다.

예시로, 딥러닝에서 activation function을 시그모이드 함수로 설정했다고 할 때, Vanishing Gradient Problem은 다음과 같습니다.

딥러닝의 Back Propagation에서 수많은 weight 들을 업데이트 하기위해, Chain rule(미분 연쇄 법칙)을 이용할 때, sigmoid 함수는 0과 1 사이의 값을 출력하므로, 해당 과정에서 미분 결과값이 소실되어 버리는 문제가 발생합니다. (결과 값이 0으로 수렴)

즉, 다음과 같은 식이 있을 때,

Gradient 항이 사라져 버리는 문제가 발생한다는 의미입니다.

Vanishing Gradient Problem Solving

Activation Function : ReLU

딥러닝에서는 기울기 소실 문제를 해결하기 위해, ReLU(Rectified Linear Unit, 경사함수)를 도입하기도 합니다.

ReLU의 경우, 0보다 작은 값은 0으로 반환하고, 0보다 큰 값이 나올 경우, 그대로 반환하여 Sigmoid 함수를 Activation Function으로 설정했을 때, 발생하는 Vanishing Gradient Problem을 보완할 수 있습니다.

  • 그렇기 때문에 딥러닝에서 이진분류 문제를 다룰 때, 보통 hidden layer의 activation function을 ReLU로 설정하고 마지막 output layer에서만 sigmoid 함수를 쓰는 경우가 많습니다.

Activation Function : Leaky ReLU

ReLU 함수의 경우, max(0,x)에서 0으로 결과값이 도출된다면, 이후에 학습이 이루어지지 않는다는 한계가 있습니다. (이후 출력값이 모두 0이 되기 때문입니다.)

LeakyReLU는 max(0,x)에서 0대신 아주 작은 값을 x에 곱해주어, 0으로 결과값이 도출될 때 문제점을 보완한 함수입니다.

Batch Normalization(배치 정규화)

배치 정규화는 배치 단위로 입력에 대해 평균을 0으로 만들고, 정규화를 합니다.

배치 정규화는 각 층의 입력값의 평균과 표준편차를 다시 맞추어 주어, 입력값이 쏠리는 것을 막아, 가중치 초기화에 훨씬 덜 민감해지고, 기울기 소실 문제도 개선할 수 있는 방법입니다.

Resnet(Residual Network)

이미지 분류 문제에 주로 사용되는 Convolutional Neural Network에서 발생하는 Vanishing Gradient 문제를 보완하기 위한 모델로는 Resnet이 있습니다.

Resnet 모델의 경우, 이전 Layer의 Feature Map을 다음 Layer의 Feature Map에 더해줍니다. 이를 Skip Connection이라고 합니다. Resnet의 경우, 딥러닝에서 Layer가 깊어지면서 발생하는 Vanishing Gradient 문제를 Skip Connection을 통해 최소 gradient가 1이상 값을 갖게 하여, Vanishing Gradient 문제를 해결한 방법입니다.

이상으로 키워드로 공부하는 데이터 분석의 두 번째 키워드인 Vanishing Gradient 포스트를 마치도록 하겠습니다. 😊

profile
Hi, my name is Yunyoseob

0개의 댓글