기울기 소실 문제(Problem Vanishing Gradient)

이승규·2024년 6월 28일

Deep Learning[공부용]

목록 보기
6/10

참고자료 https://ydseo.tistory.com/41

1. 기울기 소실 문제(Problem Vanishing Gradient)

[문제]

gradient 기반의 method는 parameter value의 작은변화가 network output에 얼마나 영향을 미칠지를 이해하는 것을 기반으로 parameter value를 학습시킨다.

만약 parameter value의 변화가 network output에 매우 작은 변화를 야기한다면, 네트워크는 parameter를 효과적으로 학습시킬 수 없게 되는데 이것이 문제다.

💡 gradient라는 것이 결국 미분값 즉 변화량을 의미하는데, 이 변화량이 매우 작다면, network 를 효과적으로 학습시키지 못하고, error rate이 미쳐 다 낮아지지 못한채 수렴해버리는 문제가 발생한다는 것 같다.

이 문제로 초기 레이어에서 각각의 parameter들에 대한 network ouput의 gradient가 극도로 작아지게 되는데 이 상황이 바로 기울기 소실의 문제이다.

<간단 정리>

  • 기울기 소실 문제는 역전파 알고리즘을 통해 가중치를 업데이트할 때, 처음 입력층(input layer)으로 진행할수록 기울기가 점차적으로 작아지다가 나중에는 거의 기울기의 변화가 없어지는 문제를 말한다.
  • 특히 이 문제는 네트워크에서 앞쪽 레이어의 파라미터들을 학습시키고, 튜닝하기 정말 어렵게 만든다. 또한 신경망 구조에서 레이어가 늘어날수록 악화된다.
💡 **→ 이로 인해 네트워크의 초깊은 층은 학습이 거의 되지 않게 된다**

2. 기울기 소실의 원인

기울기 소실의 문제는 활성화 함수를 선택하는 문제에 의존적으로 일어난다.

기울기 소실의 예로 시그모이드 함수를 사용한 예시를 통해 알아보도록 하자. 시그모이드 함수를 사용하는데 시그모이드 함수의 특성으로 인해 기울기 소실 문제가 발생한다.

  • 다음은 시그모이드(로지스틱 함수) 함수와 시그모이드 함수의 미분그래프이다.

<시그모이드 함수>

<시그모이드 미분 그래프 >

sigmoid 함수를 미분한 함수의 그래프를 보니 기울기가 최대가 0.25이고 최소가 0에 수렴한다. 즉 0 ~ 0.25사이의 값을 가진다.

역전파에서 입력층에 가까운 앞쪽의 layer로 갈수록 sigmoid 함수의 미분을 연쇄적으로 곱하는데 기울기가 1보다 작으므로 곱할수록 값은 점점 작아진다. layer가 아주 많으면 입력층에 가까운 앞쪽의 layer로 갈수록 기울기의 값은 거의 0에 가깝게 작아져서 가중치의 변화가 거의 없게 되고 error값도 더 이상 줄어들지 않게 된다.

구체적인 예시를 통해 확인해보자.

  • z1,z2,z3: 각 레이어의 노드 출력과 가중치의 합성곱.
  • h1,h2,h3h_1, h_2, h_3h1,h2,h3: 각각 z1,z2,z3 값의 활성화 함수, 즉 시그모이드 함수의 결과 (각 노드의 출력). z1,z2,z3z_1, z_2, z_3
  • J: 시스템의 에러를 집계하여 반환하는 손실 함수 (loss function).

손실 함수 J의 출력을 최소화하기 위해 경사 하강법(gradient descent)을 사용하여 가중치를 업데이트하기 위해 역전파(Backpropagation)를 수행한다.

<가중치 w1에 대해 미분수행 (chain rule) >

layer가 진행될 수록 sigmoid 함수가 연속으로 곱해지는 것을 알 수 있다. sigmoid 함수의 미분은 0 ~ 0.25로 1보다 작으므로 곱해지는 횟수가 많을 수록 값은 점점 더 작아진다. 즉 layer가 많을 수록 기울기의 값은 더 작아진다.

이를 해결하기 위하 나온 활성함수가 바로 ReLU(Rectified Linear Unit)이다.

2. ReLU 함수

Neural Network를 처음 배울 때 activation function으로 sigmoid function을 사용한다. sigmoid function이 연속이여서 미분가능한 점과 0과 1사이의 값을 가진다는 점 그리고 0에서 1로 변하는 점이 가파르기 때문에 사용해왔다. 그러나 기존에 사용하던 Simgoid fucntion을 ReLu가 대체하게 된 이유 중 가장 큰 것이 Gradient Vanishing 문제이다. Simgoid function은 0에서 1사이의 값을 가지는데 gradient descent를 사용해 Backpropagation 수행시 layer를 지나면서 gradient(sigmoid함수의 gradient)를 계속 곱하므로 gradient는 점점 0으로 수렴하게 된다. 따라서 layer가 많아지면 잘 작동하지 않게 된다.

따라서 이러한 문제를 해결하기위해 ReLu를 새로운 activation function을 사용한다. ReLu는 입력값이 0보다 작으면 0이고 0보다 크면 입력값 그대로를 내보낸다.

f(x)={0if x<0xif x0f(x) = \begin{cases} 0 & \text{if } x < 0 \\ x & \text{if } x \geq 0 \end{cases}

다음과 같이 간단히 표시할 수 있다.

f(x)=max(0,x)f(x) = \max(0, x)

그래프는 다음과 같다.

<ReLU 함수 그래프 >

<ReLU 함수의 기울기에 대한 그래프>

ReLU 함수의 장점과 단점

장점

  1. 빠른 학습 속도: 다른 활성화 함수보다 학습이 빠르다. (tanh 함수 대비 6배 빠른 학습 속도)
  2. 기울기 소실 문제 없음: 기울기 소실(Gradient Vanishing) 문제가 발생하지 않는다. (은닉층에 많이 사용되는 이유)
  3. 기울기 0 문제 방지: 학습을 느리게 하는 원인인 기울기(gradient)가 0이 되는 것을 막아준다.
  4. 빠른 가중치 업데이트: 가중치 업데이트 속도가 매우 빠르다.
  5. 높은 활용도: 가장 많이 사용되는 활성화 함수(activation function)이다.

단점

  1. 음수 값 처리 문제: 음수 값을 입력 받으면 항상 0으로 반환한다.
  2. 기울기 0 문제: 입력값이 음수인 경우 기울기가 0이 되어 가중치 업데이트가 안될 수 있다. (가중치가 업데이트 되는 과정에서 가중치 합이 음수가 되면 0만 반환되어 아무것도 변하지 않는 현상 발생)
    • 이 현상을 죽은 뉴런(Dead Neuron) 또는 죽어가는 렐루(Dying ReLU)라고 한다.
  3. 지그재그 현상: 출력값은 0 또는 양수이고, 기울기도 0 또는 1인 양수이다. (최적의 가중치를 찾는 지그재그 현상 발생)
  4. 미분 불가: 0에서 미분이 안된다.

3. 다양한 ReLU 함수의 정리

ReLU 함수의 기본 형태 외에도, ReLU 함수의 단점을 보완하고 다양한 문제에 더 효과적으로 대처하기 위해 여러 변형된 ReLU 함수들이 개발되었다.

3.1 Leaky ReLU (LReLU)

Leaky ReLU는 ReLU의 단점 중 하나인 "죽은 뉴런(Dead Neuron)" 문제를 해결하기 위해 고안된 함수다. Leaky ReLU는 음수 영역에서 작은 기울기를 가지도록 함으로써 음수 값을 허용한다.

f(x)={0.01xif x<0xif x0f(x) = \begin{cases} 0.01x & \text{if } x < 0 \\ x & \text{if } x \geq 0 \end{cases}
  • 장점: 음수 입력에서도 뉴런이 죽지 않도록 한다.
  • 단점: 추가적인 하이퍼파라미터인 음수 기울기 계수를 선택해야 한다.

3.2 Parametric ReLU (PReLU)

Parametric ReLU는 Leaky ReLU와 유사하지만, 음수 영역의 기울기를 학습 가능한 파라미터로 둔다.

f(x)={αxif x<0xif x0f(x) = \begin{cases} \alpha x & \text{if } x < 0 \\ x & \text{if } x \geq 0 \end{cases}
  • 장점: 데이터에 맞춰 음수 영역의 기울기를 학습할 수 있어 더 유연하다.
  • 단점: 학습할 파라미터가 추가되어 계산 비용이 증가할 수 있다.

3.3 Exponential Linear Unit (ELU)

ELU는 ReLU의 장점을 가지면서도 음수 영역에서의 값을 부드럽게 만들어준다. 음수 영역에서는 지수 함수를 사용한다.

f(x)={α(ex1)if x<0xif x0f(x) = \begin{cases} \alpha (e^x - 1) & \text{if } x < 0 \\ x & \text{if } x \geq 0 \end{cases}
  • 장점: 음수 값에서도 기울기가 존재하며, ReLU보다 더 높은 정확도를 보이는 경우가 많다.
  • 단점: 지수 연산이 들어가므로 계산 비용이 증가할 수 있다.

3.4 Scaled Exponential Linear Unit (SELU)

SELU는 ELU의 변형으로, 네트워크의 자동 정규화를 유도하는 기능이 있다. SELU 함수는 고정된 스케일링과 이동을 사용하여 평균과 분산을 조절한다.

f(x)=λ{α(ex1)if x<0xif x0f(x) = \lambda \begin{cases} \alpha (e^x - 1) & \text{if } x < 0 \\ x & \text{if } x \geq 0 \end{cases}
  • 장점: 네트워크의 자동 정규화를 통해 더 깊은 신경망에서도 안정적으로 학습할 수 있다.
  • 단점: 특정 초기화와 정규화 조건을 필요로 한다.

3.5 ReLU6

ReLU6는 ReLU의 변형으로, 값의 범위를 0과 6 사이로 제한한다. 이는 임베디드 시스템과 같은 환경에서 사용하기 위해 설계되었다.

f(x)=min(max(0,x),6)f(x) = \min(\max(0, x), 6)
  • 장점: 값의 범위를 제한하여 계산의 안정성을 높일 수 있다.
  • 단점: 특정 응용 분야에만 유용하다.

3.6 Maxout

Maxout은 선형 함수 중 최댓값을 취하는 방식으로 동작한다. 이는 뉴런의 활성화 함수로 사용되며, 주어진 입력에 대해 여러 가중치와 바이어스를 통해 계산된 값 중 최댓값을 반환한다.

f(x)=max(w1Tx+b1,w2Tx+b2)f(x) = \max(w_1^T x + b_1, w_2^T x + b_2)
  • 장점: 더 복잡한 함수를 모델링할 수 있어 표현력이 높다.
  • 단점: 계산 비용이 증가하며, 가중치의 수가 늘어난다.

학습 회고

profile
Self supervised Learning, Time Series, Multimodal Learning

0개의 댓글